SSブログ

ESP32でマルチタスクを行う為の、とりあえずここまで判った事 by freeRTOS 15タスク目 [ESP32]

現在実用ガイドを読みながら編集中、、、書いて有る事を信用しない様に!
http://www.profdong.com/elc4438_spring2016/USINGTHEFREERTOSREALTIMEKERNEL.pdf

ESP32はRTOSができるらしい、、、

今回は実験
digitalWriteは遅いとか言われるが、果たしてその実力は?
まずこんなコードを用意してみた。digitalWriteを使う場合と、GPIOのSET、RESETレジスタを使う場合。
const int ledPin = 2;
#define  GPIObit0To31OutReg   *((volatile unsigned long *)GPIO_OUT_REG)
#define  GPIObit0To31Set      *((volatile unsigned long *)GPIO_OUT_W1TS_REG)
#define  GPIObit0To31Reset    *((volatile unsigned long *)GPIO_OUT_W1TC_REG)

void setup()
{
  Serial.begin( 115200 );
  Serial.println( "FreRTOS Test." );
  pinMode( ledPin, OUTPUT );
  digitalWrite( ledPin, LOW );  /* turn off led. */
}

void loop()
{
  while( 1 )
  {
    GPIObit0To31Set = 0x04;  /* turn on led. */
    GPIObit0To31Reset = 0x04;  /* turn off led. */
//    digitalWrite( ledPin, HIGH );  /* turn on led. */
//    digitalWrite( ledPin, LOW );  /* turn off led. */
  }
}

とは言え、digitalWriteの中身はピン番号の判断と、やはりSET、RESETレジスタを叩くので、その判断の辺りがペナルティになる程度。
この画像はSET、RESETレジスタを直接操作したもの。およそ10MHz出ている。
ESP32_GPIO_Alternate_001.png


この画像はdigitalWriteを使ったもの。およそ4.3MHz出ている。
ESP32_GPIO_Alternate_002.png


割込み等で周期が乱れていない事を確認する為にジッターを確認。RTOSのタイムティックを生成している1ms周期のタイマー割込みは、ここでは影響していない模様。ウソです、ウソつきました。11μsくらい何かいます。
ESP32_GPIO_Alternate_003.png

ESP32_GPIO_Alternate_test_004.png

ESP32_GPIO_Alternate_test_005.png


遅いと言われるのは、loopの中身を無限ループにしていない為に、別のところ(loopTask)でmicrosの計測を行っている為だと思われる。

ふと思ったのだが、digitalWriteはIRAM_ATTRで修飾されているが、loopTask自体は特にそういった修飾は無いので、もしかしてloopをIRAM_ATTRで修飾してGPIObit0To31Setマクロを使えば、最強?いやでも、キャッシュもあるしなぁ、、、→IRAM_ATTRで修飾しても、10MHzで変わりませんでした!


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
  • メディア: 単行本



nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。