AVRマイコン開発メモ2(AVRプログラマ Pickit4編)

前回に続いてavrdudeを使った書き込み方法のメモ

AVRマイコン開発メモ1(開発環境準備)
AVRマイコン開発メモ3(AVRプログラマ UPDI編)
AVRマイコン開発メモ4(Transistor Testerを作成)

1. Pickit4を使ったICSP方式の書き込みメモ


ICSP方式は古くからある書き込み方式で、Arduino Unoとかに使われているATmega328pなどの定番マイコン書き込みがこれに該当する。手持ちのPickit4でICSP書き込みしてみる。

このあたりの情報はトランジスタ技術2021年4月号にAVRの特集がある。

接続方法は以下のとおり。SPIインタフェースとほぼ同等なのかな?

avr_pickit4_isp

Arduino Nanoのピンレイアウト

avr09

実際にPickit4とArduino Nanoを接続した図。注意点として、pickit4ではAVRマイコンに電源供給できないので、図のようにUSB接続するなどして供給する必要がある。(図中のAmazon製のUSBケーブル)

avr11

内部LEDをLチカさせるプログラムを書き込んでみる。Arduino Nanoの場合、ビルドインLEDがPB5になる。

#ifndef F_CPU
#define F_CPU 16000000UL // or whatever may be your frequency
#endif

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
  DDRB |= _BV(DDB5); // Set LED as an output
  while (1)
  {
    PORTB |= _BV(PORTB5);
    _delay_ms(500);
    PORTB &= ~_BV(PORTB5);
    _delay_ms(500);
  }
  return 0; // We will never get here!
}

WSL2内でプログラムをビルドする。-DF_CPU=16000000を指定しないといけない?

> avr-gcc -Os -DF_CPU=16000000 -mmcu=atmega328p -o blink.elf blink.c
> avr-objcopy -O ihex blink.elf blink.hex

Windows10上でコマンドプロンプトを開いてavrdudeを実行して書き込む。

> avrdude -c pickit4_isp -p atmega328p -U flash:w:blink.hex

参考サイト:https://sam-mundayhall.medium.com/advanced-arduino-programming-led-blink-part-1-ccaaabfcefe2

成功すると、"L"のLEDが点滅する。Arduino Unoでも同じ動作をすると思う。

avr_pickit4_nano_blink

とりあえずPickit4を使ってICSPインタフェース書き込みができることは確認できた。
次回はATtiny202に最新のUPDI接続してLチカしてみる。

-->