有个问题想请教
以下是oneshot模式读取CC转换数值的程序,但是置位one shot好像没有被执行。
之前在执行 “Registers.SysCtrl2.SysCtrl2Bit.CC_ONESHOT=1; //置位one shot”操作后,又读取过SYS_CTRL2,发现值是0x01
也就是说没有设置上CC_ONESHOT位
什么情况下能出现这种情况?
拜托帮我稍稍分析一下。
————————————————————————————————————————
I2C_Write(SYS_STAT,0x80); //清除CC_READY位
Registers.SysCtrl2.SysCtrl2Bit.CC_ONESHOT=1; //置位one shot
I2C_Write(SYS_CTRL2,Registers.SysCtrl2.SysCtrl2Byte); //ONESHOT模式设置
while ((I2C_Read(SYS_STAT)&0X80)==0X00) //等待CC_READY位置位
{ all_led_on();}
i=(I2C_Read(CC_HI_ADDRESS)<<8)+I2C_Read(CC_LO_ADDRESS);
Vincent Li00:
你好
当你从SYS_CTRL2读取数据时,你会看到0x1,即0000 0001,那里应该有其他的东西,因为CC_EN应该被设置为0,但是你的DSG和CHG应该是1,除非你得到了fault。
确保每次都清除CC_READY位,并且CC_ONESHOT也会在每次读取后清除(return to 0),因为这是手动读取。
希望可以帮到你。