Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 arduino OUTPUT_TIME
1.結果
2.通常のOUTPUT時間
 (1)ESP-WROOM,12F
 (2)UNO
 (3)MEGA 2560
 (4)DUE-CH340
3.OUTPUT時間の高速化
 (1)ESP-WROOM,12F
 (2)MEGA 2560
 (3)DUE-CH340

Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他

1.結果

 手持ちのarduinoについてHiLoOUTPUT時間を測定した結果下表の通りとなった。
単位(us)
   digitalWrite 高速化
H-L L-H kHz Loop H-L L-H kHz Loop
ESP-WROOM-02 1.6 1.6 312.5 6.86 0.088 0.088 5,682 6.912
ESP-12F 1.6 1.6 312.5 6.86 0.088 0.088 5,682 6.912
UNO 3.2 3.3 153.8 0.24 0.12 0.131 3,984 0.249
MEGA 2560 5.4 5.4 92.6 0.35 0.126 0.126 3,968 0.253
DUE-CH340 2.1 2.02 242.7 2.12 0.12 0.12 4,167 2.23



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かかっている。

更新日 2025/11/24 19:51  管理者 平林 剛Hirabayashi Takeshi