Hirado
0.9.1
|
フレームワークの内部で使うオブジェクトの内部宣言。基本的にユーザーは参照しなくていい More...
Data Structures | |
struct | RADIO |
フレームワークがラジオとのやりとりに使う変数の型。 More... | |
Macros | |
#define | RXIF_BUFSIZE 32 |
RX_IF受信SPORTバッファのDMAサイズ More... | |
#define | AF_BUFSIZE 8 |
AF送信SPORTバッファのDMAサイズ More... | |
#define | AF_QUESIZE 80 /* 送受信タスクの間のキューの長さ。8サンプルが最長割り込み周期と仮定してさらにマージンをもたせている */ |
TASK_RX_IF と TASK_AF の間のデータキューサイズ More... | |
#define | WIDE_FM_OVERSAMPE 8 |
AF1サンプルあたりのWide FM サンプル数 | |
#define | WIDE_FM_FLAG 2 |
プライマリ・チャンネルのWIDE FM Modeを表すフラグのマスク | |
#define | PARAMDATA_NUM 16 |
SHマイコン/FPGAから送られてくるコマンドの種類の数 | |
#define | TASK_PRIORITY_AF 5 |
#define | TASK_PRIORITY_RX_IF 10 |
#define | LOGTASK_PRIORITY 12 |
#define | TASK_PRIORITY_MONITOR 15 |
#define | STACK_SIZE_RX_IF 1024 |
#define | STACK_SIZE_AF 1024 |
#define | STACK_SIZE_MONITOR 1024 |
#define | TASK_PORTID 1 |
Functions | |
void | rx_if_task (VP_INT exinf) |
SPORT0 RX DMAバッファの内容を復調するタスク More... | |
void | af_task (VP_INT exinf) |
復調済みAF信号をSPORT0 TX DMAバッファにコピーするタスク More... | |
void | monitor_task (VP_INT exinf) |
デバッグ用のデータ収集を行うバックグラウン・タスク More... | |
void | sport0_rx_int_handler (void) |
SPORT0 RX DMA割り込みのハンドラ | |
void | sport0_tx_int_handler (void) |
SPORT0 TX DMA割り込みのハンドラ | |
void | init_peripherals (VP_INT p) |
ペリフェラルの初期化関数 More... | |
Variables | |
struct RADIO | radio |
フレームワークがラジオとのやりとりに使う変数。 | |
フレームワークの内部で使うオブジェクトの内部宣言。基本的にユーザーは参照しなくていい
#define AF_BUFSIZE 8 |
AF送信SPORTバッファのDMAサイズ
AF送信SPORTバッファのDMAサイズ。単位は[count]。バイト単位ではなく 転送カウントが単位なので注意。 1サンプルが2カウント。
バッファサイズが8の場合、4サンプル(126uS)ごとに割り込みがかかる。
なお、このバッファサイズは必ず2の倍数にすること。
#define AF_QUESIZE 80 /* 送受信タスクの間のキューの長さ。8サンプルが最長割り込み周期と仮定してさらにマージンをもたせている */ |
TASK_RX_IF と TASK_AF の間のデータキューサイズ
2つのタスクの間のキューのサイズ[エントリ]を指定する。両タスクの 実行の間にはWideFM/nonWideFM切り替えと、割り込み周期の差異に起因する ジッターが生じするため、キューが必要になる。
キューのサイズを決める要素は2つある。ひとつはキュー受信側 (TASK_AF)がデータを読み取る周期、もうひとつはキュー送信側 (TASK_RX_IF)がデータを読み取る周期である。いずれも単位はサンプルで、 このうち大きなほうがデータキューのサイズを決める。
キューはオーバーフローとアンダーフローを避けるように作らなければならない。 アンダーフローはキューの受信側の割り込みが先行した場合に発生する。 これを避けるには、受信側が先行した場合に備えてダミーデータを キューに入れておく必要がある。この数は、先で論じた周期の一番大きい物に しておく。
オーバーフローはキューの送信側の割り込みが先行した場合に発生する。 これを避けるには、送信側が先行した場合に備えて空き領域を 確保する必要がある。この数は先で論じた周期の一番大きい物に しておく。
結論として、キューには、最も長い割り込み周期[単位はサンプル]の倍の 領域が必要である。
なお、このソフトウェアは1サンプルあたり2[エントリ]をキューに格納するため、 これを勘案すると、最低でもキューの長さ[エントリ]は、割り込み周期[サンプル]の四倍になる。
#define LOGTASK_PRIORITY 12 |
breif デフォルトの初期優先度を上書きする
#define RXIF_BUFSIZE 32 |
RX_IF受信SPORTバッファのDMAサイズ
RX_IF受信SPORTバッファのDMAサイズ。単位は[count]。バイト単位ではなく 転送カウントが単位なので注意。 ワイドFMモードの場合、1サンプルが16カウントになる。 非ワイドFMモードでは、1サンプルが4カウント。
バッファサイズが32の場合、ワイドFMモードでは2サンプル(63uS)ごとに、 非ワイドFMモードでは8サンプル(252uS)ごとに割り込みがかかる。
なお、このバッファサイズは必ず4の倍数にすること。
#define STACK_SIZE_AF 1024 |
breif タスクのスタックサイズ
#define STACK_SIZE_MONITOR 1024 |
breif タスクのスタックサイズ
#define STACK_SIZE_RX_IF 1024 |
breif タスクのスタックサイズ
#define TASK_PORTID 1 |
breif 文字入力するシリアルポートID
#define TASK_PRIORITY_AF 5 |
breif AF DMAタスクの優先度。送信なので優先度高
#define TASK_PRIORITY_MONITOR 15 |
breif モニター・タスクの優先度。優先度低
#define TASK_PRIORITY_RX_IF 10 |
breif RX-IF DMA処理タスクの優先度。復調も行う
void af_task | ( | VP_INT | exinf | ) |
復調済みAF信号をSPORT0 TX DMAバッファにコピーするタスク
exinf | タスクに渡す拡張データ。このタスクには何も渡さなくていい |
このタスクは sport0_tx_int_handler() 割り込みハンドラからの セマフォ・シグナルを受け取り、タスク間キューからデータを取り出しSPORT処理を行う。
void init_peripherals | ( | VP_INT | p | ) |
ペリフェラルの初期化関数
p | タスクに渡す拡張データ。このタスクには何も渡さなくていい |
void monitor_task | ( | VP_INT | exinf | ) |
デバッグ用のデータ収集を行うバックグラウン・タスク
exinf | タスクに渡す拡張データ。このタスクには何も渡さなくていい |
void rx_if_task | ( | VP_INT | exinf | ) |
SPORT0 RX DMAバッファの内容を復調するタスク
exinf | タスクに渡す拡張データ。このタスクには何も渡さなくていい |
このタスクは sport0_rx_int_handler() 割り込みハンドラからの セマフォ・シグナルを受け取って受信処理を行う。