スイッチの値を読み込む際にチャタリング対策を追加する。
_ms_delay(10)の待ち時間後、状態が変化していれば、変化があったとみなす。
//sw_test1.c にチャタリング対策を追加したコード
#include
#include
uint8_t switch_a, switch_ax;
int main(void)
{
PORTA = 0b00000010; //PA1 = スイッチ
DDRA = 0b00000001; //PA0 = LED
switch_a=switch_ax=0;
while (1)
{
switch_a=PINA;
if (switch_a != switch_ax) {
if (~switch_a & 0b00000010) {
//PORTA = 0b00000011;
PORTA |=_BV(0); //1を 0 ビットにセット
}
switch_ax=switch_a;
_delay_ms(10);
}
_delay_ms(1000);
//PORTA=0b00000010;
PORTA &= ~_BV(0); //0 を 0 ビットにセット
}
return 0;
}