割り込みを使うとArduinoのloop()の呪縛から解法される。(省電力なシステムを設計できる)
以下ではExternal Interrupt INT0/INT1(PD2,PD3)を使った。
http://elec-studio.eco.coocan.jp/AVR_C-Program06.html
http://stastaka.wordpress.com/2012/03/10/avr%E5%85%A5%E9%96%803-%E3%83%94%E3%83%B3%E5%85%A5%E5%8A%9B%E3%81%A8%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF/
#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> ISR(INT1_vect){ PORTB = _BV(PORTB5); _delay_ms(500); PORTB = !_BV(PORTB5); } //ISR(INT0_vect){ // cli(); // sei(); //} void InitINT(void){ EICRA = 0b00001110; //INT1-rise,INT0-fall EIMSK = 0b00000011; //INT1,INT2 enable } int main(void){ DDRB = 0xff; InitINT(); sei(); for(;;){ } }