電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

avr-gcc で工作(その2)

20040912基板写真

avr-gcc で工作(その2)

作業しました。

WinAVRの新版を入れて、とりあえず先日の回路でAVRにプログラムを書いて、焼いてみました。

書き込み回路は id:Chuck:20040812#p1 で挙げた AVR910を探し出して*1きました*2

/*
	PORTA LED blinking
*/
#include 

void nop(int n)
{
  int i;
  for (i = 0; i < n*256; i++) ;
}

int main(void)
{
  outp(0xff, DDRA);
  for (;;) {
    outp(0xff, PORTA);
    nop(20);

    outp(0x00, PORTA);
    nop(20);
  }
}

make一発! ということで、動かしてみたら、

動かない… こんなに単純なプログラムなのに _| ̄|○

気を取り直して見直すと、PORTA は A/Dコンバータと共用です。データシートをよく読むと、PORTA I/O と A/Dコンバータの電源は {AV_{CC}} / {AGND} だとあります。考えてみれば当たり前です。アナログに繋ぐかもしれないポートを一度 {V_{CC}}で受けるということも無いわけです。

で、回路を修正したものがこちら。

20040912回路図

本当はパスコン入れたほうがいいのでしょう、ということであとで入れます。A/Dコンバータを使わないので{AREF}は開放でもいいのだろうか、いや悩んだらどこかに繋いでおけということで、あとで{V_{CC}}に繋いでおきます*3

ということで、ようやくプログラミング環境が整い、作ったプログラムでLEDを点滅させることができました。

メモ
クロック8MHz で、nop(20) は 最適化なし出来高払いで、71 msec

*1:久しぶりなので…

*2:と思ったらうまく書けなかったので、それ以前に作ったChaNさんのCOMポート用ISPアダプタまで引っ張り出してきて、AVR910を焼きなおしたり…

*3For ADC operations, a voltage in the range 2V to {AV_{CC}} must be applied to this pin.