完善资料让更多小伙伴认识你,还能领取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代码中?
|
|
|
|
只有小组成员才能发言,加入小组>>
5323 浏览 9 评论
2076 浏览 8 评论
1982 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3254 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2293 浏览 5 评论
835浏览 1评论
730浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
674浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
728浏览 0评论
622浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 05:16 , Processed in 1.334469 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号