ESP32でマルチタスクを行う為の、とりあえずここまで判った事 by freeRTOS 15タスク目 [ESP32]
現在実用ガイドを読みながら編集中、、、書いて有る事を信用しない様に!
http://www.profdong.com/elc4438_spring2016/USINGTHEFREERTOSREALTIMEKERNEL.pdf
ESP32はRTOSができるらしい、、、
今回は実験
digitalWriteは遅いとか言われるが、果たしてその実力は?
まずこんなコードを用意してみた。digitalWriteを使う場合と、GPIOのSET、RESETレジスタを使う場合。
とは言え、digitalWriteの中身はピン番号の判断と、やはりSET、RESETレジスタを叩くので、その判断の辺りがペナルティになる程度。
この画像はSET、RESETレジスタを直接操作したもの。およそ10MHz出ている。
この画像はdigitalWriteを使ったもの。およそ4.3MHz出ている。
割込み等で周期が乱れていない事を確認する為にジッターを確認。RTOSのタイムティックを生成している1ms周期のタイマー割込みは、ここでは影響していない模様。ウソです、ウソつきました。11μsくらい何かいます。
遅いと言われるのは、loopの中身を無限ループにしていない為に、別のところ(loopTask)でmicrosの計測を行っている為だと思われる。
ふと思ったのだが、digitalWriteはIRAM_ATTRで修飾されているが、loopTask自体は特にそういった修飾は無いので、もしかしてloopをIRAM_ATTRで修飾してGPIObit0To31Setマクロを使えば、最強?いやでも、キャッシュもあるしなぁ、、、→IRAM_ATTRで修飾しても、10MHzで変わりませんでした!
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出ている。
この画像はdigitalWriteを使ったもの。およそ4.3MHz出ている。
割込み等で周期が乱れていない事を確認する為にジッターを確認。
遅いと言われるのは、loopの中身を無限ループにしていない為に、別のところ(loopTask)でmicrosの計測を行っている為だと思われる。
ふと思ったのだが、digitalWriteはIRAM_ATTRで修飾されているが、loopTask自体は特にそういった修飾は無いので、もしかしてloopをIRAM_ATTRで修飾してGPIObit0To31Setマクロを使えば、最強?いやでも、キャッシュもあるしなぁ、、、→IRAM_ATTRで修飾しても、10MHzで変わりませんでした!
ITRONプログラミング入門 H8マイコンとHOSで始める組み込み開発
- 出版社/メーカー: オーム社
- 発売日: 2005/04/23
- メディア: Kindle版
リアルタイムOSと組み込み技術の基礎―実践μITRONプログラミング (TECHI (Vol.17))
- 作者: 高田 広章
- 出版社/メーカー: CQ出版
- 発売日: 2004/02
- メディア: 単行本
2018-02-26 16:16
nice!(0)
コメント(0)
コメント 0