お世話になります。TNと申します。
ご教授お願いします。
【問い合わせ内容】
RAマイコン、RTOS、e2studioを使用し、AGTタイマー割り込み(void i_agt_int_user(void))からタスクのサスペンドを解除
したいのですが、以下のコードでは解除されません。
コード生成(タスクやハードの設定)はFSP configrationの機能を使用し、 i_agt_int_user(void)はintrrupts configrationで設定しています。
設定方法に問題があるのか、APIの使用方法に問題があるのかわかりません。
割り込みからのサスペンド解除を行う設定と、方法をお教え願いないでしょうか
よろしくお願いします。
extern TaskHandle_t new_thread0;
// タスク処理
void new_thread0_entry(void *pvParameters){ FSP_PARAMETER_NOT_USED (pvParameters);
volatile int debug;
R_AGT_Open(&g_timer0_ctrl, &g_timer0_cfg); R_AGT_Start(&g_timer0_ctrl);
/* TODO: add your own code here */ while (1) { vTaskSuspend(NULL); debug=0;
}}
// 割り込み処理
void i_agt_int_user(void){ BaseType_t ret = pdFALSE;
ret = xTaskResumeFromISR(new_thread0);
portYIELD_FROM_ISR(pdTRUE);}
TNさん、こんにちは。NoMaYと申します。FreeRTOSですので、私の場合ですと、xTaskResumeFromISR(new_thread0)の中へステップ実行して行って、何かがASSERT/assertにより検出されていないか調べてみます。他にズバリのリプライが無かったら、そうされてみてはどうでしょうか?また、とっさに気になったことですが、割り込みの優先順位がFreeRTOSの割り込み処理が動作する範囲外(RXマイコンならconfigMAX_SYSCALL_INTERRUPT_PRIORITY以上、すみませんがARMマイコンは以上なのか以下なのか不明で分からないです、、、割り込みの優先順位が非直感的との話題を見た記憶があります、、、)だったりしませんでしょうか。