Quantcast
Channel: Under Power 研究所
Viewing all articles
Browse latest Browse all 201

ESP32でマルチタスクを行う為の、とりあえずここまで判った事。 18タスク目

$
0
0
現在実用ガイドを読みながら編集中、、、書いて有る事を信用しない様に!
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 ) );
  }
}

ESP32_countingSemaphore_001.png



ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発

  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/23
  • メディア: Kindle版



図解 μITRONによる組込みシステム入門(第2版)

図解 μITRONによる組込みシステム入門(第2版)

  • 作者: 武井 正彦
  • 出版社/メーカー: 森北出版
  • 発売日: 2018/02/17
  • メディア: 単行本(ソフトカバー)



μITRON4.0標準ガイドブック

μITRON4.0標準ガイドブック

  • 作者:
  • 出版社/メーカー: パーソナルメディア
  • 発売日: 2001/11/01
  • メディア: 単行本(ソフトカバー)



リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))

リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))

  • 作者: 高田 広章
  • 出版社/メーカー: CQ出版
  • 発売日: 2004/02
  • メディア: 単行本



Viewing all articles
Browse latest Browse all 201

Trending Articles