Kenji Arai

Activity

Reply to delay_ms()のバラツキ - 独り言 1)殆どのmbedは、1μSを32ビットタイマーで計測して4294秒ちょっとまで計測 2)GR-PEACHは、30nSちょっとを32ビットタイマーで計測して128秒ちょっとまで計測して、上位をソフトウェアカウンターで計測 3)wait()やTicker等の時間管理は、全てこのタイマーへの時系列順のキューが生成され、順番に入れ出し(キューへの登録、削除)が行われる 4)タイマーのアウトプットコンペア割り込みを利用してイベントを管理。時系列の先頭を次の割り込みのアウトプットコンペア値としてイベントを待つ。無くなれば割り込み禁止 5)キューは64ビットで時間管理されている(timestamp_t)が、タイマーが32ビットなので上位は無視された値でアウトプットコンペアにセットされる 6)まあ一時間ちょっと計測できるタイマーなので、まさかwaitで2時間待つユーザーはいないだろう? という発想か? キュー自体は64ビットなので現実は問題無し? 7)それに対して、GR-PEACHは120秒ちょっとで毎回割り込みが発生するが、空振りで何度も割り込み設定しながら本番を待つ想定 8)上位の共通ルーチンであるus_ticker_api.cpp内us_ticker_irq_handler()が呼ばれるが、 if ((int)(head->timestamp - us_ticker_read()) …