【发布时间】:2021-06-29 08:23:51
【问题描述】:
我不知道如何消除按下开关时小振动的影响。我有一个原始开关和一个 LED,我试图创建一个中断,使 LED 在按下开关时闪烁。我这样做的方式是在输入信号的下降沿触发中断。
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
ISR(INT0_vect){
PORTD ^= 1;
}
int main(void)
{
DDRD = 1;//we set for input D port
PORTD |= 1<<2;//pull-up for interrupt pin
EICRA &= ~3;//clear EICRA and activate INT0 on LOW
EICRA |= 2;//activate INT0 on falling edge
SREG |= 1<<7;//I bit from SREG has to be enabled
EIMSK |= 1;//enable INT0
while (1)
{
EIFR |= 1;//I've tried to clear the corresponding flag, but in vain
}
}
【问题讨论】:
-
有无数文章如何在固件或硬件中做到这一点,使用施密特触发器等。你自己谷歌搜索。这是除了让 LED 闪烁之外的一个简单步骤。
-
请不要按照下面的建议去做,这是一个糟糕的建议。了解如何进行正确的软件去抖动,或获取少量 74 系列施密特触发器芯片并进行实验。
标签: embedded avr blink debouncing atmega32