AVR再びはぢめました(ATTINY104とATTINY202を使ってみる)

●AVRは生きていた!
ねむいさんが東海自然歩道とか熊野古道とかを進軍しているうちに時代は
変わり、同じく8bitマイコンの世界も大きく変わっておりました…

今から三年前、ねむいさんはMicrochipに吸収されたATMELが擁していた
AVRに別れを告げて32bitマイコンの世界にどっぷりつかりこんだつもりでしたが…
AVRはMicrochipの庇護下で命脈を保ち、さらに現代風にリニューアルして
復活をしていた!!


秋月電気通商さんでAVR-0世代のATTINY202が発売されたのを機にねむいさんも
かつて背を向けたAVRに再び向き合うことにしました…!

そのまえに
●まずは旧世代のATTINY104

ATMEL時代の最後の嫡子ATTINY10xシリーズもついでに触ってみることにしました。
同じく秋月さんからATTINY104版のAtmelXplainedの在庫があったので
ATTINY202を買うついでにゲッツしました。
Xplained系は1000円台で純正デバッガmEDBGがついているのでお得です☆

ATTINY10xシリーズは旧世代のAVRシリーズであり、私が過去使用していた
XMEGA以前のAVRシリーズと同様のアーキテクチャーとなっています。
Lチカ程度なら余裕ですn…

なんとAVR-GCCがATTINY104に対応していなかった!!!orz
ATMEL STUDIOみたいな出来合いのツール使うのならば全く問題がないのですが
ねむいさんはコマンドラインビルド教なのでこれはきつい。
結局マカーの人がやった手順をなぞってavr-gccをATTINY10xに対応させて
ビルドしました。

書き込みはAVRDUDEを使ってXplainedに内蔵されたmEDBG(tpi接続)経由で
かきこみをおこな…i…

tpiで書き込めねぇ!!!!orz

Xplained系のATMEL評価ボード内蔵のmEDBGはAvrdudeではjtag3という
デバイス扱いで繋ぎに行くのですがなんとソースコードレベルで
jtag3のtpiモードに対応してなかった
orzもう6年以上たってるのになんで…


ATMELSTUDIOからならちゃんと読み書きできるんですけどね…
atmega1284pなのは気にしないでください。大昔の1284pのプロジェクトから
転用してATTINY104のプロジェクトこしらえたもので…


さて、ねむいさんはAvrdudeでどうしても書き込みしたかった。
Avrdudeのソースコード追ってくと手持ちのライタで書き込みができそう
だったのはLUFAとFTDI系でした。
まずはLUFAのAVRISPmk2化したATUSBKEYでtpi書き込み成功!!
(↑最初リセット繋げてなくて焦った)


お次はftdi、ねむいさんはJTAGKey2を作っているのでそれを使用しました。
TPIの結線はこちらのJTAGKey2紹介記事のリンク先回路図、
SWD接続の部分を参照の事。結線は以下の通り読み替えてください。
TPICLK = SWCLK
TPIDATA = SWDIO
RESET = TMS
リセットはRESETじゃなくてTMSなんですよねAVRだと。


そしてJTAGKey2でも危なげなく書き込み成功。
GUIツールはこれを使わせてもらいました。

なお、Avrdudeにもパッチ当てないとATTINY104で読み書きできないのでご注意を。
ねむいさんのavrdudeのバイナリはもちろん対応済です☆





●お次はATTINY202だ!

ATTINY202はAVR-0と呼ばれる新しい世代のAVRマイコンです。
AVR-0/1シリーズではプログラムメモリの規模は8ビットマイコンの力を最大限に
引き出せる64KByte以下に収まりATXMEGAと同じアーキテクチャとなりました。
そして旧世代AVRの弱点だったプログラムメモリのアクセスの煩雑さはデータ領域の
アドレスに割り当てることによって完全に克服をしました!!!!!
詳しい内容は先達の方々のブログ記事に習いました。ありがとうございます。
・なんでも独り言様
・GHz2000様


avr-gccはATTINY202に当然対応しています。なぜかATTINY104はぶっち
されていますが!!そしてAVR-0シリーズはXMEGAと同じ感覚で組めるので
ATXMEGA128A1のプロジェクトを転用して作ってみました。
また、ATMEL STARTなるATMELの忘れ形見のようなサイトのツールで
周辺やクロックの初期化コードを生成することができます。

クロックを20MHzに上げてGPIOをOn/OFFにするプロジェクトをササっと作って
いよいよ書き込みを行います。新世代のAVRはuPDIというXMEGAのPDIを進化
させた1wireのデバッグ・書き込みインターフェースで書き込みを行うわけですが、
今回は最初に紹介したATTINY104XplainedのmEDBGを使います☆


Xplainedの基板の裏にATTINY202はっつけてみました。


XplainedのmEDBG(ATMEGA32U4)はPE6がuPDIの信号線となっています。
このPE6をATTINY202のRESET(uPDI)に接続します。


別のAVRでも使えるようにXplainedのNCの部分をuPDI信号とします。
そして…



まぁ一筋縄でいくわけがなく、ねむいさんが買ったATTINY104-Xplainedはtpi専用の
ファームとなっており、uPDIを使うためにはいったんATMEL STUDIOをインス
トールしてtpiのファームをuPDIのファームに変える必要があります。
具体的にはmedbgupdi.hex&binをmedbgtpi.hex&binにリネームし上書きします。
その状態でatfwというツールでアップデートします。
atfw -a medbg_fw.zip -t medbg -s (ここにXplainedのシリアルナンバを記述する)


ATMEL STUDIOからは見えた!勝った!


そしてAvrdudeでもちゃんと書…
…書けねぇ!orzなんか無限ループしてるorz


これもAvrdudeのバージョンアップでエンバグしてしまったらしく、変更箇所をもとに
戻したら書き込みができるようになりました。めでたしめでたし♥

そんなわけでまだ私が若くぴちぴちだった頃、はぢめてAVRを触れた頃を思い
出しながらAVR-0シリーズも弄っていこうと思います!まだわかくてぴちぴちですが。






ああ最後になりますが宣伝ですがATTINY104とXplained-updiにも対応した
AVRDUDEのバイナリはこちらになります!どしどし使ってください☆

Go to top of page