- ベストアンサー
AVRマイコンでクロックカウントする場合
手元にテスト環境が無いので、質問致します。 周波数40KHz、パルス幅5μSの正パルスをAVRマイコンでカウントし比較一致で出力したいのですが、可能でしょうか? AVRの取説によると、外部カウンタ入力はデューティー比50%でないとダメなようなので、汎用I/Oの割り込みを使って処理しようと考えています。パルスの立ち上がりで変数をインクリメントし、所定の数値との比較一致で外部出力をONさせる、それだけのことですが、可能でしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >再度ご教示いただけると有りがたいです。よろしくお願いします。 そんな、教示なんて、とんでもない。 相談に乗れるぐらいで申し訳ありません。 英文はちんぷんかんぷんなので、専ら機械翻訳に任せています。 ※変な訳文の雰囲気と、タイミングチャートとにらめっこして、 なんとかデバイスを使っている程度です。 プリスケーラーの件ですが、MPUの場合、クロックの 立ち上がりや、立下りに同期して何かアクションを 起こすだけですよね。 1/8プリスケーラーに仮に40KHzのクロックを流すと、 8回に一回元の信号の一波長のパルスを出力すると 取説(ATmega128:doc番号Rev. 2467X–AVR–06/11)のp130 - Figure 56.に 書いてあるので、5KHzでデューティ12.5%のパルスを出力すると 言うことではないのでしょうか。 はずしていたらごめんなさい。
その他の回答 (1)
- Visar
- ベストアンサー率19% (17/87)
こんにちは。 型式が不明なので一概に言えませんが、 例えば、AVR[ATtiny261A]の取説で タイマー/カウンター周りの ブロックダイアグラムを見てみますと、 クロックソースの辺りにEdgeDetectorや 1/8プリスケーラーがあるので、 デューティー比50%じゃ無くても使えるんじゃ ないですか。 確かにクロックソースのタイミングダイアグラムには クロックT0の波形はデューティ50%の図となっていますが これは例では。 プリスケーラーを通した時点で1/8のワンショットが 来るのと同じですから。 はずしていたらごめんなさい。
補足
Visarさん、早速有り難うございます。 AVRはATMega128を予定しています。確かにデューティー比50でないといけない理由がよくわからないのですが、取説には16bitタイマー/カウンタの説明に以下の記載があります。(タイマー/カウンタが使えるならば16bitのT1or3を使う予定です) The External clock must be guaranteed to have less than half the system clock frequency(fextclk<fclk_io/2)given a 50/50% duty cycles. これを50/50%でなければならないと解釈したのですが。英訳間違っていますでしょうか? それとプリスケーラの件ですが、プリスケーラは周波数を変更するだけでデューティー比を変えることは無いと思うのですが、間違っていますでしょうか? 再度ご教示いただけると有りがたいです。よろしくお願いします。
お礼
Visar 様 お世話になります。私の不勉強に付き合っていただいて本当に有難うございます。 プリスケーラの件、よく取説を確認したら仰る通りでした。すみません。 ご教示の内容納得致しましたので、何かテストボードを購入して試してみたいと思います。 これで締め切ります。お世話になりました。