AVR絶賛入門中

AVR絶賛入門中なほしみです。春休みの自由工作!わ〜い♪(ただのバイト兼趣味)



AVRとはPICにかわる(と巷では言われている)マイコンフラッシュメモリやEPROMをけっこうつんでるできる子です。
アセンブラでも組めますが地味にCコンパイラやエディタが充実しているので(しかもVisualStudioLikeでやりやすい!!!)おすすめです!!!





って友達にいわれたのではじめたのですが。






とりあえずAVR(マイコンの一種)ライタの使い方を練習するために簡単なライタを作ることに。
スイッチ、AVR2313、抵抗、コンデンサパスコン)、発光ダイオードだけという非常に簡単なものを作ることに。回路もとくに書かず(教科書のを適当に変更して)作ることに。

                                                                                                                            • -
/**
* @file AVRのテストプログラム
* @brief 0から順番に値を増やしていく。ダイオードの出力は
* 1,3,5bit目がtrueのときに出力される。
*/
#include<avr/io.h>
#include<avr/delay.h>

#define true 1
#define false 0

void init(){
DDRB = 0xff; //PORTBを8bitすべて出力に
PORTB = 0x00; //PORTBの出力をすべてLowに。
}

int main(){
init();

while(true){
PORTB &= 0x00; //0にリセット

for(int nCounter = 0x00 ; nCounter <= 0xff ; nCounter++ ){
_delay_ms(1000);
PORTB = nCounter;
}
}
return 0;
}
                                                                                                                            • -

という二進数三桁のカウンター。

結局こんなかんたんなもの作るのに買出しから含め12時間半、加工開始から10時間かかってしまったです。

あちこち詰まったので詰まったところをメモ。

  • 5VAC-DCアダプタの接合部を間違えたせいで5V出なかった件。

前ブログに書いたとおり。解決に4時間。(日をまたいでるので、それに試行錯誤した時間、という意味。)

  • AVRライタのソケットを上下間違えた。

思いっきり勘違いしてました。気づくのに30分。

  • あちこち短絡

ほしみのハンダ力のなさに絶望した!

発光ダイオードと抵抗はカップルにってあんなに言ったぢゃないですかぁ!!!
・・・いや、わりとよくやるミスだと思います。

  • 配線図を描かずに適当にやったのでえらいことに。

こんな簡単な回路でさえ絶望感ただようハンダ付け。
本番は8つのスイッチにすべてシュミットトリガーをつけなきゃいけないので、ちゃんと配線図かいてから取り組みます。・・・ていうかプリント基板注文したほうが早い気がしてきた。

  • AVRマイコンへの書き込みにとことん失敗する

どうもFlashメモリが再書き込み可能になるまでに何分かかかるみたいで、こればかりは神様にどうか成功するように祈るしかないみたい

  • forループで時間稼ぎをしようとしたら、ぜんぜん稼げていなくてつっきぱなしの状態に見える。(点滅が早すぎて目がついていかない。)

_delay_msという関数がありました。そりゃあるわな。

といっても1bit目と3bit目と5bit目のみ発光ダイオードにつないでるので(8つもダイオードを使うのが面倒だったのと、AVRからの出力がとなりあってて込み入っててやる気がしなかった。だから一個飛ばし。)
一見ランダムについたり消えたりしているようにみえます。(1bit目だけはひたすらちかちかしてますが。)



・・・え?発光ダイオードがちかちかするだけで13時間!?





きっと次回はもっと面白いものができる





・・・と思いたいなぁ。




ほしみの技術力の進歩を見届けてやってくださいです。
(写真うpしたいけど電池が切れてしまったので後日。まあ誰も見たくないかもだけど。)