以前、挑戦してあえなく撃沈したAVRISP mkIIでしたが、今回再挑戦しました。
回路は前回試した以下の回路からLEDを2つに減らし、7ピンのVccと8ピンのGNDの間に0.1μFのコンデンサを入れ、電源を+5VのACアダプターにしました。
上の回路図を見ながらブレッドボード上に組んだのが下の写真。
最初に組んだらLEDが1つ付きっぱなしでATmega88Pがチンチンに熱くなり、AVRISP mkIIからは認識されない状態でした。
「チンチンに熱くなるのは+/-を間違えていることが多いな」と配線を調べたら7ピンのVccと8ピンのGNDを1ピンずれてGNDに+5Vを入れていました。たぶん、前回もこの間違いを犯していたんだと思います。
さらに、22ピンのGNDをつなぐのを忘れていて、それも直しました。
これでOKと、AVR Studio 4で以下のようなテストプログラムを書いてHEXファイルを書き込んでみたら、見事動きました。
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
char bit = 0x01;
DDRD = 0x0F;
PORTD = bit;
_delay_ms(10);
while (1) {
bit <<= 1;
if (bit > (1 << 1)) {
bit = 0x01;
}
PORTD = bit;
for (char i = 0; i < 10; i++) {
_delay_ms(10);
}
}
return 0;
}
「7ピンのVccと8ピンのGNDの間に入れたコンデンサを抜いたらどうかな?」と抜いてみましたが、それでも動きました。
「AVRってすごくシビアで動かすのが難しい」と思い込んでいたのですが、自分のミスで動かなかっただけで、ちゃんとつなげばちゃんと動くのがわかってスッキリしました。
メモ:AVRISP mkIIのブレッドボード用自作ケーブルはちゃんと考えて作らなかったので、赤のワイヤーが2ピンになっていて、紫のワイヤーが1ピンになっています。

