FreeRTOSにはATmega323への対応がある。
基本的にはカーネルティックタイマ周辺のレジスタ設定を変更するだけで使用できる。
- TIMSKをTIMSK1に変更する。ATmega328PにはTIMSKというレジスタは存在しない。
- portCOMPARE_MATCH_A_INTERRUPT_ENABLEのビット定義を修正する。_BV(OCIE1A)
- 割り込みハンドラ名を修正する。TIMER1_COMPA_vect
基本に戻ってシミュレータでハードウェアタイマがきちんと動作しているのか確認すると、タイマオーバーフロー時の割り込み有効フラグが設定されていないことに気づく。
修正した結果が_BV(OCIE1A)というわけ。
ハードウェア依存箇所の値によるハードコーディングはできれば避けてほしいなぁと思う。
使用したFreeRTOSのバージョンは6.0.1。
バージョンが上がっても幅広いデバイスをきちんとサポートし続けている。
今のところすごく信用のできるオープンソースプロジェクトだ。
0 件のコメント:
コメントを投稿