掲示板にあるとおり、シバ某さんからご指摘頂いた件を
目下検討中です。
回路図の構想どおりにPB2を/WEのストローブ信号
として使えればいいなぁと思っているので、現在その方向で
山根氏の本を読み返しながら、お勉強的な実験をしている
ところです。
シミュレーターを使って、タイマー1を高速PWMモード
のモード15で使用。カウンタの最大値をOCR1A=4に設定。
OCR1Bに3を入れておくことで、カウンタが0~3はHIGH、
カウンタが4の時はLOWという出力が出来るだろうと考えています。
ただ、なぜだかシミュレーターではまだ上手く動作していません…
これを、タイマー0(8ビットのタイマー)を使ってモード7
で実験すると上手く行くんですが、そもそもタイマー0
はOC0B出力がPD5なのでSRAMへのアドレス指定用
ポートとバッティングしてしまいます。PD5はSRAM
アクセス用4ビットアドレスとして必要なので、
これは変えられません。
タイマー1のOC1B出力(=PB2)であれば、
回路図には全く手を加えずに使えるので、なんとか
タイマー1で動かしたいのですが、私の頭がまだ
追いついていないようで、上手く動いていません。
データシートのErattaまで見直してみたのですが、
タイマー1のPWM関連のErattaは無いようですし…。
なぜタイマー1では、OCR1Aとカウンタが
一致してもカウンタが0に戻ってくれなのか?
なぜOCR1Bと一致してもPB2の出力が反転
しないのか?
今のところ私の頭では原因究明できていません。
うーん。こまった…。
タイマー0のモード7(高速PWM)とタイマー1の
モード15(高速PWM)では何か決定的な違いが
あるのでしょうかねぇ?
|