完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,我用的是PIC16LF1579,没有外部时钟。我试着用看门狗定时器周期性唤醒,执行一些代码,然后再回去睡觉。因为某种原因,一旦我第一次睡觉,我就再也不会醒来了。这告诉我我的看门狗要么没有正常启动,要么是振荡器驱动它,LFINTOSC没有正常工作。我在配置word1中设置了WDTE=SWDTEN,因此可以通过在WDTCON reg中设置或清除SWDTEN位来启用和禁用WDT。PIC16LF157X根据数据表的tiMER0部分中的注释,具有用于WDT的独立预分频器,因此我不必担心将预分频器分配给WDT或任何东西。根据数据表,过程应该是非常直接的。设置WDT预分频器,启用WSDT与SWDTEN=1,休眠。然后,当WDT超时时,PIC应该从睡眠中醒来,继续执行在睡眠之后预取的指令。去睡觉吧。这是我主循环中的最后一件事,所以当我恢复时,它应该从该函数返回,并回到主循环的开始。主循环的开始切换回HFINTOSC,配置EUSART,并打印“唤醒”,或者至少应该打印“唤醒”。有人看到我做错了什么吗?
|
|
相关推荐
13个回答
|
|
|
请你的配置词。
|
|
|
|
|
|
#pragma config FOSC=INTOSC//振荡器选择位(INTOSC振荡器;CLKIN管脚上的I/O函数)#pragma配置WDTE=SWDTEN//看门狗定时器启用(WDTCON寄存器中由SWDTEN位控制的WDT)#pragma配置PWRTE=OFF//上电定时器启用(PWRT禁用)#pragma配置MCLRE= ON//MCLR管脚功能选择(MCLR/VPP管脚功能是数字输入)#pragma配置CP=OFF//Flash程序内存代码保护(程序内存代码保护被禁用)#pragma配置BOREN=OFF//Brown-out Reset Enable(Brown-out Reset enabled)#pragma配置CLKOUTEN=OFF//Clock OUT启用(CKOUT函数禁用)。I/O或CLKOUT管脚上的振荡器功能)//CONFIG2pragma配置WRT=OFF//闪存自写保护(写保护off)pragma配置PPS1WAY=ON//PPSLOCK位单向设置启用位(PPSLOCKED位可以清除并设置一次)pragma配置PLLEN=OFF//PLL启用(4xPLL启用)#pragma config STVREN=ON//Stack Overflow/Underflow Reset Enable(Stack Overflow或Underflow将导致重置)#pragma config BORV=LO//Brown out重置电压选择(Brown out重置电压(Vbor),选择低跳闸点)#pragma config LPBOREN=OFF//.Power Brown-out Re设置允许位(LPBOR是禁用的)γ语用逻辑配置LVP= ON//低电压编程使能(低电压编程启用)
|
|
|
|
|
|
这里有几件事要独立尝试,看看你是否能孤立原因。OrcCouth.IrCF=0x02;//设置为独立于LftToStCurrink的31 kHz源,然后尝试注释(同时)!更改回然后尝试注释INTCONbits.GIE=1;更改回然后添加NOP();在CLRWDT()之后;报告结果。
|
|
|
|
|
|
谢谢你的帮助,还没有好运。我把OSCCONbits.IRCF=0x00改为0x02,其他的都留下来了。LFIOFR)然后恢复并注释掉GIE设置,然后恢复并添加NOP();在CLRWDT()之后;所有结果都相同……UART OutPutsWaykSee(P从不在睡眠前将其从TSR中取出)。我在程序结束时添加了一个PIN开关,但在我的范围内没有看到。我绝对不认为它正在觉醒。
|
|
|
|
|
|
如果总是将配置更改为WDT,它会唤醒吗?愚蠢的问题,你试过超过1个部分吗?
|
|
|
|
|
|
嗯,这对我的睡眠习惯来说似乎是个问题。我将WDT的配置字设置为ON,打印输出是我所期望的。循环唤醒睡眠唤醒睡眠…谢谢所有的帮助。我会继续玩我在睡觉前做的事,看看是否能用SWDTEN得到这些结果。我只在16LF1579上试过。到目前为止,只有这个芯片。如果我有成功的话,我会把我的解决方案在这里的任何其他人遇到这个问题在未来。
|
|
|
|
|
|
我把配置字改回WDT=SWDTEN,然后添加到主循环,添加SWDTEN=1;.(1);//site并等待watchdog到期,得到预期的结果。WAKEWAKEWAKEWAKE...这里的主要和明显的区别是看门狗在醒着的时候已经过期,所以设备经过一个实际的复位。当WDT在睡眠中过期时,它应该恢复正常操作。
|
|
|
|
|
|
PrPTF缓冲区完成打印“睡眠”之前,你把振荡器到31千赫?
|
|
|
|
|
|
你的预分频器是什么?1/32 kHZ*WDTPS:可能设置得太低了吗?WDTE=SWDTENkeep在配置中像您所做的那样..<>WDTCONbiits.SWDTEN=1;sleepWDTCONbiits.SWDTEN=0;执行检查代码<>如果wdt在清醒时超时,那么您还没有禁用它。可能是宏,您知道微芯片软件有多bug。
|
|
|
|
|
|
它没有完成打印“睡眠”,P从不出来。我在我的睡眠();nop-()之后放置了一个(1)循环,昨天它只是切换一个PIN并对它进行了作用域。它实际上是醒过来的,因为我可以看到周期针开关。我将开始移动它,看看它在StEclipse定时器返回之后的位置。它应该返回并击中我的主循环结束并返回。
|
|
|
|
|
|
把睡眠放在首位。你只需要设置一次睡眠时间。<>打印sleepwdt onsleepwdt offprint wakechk模拟水平仪ESUART<>即使使用1秒的预调频器,也可以运行良好。
|
|
|
|
|
|
我猜想UART传输速度非常慢。您可能想测试传输中断标志,以确保它在切换到LFIFTSC之前完成。一旦你修正了这份报告的结果。
|
|
|
|
|
|
是的,它正在工作。阿布登。阿布登=1;是我垮台了。我的ESART的初始化代码不清楚这一点,所以我的波特率是不正确的。因此,对于使用低功耗PIC16LF1578/9并且希望使用Watchdog从睡眠中醒来的任何人来说……配置WordRoutine//设置其他中断以从sleepWDTCONbits中醒来。在睡眠时,防止从中断SWDPTCONSWATE唤醒任何不必要的呼叫。SWDTEN=0;/ /禁用WDTDontWorryBeHappy(TRUE);
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:45 , Processed in 1.002590 second(s), Total 68, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
10986