日々の記録

ほどよく書いてきます。

ProMicroのAD変換にかかる時間

2023-09-03 22:38:24 | AVR

ArduinoIDEでプログラムを作っていると、AD変換の時間とか余り意識しないのだが、一体どの程度の時間で処理できるのかと気になった。

一回あたりは早いだろうから、10000回ループさせて出力させてみたところ、10000回で1120msという結果。
つまり、一回あたり、0.112msでADCが完了するということである。サンプリング速度はだいたい9kHzか。

十分な速度である。気になるのは、シリアル通信しているあいだCPU待ってるんじゃないかと思うところかな。こういう細かいところを考えるとArduinoでは難しいのかもしれないが、簡単に作れるのがArduinoなので、このへんはしょうがない。

プログラム:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  long ADCValue;
  int LevegGaugeValue;

  ADCValue=0;
  for(int i=0;i<10000;i++){
    ADCValue += analogRead(A0);
  }
  Serial.print(ADCValue);
  Serial.print(",");
  Serial.println(millis());
}

 

 

10回平均にして115200bpsで読み込むとこんな感じでハムノイズっぽいのが拾えているようである。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SparkFun ProMicro 5V 16MHzで7セグLEDを

2023-09-03 16:25:42 | AVR

SparkFunというところのProMicroのクローンがAliexpressで安価に出ている。
621円で購入したものを使って見る。もはや書き込みとか含めてマイコンボード使ってしまったらプロトタイプはそれでいい気がする。裸のマイコンでもいいのだが、USBで指すだけで書き込みとかできる便利さがよい。

で、7セグのドット意外の端子を使うので、8bitが割り振られているポートを探す。
AD変換はPortFというもののようだ。デジタルピンはD0からD17まであるが、ポートフルで引き出されているものはないようだ。7bit分は一つのポートで確保できず、PB1〜PB6の6bit分とどこかで1bit確保といった感じになりそうである。

PB0:外部引き出しなし(TX LED)
PB1:D15
PB2:D16
PB3:D14
PB4:D08
PB5:D09
PB6:D10
PB7:外部引き出しなし!

PD0:D03
PD1:D02
PD2:D00(RXI)
PD3:D01(TXO)
PD4:D04
PD5:外部引き出しなし
PD6:外部引き出しなし
PD7:D06

 

で、仕様を考えていこうかと。
将来2桁表示になったときに対応できるように、アノードを2ch割り振っておく。2chとも一つのLEDに接続したら1桁表示と思ったのだが、ダイナミック点灯を1桁でやるとまず読めたものでは無いので、無理だった。

全体のアルゴリズムとしてはこんな感じでしょうか。待機時間を延々AD変換させまくってもいいのですが、余り意味がありませんので、そのままです。
for(){
・AD変換する
・1-5Vに対応する値を0-99に割り付ける
・10の位(10で割った商)を表示する(0.5s)
・消灯0.1s
・1の位(10で割った余り)を表示する(0.5s)
・消灯0.5s
}

では7セグのマップを作っていきませんといけません。
追記予定

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする