59pページの一番上の図、一番最後のビットと、2番目のビット、内容が入れ替わってます。
タイマーの割り込み機能のマスクの紹介なんだけど、8ビットタイマーのTOIE0は2ビット目、OCIE0Aは1ビット目です。逆になってます。
頓珍漢だった、タイマーの理解が進んできて、16ビットのタイマーと8ビットのタイマー並列で走らせてそれぞれ別の割り込み処理できたー。
16ビット側でPWMの周期をずらす処理、8ビット側は、内部にステータスをキープしてそれをみながら、さっきとっポートの内容をバタバタ変える、というもの。 8Mの内部で発生するCRクロックを8周分してるのでトータルでは1Mのマスタークロックで動いてる状態。10ビットのPWMの周期は、1024/1M 、大体0.97kHz。(最終的に20MHzのクロックで動かすつもりなら、19.53kHz、スピード足りるかな..DC化したときのリップルがちょいと心配。RJBさんのってどーなってたっけな..調べなきゃだわ。) 8ビットのほうは200カウント数えたらポート叩く。1M/200さらに半分(パタ/パタで2回だから)、ドンの2.5kHzチャンと出ました。 ただ、ジッタがでてます。16ビットのほうの割り込みのワリ食ってんだろうなと。割り込み処理中は、割り込み禁止しないとだめんんだろーなー。割り込み禁止は、優先したい処理のほうのみに入れてやらないと、結局一緒になるのかな?
ちょっとづつ、前進!
|