完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我用的是带有4x4键盘和实时时钟的PIC16F628A。我想做的是把PIC设置为睡眠模式,然后按4x4键盘上的按钮唤醒它。在睡眠模式下,我想让PIC继续计时,有没有人知道如何做到这一点呢?PIC通过按下键组合进入睡眠模式。所以,我在“main”程序中编写了以下代码:老实说,我不知道这是否正确,或者是否有意义。非常感谢您的任何想法/建议。
|
|
相关推荐
18个回答
|
|
|
你好,我们再来一次……我想了解一下国际奥委会有什么好玩的。与简单得多的“国际奥委会”相比,它确实令人头疼,但是每个需要外部干扰的最简单形式的人都会选择“国际奥委会”头痛。我真的不明白,但是它可能是我下面内容的限制如果有人愿意启发我,我会感激的。
|
|
|
|
|
|
通常有更多的IOC引脚比int引脚。IOC引脚为您提供上升和下降沿中断。但在大多数图片上,它基本上被打破了,即使是微芯片也建议它只能用于睡眠。
|
|
|
|
|
|
嗨,我知道,而且我对国际奥委会也没有什么问题。但是我很惊讶,因为初学者还在绞尽脑汁去掌握最基本的东西,而倾向于直接进入更复杂的选项。这就像尝试用ECCP实现“你好,世界”闪烁的LED。好在更新的PIC中,国际奥委会的机制已经大大简化了。
|
|
|
|
|
|
我的建议是:如果你使用带有定时器的软件RTC,为什么不简单地切换到低频的二级振荡器呢?使用休眠模式(关机)而不是使用休眠模式,同时使用LCD省电,这里不能使用目标t with内部RCoscilator(31kHz)powe。PIC16F628 A的消耗量为0.15 mA(从我的输出),所以我建议不用关闭模式使用程序。
|
|
|
|
|
|
使用Inter.On Change来唤醒PIC是IOC特性的用途所在。也就是说,PIC16F628A可能是用4x4键盘实现实时时钟的最坏选择,它使用RTC打勾或按键来唤醒睡眠。PIC16F628A只有4个GPIO inpu。TS(RB4,RB5,RB6,RB7),可以断言IOC事件。好的,这足以实现4x4键盘输入,我们可以从PORTA上的4个引脚驱动键盘。我在哪里可以连接32.768KHz的TIMER1手表晶体,以便在PIC睡眠时实时计数?这将是RB6和RB7。什么?这与我的4X4键盘上的IOC有关。我能把手表晶体连接到RA6和RA7上的主振荡放大器吗?是的,但你不能使用睡眠模式,因为当PIC进入睡眠状态时,振荡器停止。这真的很棘手。现在选择另一个PIC是个好主意。
|
|
|
|
|
|
如果您*必须*使用一个18引脚PIC,带有RTC和4x4键盘,带有任何键唤醒,您必须对INT引脚中的行或列进行二极管或二极管。如果你真的很棘手,你可以把键盘开到相反的方向,不用任何额外的引脚就能管理它,同时仍然使用弱上拉!在进入睡眠之前,RB4:1被设置为低输出,RA3:1,RB0/INT被设置为输入。RA3-1通过三个二极管、R1和RB0弱的上拉保持高,所以它们不浮动。如果任何键被按下,它拉低行,通过R1触发RB0/INT低唤醒唤醒(-VE边缘INT)。当其唤醒时,RB4:1被设置为输入以读取列,并且通过将RA3:1、RB0之一设置为低输出来扫描键盘行。对于其他当前不活跃的三行,RA3-1必须设置为输入,RB0必须设置为高输出。如果RA3-1的任何一个被设置为高输出,如果在同一列中按下两个键,则会导致级别冲突。在扫描之间,尽量减少当前的消耗量,不要让RA3-1低。
|
|
|
|
|
|
HiSITPIC没有ADC,但是它有一个可编程的电压基准和2个模拟比较器。几个电阻可以用来对键盘进行模拟编码,允许使用VRM和比较器进行一次按键扫描。这可以释放必要的引脚,以便有一个独立的Time1 XTAR振荡器。最佳选择
|
|
|
|
|
|
聪明的想法,但如何唤醒的重点新闻工作?此外,可能没有足够的分辨率位来编码16个键。
|
|
|
|
|
|
我们有保存PIC引脚与一个1针模拟十六进制键盘讨论了一会儿。中值Vref模块DAC只有4位,具有两个可选择的范围,因此有效的逐次逼近ADC分辨率也将只有4位。这意味着,对于更简单的技术,您没有分辨率,所以您的矩阵必须被黑客攻击,以便其开关可以单独将17个电阻梯上的抽头连接到一个比较器输入,或者,使用未黑客攻击的矩阵,使用连接到行的5电阻梯,并将列连接到四个比较器输入(CMCON.CM=2,并使用CMCON.CIS在输入之间进行复用)。为了保证所有的按键都能被检测到,并且降低功耗,你需要能够断开梯子的一端,这样所有的按钮都会给出一个可靠的逻辑电平。这是另一个I/O。单个比较器输入还需要一个高值的上拉(或下拉)来保持在一个kn中。自己的状态,没有按钮推动,其影响梯级水平必须计算和允许。这是一个被黑客攻击的矩阵,并且需要大量的1%的电阻(可能具有奇数),但是由于它只需要两个引脚,所以与普通的数字矩阵相比,它节省了6个引脚。如果选择了四个多路复用的比较器输入解决方案,则RB0/INT引脚将需要用于唤醒(使用WPU)、二极管ORed。从电阻梯形的高端切换。因为它是数字引脚,所以它不应该在矩阵扫描期间暴露于模拟电平,而是将其驱动得低,因此二极管反向偏置,而梯子供电解决了这个问题。6个电阻器和4个二极管可以省去两个引脚(6个引脚:RA0/AN0-RA3/AN3、RB0/INT和另一个I/O引脚),但这些都不划算。使用PIC16F690或其他20引脚设备,它可以让你更多的IOC引脚和一个主振荡器,可以在LP模式下运行时钟定时器1在睡眠期间避免与IOC引脚冲突,所以你可以使用一个简单的8引脚4x4矩阵,不需要额外的组件。
|
|
|
|
|
|
像Ian所说,它是一个硬连线或到INT引脚。至于16键扫描,还有另一种可能性,以一个引脚为代价。用2个比较器把钥匙分开,但这都是学术性的。唯一有意义的解决方案是带有更多引脚的PIC。额外的硬件+额外的PCB不动产+额外的复杂性=每单位巨大的额外成本。这种额外成本不仅证明8位PIC具有更多的引脚是合理的,而且甚至可以覆盖16或32位PIC。EDIT:对另一成员的更正引用。最佳顾虑
|
|
|
|
|
|
是的。这款RTCC+显示器+唤醒让我想起一些事情。我见过的第一款数字腕表是在70年代初。它使用了7段LED显示器(红色),只有按下按钮时才发光。最近我发现这种腕表是表面的。再来一次。
|
|
|
|
|
|
事实上,这不是真的。
|
|
|
|
|
|
附加“可靠”这个词,我可能同意丹。如果你能使按钮电压集中在Vref梯级之间,它应该是可行的,但是这可能需要在测试中选择,或者通过高值电阻器连接到比较器输入端的额外输出,这样你就可以稍微抖动输入电压以获得额外的分辨率。标称的FVR输出电压暂时返回:避免高范围:参数D311表示其精度是1/2LSB,这对此应用是无用的。低范围显然是1/4LSB,这应该*仅仅*与1%的电阻一起使用,并且手动修剪Vdd轨道上的滴管电阻。正如Jorge指出的,这纯粹是一个学术练习,完全没有成本效益。@JorgeF:在这个主题中我没有看到“1和0”。我错过了一个已经消失的帖子了吗?
|
|
|
|
|
|
抱歉,伊恩,我错了。已经改正了。事实上你们俩的解释方式都差不多,我浏览了几个话题,结果弄得一团糟。
|
|
|
|
|
|
好吧,你们所有人,关于PIC16F628 A都是对的。这是我的错,我一开始没有提到PIC。当我开始我的项目时,我只想连接一个4x4键盘和一个LCD。但是后来,需求改变了,我必须添加RTC等等。所以,我将使用PIC16F876A,事情不会那么复杂。我没有这张照片,我已经订购了。但是,为了不浪费时间,我决定继续使用PIC16F628A并编写代码。关于4x4键盘,连接如下:为了实现RTC,我从键盘上删除了第4行、第3行和第2行,并且连接了32.7行。在引脚RB6和RB7的68千赫兹振荡器。所以,我有一个1x4键盘用于我的测试。-但是,暂时来说,这不是睡眠和唤醒实现的问题。我只是想唤醒PIC,但是只按一个按钮。开始我想用RB0/ITN管脚唤醒PIC,但是由于它被配置为输出,我决定用RB4管脚来唤醒IOC(因为它已经配置为输入)。我不仅想唤醒PIC,我还希望RTC继续计数时间,并在PIC唤醒时显示实时。我们有两个不同的要求,但我不知道如何实现这一点。这就是我请求你帮助的原因。
|
|
|
|
|
|
有什么问题吗?ISR检查TMR1IF是否被设置,如果是,那么它的计时和退出。如果PIC睡着了,它就会为计时而醒来。主程序中的SLEP()需要处于一个紧密的循环中,该循环轮询按钮唤醒中断标志。只启用休眠环唤醒。比如:这样,按钮退出睡眠循环,但是计时唤醒保持在其中。编辑:你需要ISR中按钮中断的最小处理程序,这样就不会停止主程序。例如:
|
|
|
|
|
|
你是不是在PICS很难获得的地方?PIC16F86A是一种古老的芯片。现在有很多更好的PIC16F设备:更便宜,更快,更低的功耗,更容易调试,更好的工作!
|
|
|
|
|
|
不幸的是,按时获得数字电子设备是困难和耗时的。我遵循了RB0/INT方法,并编写了以下片段:而关于4x4(-->1x4)键盘的电路如下:其中只使用RB0:4。ng:col0(因此col1:3)到目前为止分别直接在RB0:3处连接,而没有与下拉电阻(如RB4引脚)连接。有了这个配置,PIC没有进入休眠模式(或正在进入并立即唤醒)。当我连接一个470Ω下拉电阻唤醒唤醒工作成功。为什么会发生这种情况?当PIC打开时,我按“D”键,第一次,它没有进入睡眠模式,而第二次等等,睡眠/唤醒工作正常。为什么INTF位必须在ISR中清除,而不是在唤醒后立即清除?一般来说,这个代码是正确的还是我错过了关于通过RB0/int唤醒?关于RTC,它不起作用。我不明白你的建议。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475 浏览 0 评论
5795 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1125浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1098浏览 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 19:17 , Processed in 1.256115 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
481