arduino,avr その後

| | コメント(0) | トラックバック(0)

_IMG3998.jpg

先日、arduinoと同時に購入した、atmel社のATtiny85です。

ようやく、ある程度自由に使えるようになってきました。 

 最初につまづいたのは、フラッシュメモリへのプログラムの書き込み方法。

これは、前回書いた方法で、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で済むのか。

あとで、ちょっとテストしてみよう。
 

トラックバック(0)

このブログ記事を参照しているブログ一覧: arduino,avr その後

このブログ記事に対するトラックバックURL: http://blog-admin.kitaguni.com/mt-tb.cgi/249

コメントする