完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由MCC为PIC18F25K42生成的代码在I2C驱动程序中有一个缺陷。代码不清除I2C停止条件已完成时设置的PCIF标志。结果,对I2C驱动程序的背对背调用可能导致省略停止/启动条件并将请求组合在一起。更糟的是,这只显示在CPU时钟速度较高的地方,CPU的速度明显快于I2C时钟。虽然I2C时钟速度保持不变,但是为什么工作在1Mhz,但是工作在16Mhz却失败了,这需要一些时间。对于每个I2C函数(egi2c1_write1ByteRegister),在每次生成开始条件时简单地清除PCIF标志如下:void i2c1_write1ByteRegister(uint8_t地址,uint8_t reg,uint8_t数据){I2C1_Initialize();I2C1ADB1=(uint8_t)(地址<<1);I2C1CNT=2;I2C1CON0bits.S=1;//ADDED清除PCIF I2C1PrIbths.PCIF=0;sEndoByter(Reg);sEndoByter(数据);//现在将正确工作WaIT4Stutter();
|
|
相关推荐
1个回答
|
|
我想知道这个相同的bug是否在所有的I2C代码中?
|
|
|
|
只有小组成员才能发言,加入小组>>
5368 浏览 9 评论
2100 浏览 8 评论
2004 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3277 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2312 浏览 5 评论
877浏览 1评论
766浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
705浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
763浏览 0评论
652浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-5 12:30 , Processed in 1.275680 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191