現在実用ガイドを読みながら編集中、、、書いて有る事を信用しない様に!
http://www.profdong.com/elc4438_spring2016/USINGTHEFREERTOSREALTIMEKERNEL.pdf
ESP32はRTOSができるらしい、、、
カウンティングセマフォの2つの例
1つはカウンターの初期値が0の場合。
これは既に http://hamayan.blog.so-net.ne.jp/2018-02-26-3 の、発生したイベントの回数を取りこぼさない為に使った例。
1つはカウンターの初期値が0よりも大きい場合。
イナバの物置の例題の様に、資源の数の管理などに使用する。
以下の例は100の資源に対して同一優先度のタスクがそれぞれ資源を1つずつ取得、最後は共に50で終わる。
![ESP32_countingSemaphore_001.png]()
![ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発 ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発]()
![リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17)) リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))]()
http://www.profdong.com/elc4438_spring2016/USINGTHEFREERTOSREALTIMEKERNEL.pdf
ESP32はRTOSができるらしい、、、
カウンティングセマフォの2つの例
1つはカウンターの初期値が0の場合。
これは既に http://hamayan.blog.so-net.ne.jp/2018-02-26-3 の、発生したイベントの回数を取りこぼさない為に使った例。
1つはカウンターの初期値が0よりも大きい場合。
イナバの物置の例題の様に、資源の数の管理などに使用する。
以下の例は100の資源に対して同一優先度のタスクがそれぞれ資源を1つずつ取得、最後は共に50で終わる。
volatile SemaphoreHandle_t xSemaphore; void setup() { Serial.begin( 115200 ); Serial.println( "FreRTOS Test." ); xSemaphore = xSemaphoreCreateCounting( 100, 100 ); /* configure take task1. */ xTaskCreatePinnedToCore( takeTask1, /* task name */ "", /* task name string */ 1024, /* stack size */ NULL, /* execute parameter */ 2, /* task priority : 0 to 24. 0 is lowest priority. */ NULL, /* task handle pointer */ 1 /* core ID */ ); /* configure take task2. */ xTaskCreatePinnedToCore( takeTask2, /* task name */ "", /* task name string */ 1024, /* stack size */ NULL, /* execute parameter */ 2, /* task priority : 0 to 24. 0 is lowest priority. */ NULL, /* task handle pointer */ 1 /* core ID */ ); vTaskDelete( NULL ); /* delete loopTask. */ } void loop() { } void takeTask1( void *execParam ) { int count = 1; while( 1 ) { if( xSemaphoreTake( xSemaphore, 0 ) == pdTRUE ) { Serial.print( "take semaphore 1 : " ); Serial.println( count++,DEC ); } vTaskDelay( pdMS_TO_TICKS( 100 ) ); } } void takeTask2( void *execParam ) { int count = 1; while( 1 ) { if( xSemaphoreTake( xSemaphore, 0 ) == pdTRUE ) { Serial.print( "take semaphore 2 : " ); Serial.println( count++,DEC ); } vTaskDelay( pdMS_TO_TICKS( 100 ) ); } }


ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発
- 出版社/メーカー: オーム社
- 発売日: 2005/04/23
- メディア: Kindle版

リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))
- 作者: 高田 広章
- 出版社/メーカー: CQ出版
- 発売日: 2004/02
- メディア: 単行本