ArduinoのRISC-V CH32V003のdelayなど時間系の関数の結果が変だなぁとは思っていましたので,一応どういう現状か知っておこうと調べてみました。
機材は
・MPU:CH32V003J4M6 (8pin) とCH32V003F4P6 (20pin)
・Boards;CH32 MCU EVT Boards by WCH Ver. 1.0.3
で,出力波形をロジアナで調べるなどしてみました。
[ delayMicroseconds() ]
引数のマイクロ秒のディレイを実行する関数ですね。
PC1からディレイを効かしながら出力する簡単なプログラムです。
出力結果では引数の2倍の時間がディレイされているようです。
[ delay() ]
引数のミリ秒のディレイを実行する関数です。
ディレイをミリ秒に変更しただけのプログラムです。
同じように出力結果は引数の2倍の時間がディレイされているようです。
[ millis() と micros() ]
プログラムのスタートからの経過時間をミリ秒(millis)かマイクロ秒(micros)で得る関数です。
1秒間隔で値を出力しようと思い,delay(500)でやってみましたが,,delayの引数と同じ数値で上がって行っているようです,,(^^;;;;;
実際の出力は1秒間隔でされていたと思いますので,millis, micros関数はともに返り値の2倍の時間が経過していると考えるのが良いのでしょうね,,,???
以上のように出力波形などをみると,CH32V300xのArduinoボード(Ver. 1.0.3)ではdelayなどの時間系でデフォルトの調整が不十分な現状のようです。
UARTのボーレートなど,接続系のクロックは問題がないので,ま,そういうものかと考えてプログラムを書けば良いのでしょうが,,スッキリはしませんね(^^;;;;;
他の開発環境では起こらない事なのかもしれませんが,"あれして,これして,ちょっとmakeしてこうすれば良い事じゃん” 的な話には付き合えない素人オヤジなので,できる事でぼちぼちやっていきましょう。
機材は
・MPU:CH32V003J4M6 (8pin) とCH32V003F4P6 (20pin)
・Boards;CH32 MCU EVT Boards by WCH Ver. 1.0.3
で,出力波形をロジアナで調べるなどしてみました。
[ delayMicroseconds() ]
引数のマイクロ秒のディレイを実行する関数ですね。
PC1からディレイを効かしながら出力する簡単なプログラムです。
出力結果では引数の2倍の時間がディレイされているようです。
[ delay() ]
引数のミリ秒のディレイを実行する関数です。
ディレイをミリ秒に変更しただけのプログラムです。
同じように出力結果は引数の2倍の時間がディレイされているようです。
[ millis() と micros() ]
プログラムのスタートからの経過時間をミリ秒(millis)かマイクロ秒(micros)で得る関数です。
1秒間隔で値を出力しようと思い,delay(500)でやってみましたが,,delayの引数と同じ数値で上がって行っているようです,,(^^;;;;;
実際の出力は1秒間隔でされていたと思いますので,millis, micros関数はともに返り値の2倍の時間が経過していると考えるのが良いのでしょうね,,,???
以上のように出力波形などをみると,CH32V300xのArduinoボード(Ver. 1.0.3)ではdelayなどの時間系でデフォルトの調整が不十分な現状のようです。
UARTのボーレートなど,接続系のクロックは問題がないので,ま,そういうものかと考えてプログラムを書けば良いのでしょうが,,スッキリはしませんね(^^;;;;;
他の開発環境では起こらない事なのかもしれませんが,"あれして,これして,ちょっとmakeしてこうすれば良い事じゃん” 的な話には付き合えない素人オヤジなので,できる事でぼちぼちやっていきましょう。