完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我用PIC24F16KA102微控制器读取I2C传感器的数据。我每1分钟读一次数据。当设备运行在电池中时,我想把微控制器置于深度休眠模式。因此,微控制器必须每隔1分钟唤醒一次,从I2C中提取数据,将该数据传送到UART,然后返回深睡眠。我的问题是,当我把微控制器置于深度睡眠模式时,微控制器在第一分钟内从I2C中抽取数据,并将数据传送到UART,之后既不进入睡眠状态,也不从I2C中抽取数据。我正在使用内部RTCC(在LPRC中运行)从深度睡眠中醒来。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------OSCIOFNC_ON&POSCFREQ_8MHZ&POSCMOD_HS)_FWDT(WDTPS_PS4096 & FWPSA_PR128 & WINDIS_OFF & FWDTEN_OFF)_FPOR(BOREN_BOR0 & PWRTEN_OFF & BORV_ZERO_POWER & MCLRE_ON)_FICD(BKBUG_OFF & COE_OFF & ICS_PGx2)_FDS( DSWDTPS_DSWDTPS_F & DSBOR_OFF & DSWDTEN_OFF & RTCCREF_OFF & DSWDTOSC_LPRC & DSWDTPS_DSWDTPS_8)int main(void){fn_Delay_Sec(1);.RTCC_timeSet_and_AlARMSet();.[fn_Init_I2C();[fn_Read_I2C()]//I2C初始化fn_Read_I2C();[fn_UART_Send_Packet()]//从I2C传感器读取值;RCON=0x0000;重置控制寄存器=0 DSWSRC=0x0000;深睡眠唤醒上位寄存器=0 DSCON=0 x0000;深睡眠控制寄存器=0 DSCON=0 DSCON=0 DSCONbits.DSEN=1;睡眠Nop();Nop();Nop();Sleep();Sleep();睡眠返回0;}------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------n通过UART发送一些示例文本,如“Hello”,控制器从深度睡眠中醒来,将数据传送到UART,然后返回深度睡眠。但是如果我添加I2C函数,控制器只发送一次数据。有人能帮我解决这个问题吗?
|
|
相关推荐
2个回答
|
|
当我使用PIC24F16KA102时,如果SENDSEMCUM进入睡眠后,如果存在NOP()指令,则没有深度休眠模式。请检查它。艾伯特
|
|
|
|
你好,艾尔宾,谢谢你的回复,我检查了数据表(第102页)。他们在这里提到过这样的事情--------------------------------- 5。通过设置DSEN位(DSCON & lt;15和gt)来启用深度休眠模式。6。通过发出3个NOP命令,然后再输入一个pWRSAV 0指令,进入深度睡眠模式。只要设置了DSEN位,DSWAKE寄存器中的所有位都将自动清除。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------当前睡眠消耗为0.2mA&深度睡眠为0.06mA。所以我认为控制器正在进入深度睡眠状态。然而,我解决了深度睡眠模式下的I2C问题。再次感谢您的回复。
|
|
|
|
只有小组成员才能发言,加入小组>>
5242 浏览 9 评论
2031 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3207 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2256 浏览 5 评论
778浏览 1评论
669浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
596浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
679浏览 0评论
577浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 22:58 , Processed in 0.967369 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号