【发布时间】:2016-05-06 09:00:29
【问题描述】:
我设计了一个系统,当电位器的电阻低于设定值时,LED 会闪烁led1 = 1; wait(0.2); led1 = 0 wait(0.2),这就是发生的情况。我需要两个等待序列,否则用户看不到任何变化。我还连接了 LCD,当用户按下按钮时,LCD 会改变以显示不同的内容。问题是 LCD 的这种变化明显减慢到wait(0.2) 语句(0.2 秒延迟)。这种给系统一种滞后的感觉。有什么想法我能做些什么吗?
ISR 我最初考虑将闪烁的 LED 放入中断程序,但很快意识到,如果用户不更改电位器的值并且它始终设置为 0,则系统将停留在 ISR 中。
轮询 我的第二个想法是尝试轮询,让 LED 每 100 次进入此功能时闪烁一次。结果并不好,现在它会时不时地拖慢系统。当它没有减慢系统速度时,它会变得太快。
【问题讨论】:
-
几乎所有的 SoC 都至少有一个可以给你中断的定时器。为闪烁的 LED 使用一个这样的计时器,在 ISR 中为计时器只切换 LED 的状态。
-
“系统只会停留在 ISR 中。” 为什么会发生这种情况?假设您从硬件计时器重复 ISR,ISR 可能只是
if(potentioMeter < limit) changeLedState();
标签: c++ c embedded microprocessors