昨日布団に入ってから寝るまでの間、ぼんやりと
処理のタイミングについていろいろ再考察していました。
そしたら、テストを開始する前に見直ししておかないと
ならない所を思いついちゃいました。
ネコロジAVRは、サンプリングレートを極力高めるために
74HC4040を使ってSRAM用のアドレスを生成したり、
さらには外部割込みを兼ねていたりと、ちょっと特殊なことを
しているため、そもそもプログラムのロジックやシミュレーター
でのテスト結果だけでなく、タイミングをシビアに検証して
おく必要があります。…頭の中で…
(IDE(ICE?)の環境は持ってませんので…)
で、考えてみて何が分かったのかというと、7CHC4040
のデータシート上の反応のタイミングに関することです。
最小単位でサンプリングを行う場合、74HC4040の
ばらつきの影響を考慮すると、終了条件については考慮が
必要と判明しました。
AVRからパルスを入力してから、それが74HC4040
の出力PIN全部に反映されるまでには、平均で71μs
(2クロック以内)、最大で178μs(4クロック以内)
と、2倍近い開きがあります。差分で言えば2クロック程度。
その2クロックのばらつきを考慮すると、最後の1バイト分
(1サンプル分)を捨てざるをえないかなぁという結論に
至りました。
これは最短のサンプリングレートの時だけの話です。
それより長いレートの時には、から回し処理とトリガ出力
のタイミング次第なので、2クロックくらいなら調整が
可能。
まぁ、ハードウェアの制約なので仕方ない…。もともと
32768サンプリングという数字には特に意味があった
訳ではないし…。
まぁ、32768サンプルのうち最後の1個に制約ありという
程度ならまぁ仕方ないので目をつぶることにします。
これは、サンプリングレートが最短(8クロック分=
0.4μs)の時だけ。その他のサンプルレートの
場合は32768バイト全部きっちり取り込めます。
当件は、制限事項として記録に残しておこうと思います。
|