最初につまづいたのは、フラッシュメモリへのプログラムの書き込み方法。
これは、前回書いた方法で、arduinoをAVR-ISPとすることで解決。
それから悩んでいたのは、これ、見ての通り8ピンなのに機能満載で、
その結果ひとつのピンに複数の機能を詰め込んでいます。
例えば、5番ピン。
PB0(MOSI/DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0)
ってな感じで。
8ピンから電源の2本を除いた6本のピンすべてを入力にもできるし、
出力にもできるし、クロックの入出力、A/Dコンバータ、PWM出力、等々。
そのうち一つをA/Dにしてみたところ、どうも挙動がおかしい。
10kの可変抵抗で動かしてみると、0 からすぐに120位。
それがずーっと続いて、最後に突然255。
ピンをオープンにした状態で電圧を見てみると、2.2V程出力されている。
クロック出力のピンを兼ねているから、多分、そのあたりだろうとヒューズの書き換え。
全く変わらない。
自分のミスでした。
普段の書き込みに、
$ make flash
と、手抜きをしているから、それでヒューズも書き込まれたのだと勘違い。
$ make install
で、ヒューズと、プログラムの書き込みが出き、無事に想定した数値が
出るようになりました。
最後に、これは現在もどうすればよいのか、ちょっと調べているところですが、
複数のA/Dを使う場合。
このATtiny85は、4つのA/D入力が出来るのですが、コンバータはひとつしかありません。
で、内部的に接続を入れ替えて使うのですが、その切替のタイミングが良く分からない。
結局は、まずA/D変換をスタートさせて、その最中にチャンネルの切替。
A/D変換が終了するまで、チャンネルが切り替えされないので、終了まで待機。
それから、あらためて変換をスタートし、読み取り。
一度、余計な手間が入っていますが、これだと常に同じタイミングで1周するので、
これで良しとしています。
書いてて気づいた。
1回目のダミー変換を使えば、半分のwaitで済むのか。
あとで、ちょっとテストしてみよう。
コメントする