chottoshitahanashi’s diary

基本的に間違ったことばかり書いてるブログ。検索ひっかかるな

ATTiny13Aの割り込みレジスタ

追記:いろいろ間違ってるので動くコードをこちらへアップ。


考え中。


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。データシート