Saturday, September 13, 2014

ATmega328Pファームウエアー書き込み

私はMakefileを作って、ARDUINO対応の16MHzファーム書き込みに対応しています。

このMakefileファイルは https://github.com/osamuaoki/avrdude-friend にあります。

$ make set

などとシェルから入力して使ってください。(avrdudeやarduinoパッケージはインストールする必要ががあります)

ここで理解するべき基本は:
  • チップの初期状態は、8MHzの内部発振器をプリスケーラーで1/8に分周したのをMCUのクロックで使っている。
  • ARDUINO用の状態は、16MHzの外付クリスタル発振器をそのままMCUのクロックで使っている。
  • ARDUINO用のファームウエアーをフラッシュに書いたあと読み出せないようにLOCKしている。
  • 読み出せないようロックされたのを外すには全消去(erase)しかない。

MCUがこれで消去して初期化できなくなるケースとして、何かの間違いで外部クロック使用に設定してしまうことがあるそうです。その際はクロックピンに何らかのクロックをいれればなんとか対応できます。

これよりややこしい壊し方をした際には、RESETに12Vをかけてプログラムする高圧パラレルプログラミング(ATINY等では高圧シリアルプログラミング)なのですが、滅多に無いので新しいチップを買う方が安いですね。

Linuxの基本が分かっていればMakefileの意図するところはわかりますよね。分からないときは


などを読んでください。

No comments:

Post a Comment