追記:いろいろ間違ってるので動くコードをこちらへアップ。
考え中。
1ミリ秒ごとにCTC割り込みかけたい。
クロックはデフォルトの1.2MHzとして、64分周しカウンタ188-1でリセットするとすると
1/(1.2*10e6)*64*188=0.001003
情報過多なソースコード(まだ秋月からATTiny13Aが届いてないので実行させてない)。
// COM0A1, COM0A0, COM0B1, COM0B0 = 0, 0, 0, 0 // ピン出力しない // WGM02, WGM01, WGM00 = 0, 1, 0 // CTC // CS02, CS01, CS00 = 0, 1, 1 // 64分周 //FOC0A, FOC0B = ?? TCCR0A = 0b00000010 // COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00 TCCR0B = 0b00000011 // FOC0A FOC0B - - WGM02 CS02 CS01 CS00 // PB0だけ出力。pinMode()でやるので不要 // DDRB5 PB5が出力端子か入力端子か、PB4, PB3, PB2, PB1, PB0同様 // PORTB 出力レジスタ。端子IO用なので設定レジスタではない // PINB 入力レジスタ。端子IO用なので設定レジスタではない // DDRB = 0b00000001 // - - DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 // ATTiny13のデータシートより // Bit 3 – OCIE0B: Timer/Counter Output Compare Match B Interrupt Enable // When the OCIE0B bit is written to one, and the I-bit in the Status Register is set, the // Timer/Counter Compare Match B interrupt is enabled. // わからないけどOCIE0AやOCIE0Bはピン0, 1(PB0, PB1)に割り当てられた機能?なんで // 割り込みが起きる->割り込み先でピン0, 1の出力を変える、つまりPWMのことか。ならPWM使わないので値は0でいいか。 // TIMSK0 = 0b00000000 // - - - OCIE0B OCIE0A TOIE0 -
参考リンク:
Japanino ArduinoISPで ATtiny13 で タイマーで矩形波発生 (12) (9/15) : 体重と今日食べたもの。非常にわかりやすい説明
BASCOM-AVR ハードウェア タイマーの使用方法。ブロック図がすばらしい
ATtiny13Aのピンの割当、ATtiny85との比較。これも良いまとめ
ATtiny13でTimer0の比較割り込みを使用しようとした時に躓いた記録と内容 | くろべこblog。参考にしたサンプルコード
LED点灯 (IO入出力 ) | 始めるAVR。PORTB, PINBの説明が役にたった
https://avr.jp/user/DS/PDF/tiny13.pdf。データシート