AVR Studioのtiny861の定義
AVR Studioのデバッグ用シミュレータのtiny861のI/Oレジスタ定義って間違ってないっすか?
ここのところ、GCCでtiny861のタイマ割り込みのテストしてるのですが、シミュレータ上でタイマのカウントすら動いてくれません。
まだ実機確認したわけではないのですが、シミュレータのI/Oレジスタのアドレスがどうもデータシートと違うように思います。
たとえば、タイマ0設定関連のTCCR0Aですが、データシートではアドレスが 0x15(0x35) となっているところ、シミュレータでは 0x2A(0x4A)となっています。
シミュレータ上の 0x15(0x35) には ピン変化割り込み関連の PCMSK0とPCMSK1 の2つが張り付いています。
(1つのアドレスに2種類のレジスタが張り付いてること自体もおかしいし。)
データシートではPCMSK0とPCMSK1はそれぞれ、0x23(0x43) , 0x22(0x42) となっています。
実際、GCC上で、
TCCR0A=0b10000000;
としてコンパイルし、シミュレータでステップ実行すると、TCCR0Aは変化せず、
PCMSK0=0b10000000
PCMSK1=0b10000000
と変化します...
コンパイラは TCCR0Aは0x15(0x35)としたマシンコード吐いてるのに、シミュレータが 0x15(0x35)はPCMSK0とPCMSK1だとして処理している結果ですね。
う~ん、この辺、ネット上には転がってなさそうでしたがどなたか情報お持ちじゃないですか?
| 固定リンク
この記事へのコメントは終了しました。

コメント
検索エンジン等から直接来た方のために一応フォロー入れときます。
このI/Oレジスタ不良の問題はウチの環境の問題のようで、AVR Studioをインストールしなおしたら直りました。
と言っても、4.13のシミュレータはそもそもtiny861のタイマ0,1のシミュレートを行わないようなので当初目的は達成できませんでしたが。
投稿: いずみかわ | 2007.11.10 21:17