モダンOSのお砂場(83)UNO R4でFreeRTOS、Renesas RA4M1基礎知識

UNOR4_EC
Joseph Halfmoon

ArduinoやFreeRTOSのAPIレベルから少しハードよりに「ダイブ」しようとしてルネサスRA4M1マイコンについて無知なことを露呈しました。今回はタイマなどの周辺ハードウエアの直接アクセスをするための準備作業として、ルネサス様の用語など基礎知識を勉強したいと思います。 “モダンOSのお砂場(83)UNO R4でFreeRTOS、Renesas RA4M1基礎知識” の続きを読む

モダンOSのお砂場(82)UNO R4でFreeRTOS、ブラウザからUNO R4のLEDを操作

UNOR4_UART_BlockDiagram
Joseph Halfmoon

手元で使っているArduino UNO R4は「お求めやすい」Minimaです。WiFiの搭載はありません。そこで2番目のUARTを介して伝統的なUSBシリアルインタフェースFT232RLを経由してホストPCへ接続。ホスト上で動作するPythonスクリプトでラズパイ上で動いているMQTTブローカからの指令を得ることに。 “モダンOSのお砂場(82)UNO R4でFreeRTOS、ブラウザからUNO R4のLEDを操作” の続きを読む

モダンOSのお砂場(81)UNO R4でFreeRTOS、第2のUARTで指令を送る(だけ)

UNOR4_Serial1_DUT
Joseph Halfmoon

前回は規定温度を超えでPassiveブザーをPWMで鳴らす機能を追加。今回は第2UARTを使って外部から「指令」を受信する機能を付け加えたいと思います。UNO R4はUSBシリアルに向いているチャネルとは別にもう一本UARTを使えるのでこれとのやり取りをTask1にお任せします。今のところ指令を受信するだけだけれども。
“モダンOSのお砂場(81)UNO R4でFreeRTOS、第2のUARTで指令を送る(だけ)” の続きを読む

モダンOSのお砂場(80)UNO R4でFreeRTOS、規定温度越えたらブザーを鳴らす

UNOR4_buzzor_DUT
Joseph Halfmoon

前回AD22100温度センサで「温度監視」。といいながら温度をOLEDに表示するだけでお茶を濁してました。何か監視した結果っぽいアクションを起こしたいデス(形だけですが。)そこでブザー(パッシブ型)を接続、規定温度を超えたらブザーを鳴らして警告するようにしてみました。タスク間の通知にNotification使用。

“モダンOSのお砂場(80)UNO R4でFreeRTOS、規定温度越えたらブザーを鳴らす” の続きを読む

モダンOSのお砂場(79)UNO R4でFreeRTOS、AD22100で温度監視?

UNO_R4_AD22100_DUT_EC
Joseph Halfmoon

別シリーズにてAD22100、電圧出力型温度センサを練習。-50℃から+150℃という広い温度範囲で装置の温度を簡単にモニタできる優れものです。規定の温度範囲を超えたらファンを回すとかいろいろ使えそう?今回は前回作成した「OLED表示」をお願いするだけのタスクの一方を温度監視タスク的な雰囲気にしてみます。

“モダンOSのお砂場(79)UNO R4でFreeRTOS、AD22100で温度監視?” の続きを読む

モダンOSのお砂場(78)UNO R4でFreeRTOS、Task発Queue経由OLED行

FreeRTOS_OLED_DUT
Joseph Halfmoon

別シリーズにてUNO R4にOLEDディスプレイを接続。これでprintfしなくても「出力」可能となりました。とは言え一つしかない虎の子のOLEDを複数Taskで奪い合うのは醜い。そこでOLED表示TASKを作製、他のTASKどもはそちらにQueue経由でお願いする形にいたしました。今回のはそのプロトタイプです。

“モダンOSのお砂場(78)UNO R4でFreeRTOS、Task発Queue経由OLED行” の続きを読む

モダンOSのお砂場(76) UNO R4でFreeRTOS、ミューテックスを使う一手間

Mutex_Results
Joseph Halfmoon

前々回バイナリ・セマフォ、前回はカウンティング・セマフォでした。今回ミューテックスで気づきました。手元のFreeRTOS、デフォルトではミューテックス使えるようになってません。ミューテックスって言ったら排他制御業界(そんな業界あるのか?)の大スターじゃないかい。例によってNotification推しのためだろうけど。
“モダンOSのお砂場(76) UNO R4でFreeRTOS、ミューテックスを使う一手間” の続きを読む

モダンOSのお砂場(75) UNO R4でFreeRTOS、カウンティング・セマフォ

Result_OK
Joseph Halfmoon

前回はバイナリ・セマフォを使ってみました。バイナリが出来るなら次はカウンティングだろ~ということで今回はカウンティングです。でも御本家FreeRTOS様的には「Notify推し」ということで「セマフォ」はディスられて?ますけど。まあ有るものは使ってみるっと。今回は2つしかないリソースを3人が取り合う形。

“モダンOSのお砂場(75) UNO R4でFreeRTOS、カウンティング・セマフォ” の続きを読む

モダンOSのお砂場(74) UNO R4、RA4M1でFreeRTOS、バイナリ・セマフォ

semaphoreTIP
Joseph Halfmoon

前回はNotifyを使って割り込み(ISR)とタスク間で「同期」をとってみました。今回は同様なことをSemaphoreを使って行ってみます。でも御本家ページより引用の”TIPS”を上に掲げましたるとおり、Notify使う方が「推し」みたいデス。「でもでも」APIは存在するし、大願成就のためには使ってみるしかないっと。
“モダンOSのお砂場(74) UNO R4、RA4M1でFreeRTOS、バイナリ・セマフォ” の続きを読む

モダンOSのお砂場(73) UNO R4でFreeRTOS、割り込みISRからNotify

NOTIFY_ISR_DUTa
Joseph Halfmoon

前回は2つのTask間でGiveしてTakeして相互にNotify。今回は割り込みサービスルーチン(ISR)からNotifyです。ISRからTaskへの一方通行なんだけれども。やらないわけにもいかないけれどもチョイ変のチョイ変。でもこれで割り込みが何か解決してくれることを待っているTaskというのも簡単。ホントか?
“モダンOSのお砂場(73) UNO R4でFreeRTOS、割り込みISRからNotify” の続きを読む

モダンOSのお砂場(72) UNO R4、RA4M1でFreeRTOS、Notify

Tasks_Take_Give
Joseph Halfmoon

前々回、TaskのSuspendとResumeをやっています。これは停める相手の都合などお構いなしに停止するという乱暴な?ものでした。今回は「待っているのでよろしく」「起きてください」とお互いに尊重しあいながら停止、再開できるNotifyを練習してみます。お互いにGive and Takeちゅうことですかい。

“モダンOSのお砂場(72) UNO R4、RA4M1でFreeRTOS、Notify” の続きを読む

モダンOSのお砂場(71) UNO R4、RA4M1でFreeRTOS、ISRからQUEUE

InterruptHandler
Joseph Halfmoon

前回はタスクの一時停止と再開でしたが、その横で割り込みも使ってました。しかし割り込みとタスクの関係性は薄かったデス。そこで今回は、タスク側とも「分かり合える」スケジューラのタイムスタンプをQueueを使って送信することで割り込み発生タイミングをタスク側に伝えてみたいと思います。

“モダンOSのお砂場(71) UNO R4、RA4M1でFreeRTOS、ISRからQUEUE” の続きを読む

モダンOSのお砂場(70) UNO R4、ルネサスRA4M1でFreeRTOS、サスペンド

ArduinoUNO_R4_DUT
Joseph Halfmoon

タスクの一時停止(suspend)と再開(resume)を実験しようとしたのですが、勝手な割り込み端子への思い込みに足をすくわれました。Arduino UNO R4は32ビット機になったわけだし、その辺の端子はみな割り込みに使えるんじゃね?大間違い!Arduino UNOの伝統にのっとり、2番、3番だけなのね。律儀。
“モダンOSのお砂場(70) UNO R4、ルネサスRA4M1でFreeRTOS、サスペンド” の続きを読む

モダンOSのお砂場(69) UNO R4、ルネサスRA4M1でFreeRTOS、ヒープメモリ

Heap
Joseph Halfmoon

前回、FreeRTOSの各種設定を決めるFreeRTOSConfig.hを読んでいて「思っていたのと違う」ところがありました。勝手に思いこんでいただけなんだけれども。今回もそんな思い込みを正して参りたいと思います。メモリの割り当てについてです。どっかヒープから割り当ててくれているのでないの?

“モダンOSのお砂場(69) UNO R4、ルネサスRA4M1でFreeRTOS、ヒープメモリ” の続きを読む