delayMicroseconds(50000)をオシロで確認
トランジスタ技術2024年3月号に掲載してもらった
・『実はワナだらけ…確実に動かすArduino Uno R3』
この記事の中の『時間待ちのワナ』、これの実際の様子を
オシロ波形で見てもらいましょう。
ch1がオシロトリガ用の波形。
1サイクル回るごとにPB4をトグルしています。
ch2がdelayMicroseconds時間確認のための波形。
1msのH/L
50msのH/L ←のつもり
を出力して回っています。
しかし実際は・・・
delayMicroseconds(50000)が0.85msほどに
なっています。
こんなスケッチを使って見ています。
#define PB5_H (PORTB |= (1 << PB5)) // LED on
#define PB5_L (PORTB &= ~(1 << PB5)) // LED off
#define PB4_X (PINB |= (1 << PB4)) // PB4トグル
void setup() {
pinMode(13, OUTPUT); // PB5 基板上LED
pinMode(12, OUTPUT); // PB4 トグル出力(オシロのトリガ用)
}
void loop() {
cli(); // 割り込み禁止でloopを回る
while(1){
PB4_X; // PB4トグル
PB5_H;
delayMicroseconds(1000); // 1ms H
PB5_L;
delayMicroseconds(1000); // 1ms L
PB5_H;
delayMicroseconds(50000); // 50ms(???)
PB5_L;
delayMicroseconds(50000); // 実際は0.85msほど
}
}
※元記事/関連記事
・Arduino-UNOでのdelayMicrosecondsの設定は16383までだ!
・Arduinoから「タイマー0」を取り上げる(ユーザーが使う)
| 固定リンク
「Arduino」カテゴリの記事
- Arduino UNO R3で周波数を計る(2025.05.16)
- Arduino UNO R3のクロック精度を1MHzパルスで確かめる(2025.04.28)
- Arduino、analogWriteは捨てちゃえ。ちゃんとしたPWMの例(2025.03.22)
- パルスジェネレータをI2C液晶で動かす(2025.01.28)
- EEPROMを使ったシリアル受信バッファ 512kバイトに増設(2024.12.26)
「重箱の隅」カテゴリの記事
- 1/1023監視団 活動中!(2025.03.10)
- DIPのLMC6482えらい高くなった(2025.03.07)
- 因縁のボリューム記号 トランジスタ技術2025年3月号(2025.02.17)
- ボリューム記号のボヤキ、トラ技2025年3月号の別冊付録に再掲載(2025.02.10)
- NECは3段タイプの発振回路をすすめてる(2025.01.31)
コメント
「Arduino-UNOでのdelayMicrosecondsの設定は16383までだ!」、これ、皆さん知っておられました?
私は、ほんと、2021年7月に書いたブログ記事まで気が付きませんでした。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2024年2月12日 (月) 09時18分