部品実験:Arduino | 元に戻る |
Arduino各プロセッサーのOUTPUT時間測定 2024/6/30 |
|
| |||||||
1.結果 2.digitalWriteによるOUTPUT時間 (1)ESP-WROOM-02及び12F (2)UNO (3)MEGA 2560 (4)DUE-CH340 3.高速化によるOUTPUT時間 (1)ESP-WROOM-02及び12F (2)MEGA 2560 (3)DUE-CH340 |
|
本 文 |
1.結果 手持ちのarduinoについてHiLoOUTPUT時間を測定した結果下表の通りとなった。 単位(us)
|
2.digitalWriteによるOUTPUT時間 arduinoで通常使用するコマンド digitalWrite の動作時間を測定した。 [目次に戻る] |
(1)ESP-WROOM-02及び12F a.プログラム void setup() { pinMode(13,OUTPUT); } void loop() { digitalWrite(13,HIGH); digitalWrite(13,LOW); digitalWrite(13,HIGH); digitalWrite(13,LOW); } b.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで1.60usかかっている。 LO→HIGH処理時間はBX-AXで同じく1.60usかかっている。 1周期として3.2usで312.5KHz Loopの戻り処理は 下図のBX-AX=1.60usで6.86usかかっている。 [目次に戻る] |
(2)UNO a.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで3.2usかかっている。 LO→HIGH処理時間はBX-AXで3.3usかかっている。 1周期として6.5usで153.8KHz Loopの戻り処理は 下図のBX-AX=3.3usで0.24usかかっている。 [目次に戻る] |
(3)MEGA 2560 a.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで5.4usかかっている。 LO→HIGH処理時間はBX-AXで5.4usかかっている。 1周期として10.8usで92.6KHz Loopの戻り処理は 下図のBX-AX=5.4usで0.35usかかっている。 [目次に戻る] |
(4)DUE-CH340 a.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで2.1usかかっている。 LO→HIGH処理時間はBX-AXで2.02usかかっている。 1周期として4.12usで242.7KHz Loopの戻り処理は 下図のBX-AX=2.02usで2.12usかかっている。 [目次に戻る] |
3.高速化によるOUTPUT時間 標準コマンドを使用しないでOUTPUTを行う。 [目次に戻る] |
(1)ESP-WROOM-02及び12F a.プログラム #define PIN_OUT *(volatile uint32_t *)0x60000300 #define PIN_ENABLE *(volatile uint32_t *)0x6000030C #define PIN_00 *(volatile uint32_t *)0x60000328 #define PIN_02 *(volatile uint32_t *)0x60000330 #define PIN_04 *(volatile uint32_t *)0x60000338 #define PIN_05 *(volatile uint32_t *)0x6000033C #define PIN_12 *(volatile uint32_t *)0x60000358 #define PIN_13 *(volatile uint32_t *)0x6000035C #define PIN_14 *(volatile uint32_t *)0x60000360 #define PIN_15 *(volatile uint32_t *)0x60000364 void setup() { PIN_OUT = (1<<13); PIN_ENABLE = (1<<13); } void loop() { PIN_13 = 0; //HIGH PIN_13 = 1; //LOW PIN_13 = 0; //HIGH PIN_13 = 1; //LOW } b.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで0.088usかかっている。 LO→HIGH処理時間はBX-AXで0.088usかかっている。 1周期として0.251usで5,682kHz Loopの戻り処理は 下図のBX-AX=0.088usで6.912usかかっている。 [目次に戻る] |
(2)MEGA 2560 a.プログラム void setup() { pinMode(13,OUTPUT); } void loop() { PORTB |= _BV(7); // digitalWrite(13,HIGH);MEGA2560 13=PB7 PORTB &= ~_BV(7); //digitalWrite(13,LOW); PORTB |= _BV(7); //digitalWrite(13,HIGH); PORTB &= ~_BV(7); //digitalWrite(13,LOW); } b.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで0.126usかかっている。 LO→HIGH処理時間はBX-AXで0.126usかかっている。 1周期として0.252usで3,968KHz Loopの戻り処理は 下図のBX-AX=0.126usで0.253usかかっている。 [目次に戻る] |
(3)DUE-CH340 a.プログラム void setup() { pinMode(13,OUTPUT); } void loop() { REG_PIOB_SODR |= (0x01 << 27); // Turn on the LED REG_PIOB_CODR |= (0x01 << 27); // Turn off the LED using the CODR register REG_PIOB_SODR |= (0x01 << 27); // Turn on the LED REG_PIOB_CODR |= (0x01 << 27); // Turn off the LED using the CODR register } PIO_SODR - ここに1を書いて出力ピンをHIGHに設定します PIO_CODR - 出力ピンをLOWに設定するには、ここに1を書き込みます PIO_PDSR - ポートのピンの実際の状態を読み取ります。 PIO_PUDR - ピンの内部プルアップをオフにするには、ここに1を書き込みます PIO_PUER - ピンの内部プルアップをオンにするには、ここに1を書きます b.測定結果 LooP内でのdigitalWriteの HIGH→LO処理時間はT-AXで0.12usかかっている。 LO→HIGH処理時間はBX-AXで0.12usかかっている。 1周期として0.24usで4,167KHz Loopの戻り処理は 下図のBX-AX=0.12usで2.23usかかっている。 [目次に戻る] |