「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



気になったので、タイマー0、タイマー1、タイマー2
の各タイマーについて、フェーズコレクトPWMモードだと
どんな動作になるのか、AVRstudioの
シミュレーターで確認してみました。

まずはタイマー0をモード5(フェーズコレクトPWM)で
使用してみました。
さすがにタイマー0は思ったとおりに動作してくれます。
問題なし。

次にタイマー1をモード11で使用してみました。
相変わらず、モード3と同じ動作になってしまいます。
(モード11は0b1011なので、やはり上位2ビットが
 無視されて0b0011=3として処理されているような
 気がします)

そしてタイマー2をモード5で使用してみました。
こちらは、TOP値にOCR2Aがきちんと適用
されています。ただ、カウンタ値=OCR2Bに
なっても思ったように反転しません。
詳説すると、カウンタが上昇中のときは出力がずっと1。
下降の途中(OCR2Bとマッチ)の時に0に
なり、カウンタ=BOTTOMの時に1出力に
戻るという風に見えます。

結構ラフにテストしたので、タイマー2のほうは
もしかしたらちょっと手違いがあるかもしれませんが、
でもやっぱりタイマー2もだめですねぇ。シミュレーター
が仕様どおりに動いていないようです。

シミュレーターだけのバグなのか、それともerattaに
載ってないバグの発覚を恐れ、シミュレーター自体
の仕様を実際のチップにあわせてあるのか…
(考えすぎ?)

どちらにしても、私の脳みそ及び実験器具では手に
負えそうにありません。

シミュレーターの結果が仕様書どおりでなければ、
(信用できなければ)それはひとまず使用できない機能と
判断すべきでしょう。

そもそもMEGA48だけNGなのか、それとも
全チップともダメなのか… うーん、困ったものです。

ひとまずcbi、sbiを使って、1サンプリング
あたり8クロック(2.5MHz)での実現を先行し、
あとで追加仕様として3.33MHz対応なり、
4MHz対応なりを考えるのが良さそうな気がします。

当初、AVRのMEGA48でサクッと完成させ、
その次にdsPICを使って同じ機能のもの(もう少し速いもの)
を造り、さらには今後CPLDを使ってもっともっと
速いものを造ろうと思っているので、ここで立ち止まる
よりは先に進んでからあとで考える方が賢い気がします。


(補足)
この書き込み、及び1つ前の書き込みのテストで使用したAVRstudioのバージョンですが、12/18公開の
SP2を適用済みの最新版を使用しました。




コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする