CについてもAVRについても何もかも忘れた。記事とは無関係であるがLチカから復習する。328Pで試す。Atmel Studioは、とにかくF5を押せばビルドから転送まで一気に実行される、ということまでは思い出した。
// CKDIV8は工場出荷時のまま #include <avr/io.h> #include <avr/interrupt.h> ISR(TIMER2_COMPA_vect){ // timer2がコンペア値Aにマッチするたびに PORTB ^= 0b11; // PB1:0の出力をトグルする。 } int main(void){ DDRB = 0b11; // PB1:0からパルスを出力することにする。 PORTB = 0b10; // 最初にPB1とPB0とのロジックを相補関係にしておく(だから0b01でもよい)。 TCCR2A = 1 << WGM21; // CTCモード TCCR2B = 1 << CS22 | 1 << CS21 | 1 << CS20; // クロックを1024分周してカウントする。 // 周波数 = (ソースクロック / 分周比) / 2 / (コンペア値 + 1) // コンペア値 = ソースクロック / (2 * 周波数 * 分周比) - 1 OCR2A = 243; // コンペア値A。 TIMSK2 = 1 << OCIE2A; // コンペアマッチA割り込みを有効化する。 sei(); while(1); return 0; }