mega88 or mega88Pでarduinoを作ります。
そのうちmega8やmega644もarduino化したい。
材料
Arduino Duemilanove
母艦として。
AVR mega88 or mega88P
小さいブレッドボード&配線材&LED
Arduino 015
mega88を登録する
(todo)
ブートローダの準備
ブートローダのソースコード編集
(todo)
ブートローダをビルドする
(todo)
ブートローダを焼く
Duemilanoveとmega88のピンの対応
Duemilanove |
mega88 |
D0(RX) |
2 |
D1(TX) |
3 |
D2 |
4 |
D3 PWM |
5 |
D4 |
6 |
D5 PWM |
11 |
D6 PWM |
12 |
D7 |
13 |
----------- |
----- |
D8 |
14 |
D9 |
15 |
D10 |
16 |
D11 |
17(MOSI) |
D12 |
18(MISO) |
D13 LED |
19(SCK) |
GND |
8,22 |
AREF |
21 |
----------- |
----- |
A0 |
23 |
A1 |
24 |
A2 |
25 |
A3 |
26 |
A4 |
27 |
A5 |
28 |
----------- |
----- |
RESET |
1 |
3V3 |
--- |
5V |
7,20 |
GND |
GND |
GND |
GND |
----------- |
----- |
(XTAL1) |
9 |
(XTAL2) |
10 |
ブレッドボード&mega88とDuemilanoveの接続の手順
- ブレッドボードにmega88をさす
- Vccラインとarduinoの5Vを接続
- GNDラインとarduinoのGNDを接続
- pin7とVccを接続
- pin22とGNDを接続
- pin22とpin8を接続(チップを乗り越える)
- pin20とpin7を接続(チップを乗り越える)
- pin18とarduinoのX3:1
- pin19とarduinoのX3:2
- pin17とarduinoのX3:3
- pin1とarduinoのX3:4
ブートローダを焼く
mega88
(チップ消去)
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv -B 4800 \
-e
(fuse書き込み[L:E2,H:DD,E:00])
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv -B 4800 \
-U lfuse:w:0xE2:m -U hfuse:w:0xDD:m -U efuse:w:0x00:m
(ブートローダ書き込み)
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv \
-U flash:w:ATmegaBOOT_168_atmega88_8MHz.hex:i
(ブートローダ領域をロック[L:0F])
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv \
-U lock:w:0x0F:m
mega88p
スケッチを実行する
ブートローダが焼けたら立派な激安Arduino。
あとは、RX,TXにTTLレベルでのシリアル通信すればいい。
シリアル通信の方法
- USBシリアルケーブル+レベル変換
- Duemilanoveのシリアル変換チップ
- UP-12Cを買う
などがある。
DuemilanoveをUSBシリアル変換機として使いたい
ここはなんとかDuemilanoveでやりたい。
Arduinoの開発環境でmega88uinoにアップロードしたい。
それがダメならavrdudeからhexをカキコみたい。
mega88uinoのリセットは手動で我慢するとしても、
シリアルポートを開いたときにDuemilanoveが自動的にリセットしてしまうので
Duemilanove搭載のブートローダが動作してしまう。
auto resetを無効にするには、
- Duemilanove基板のDTRのパターンを切る→あとで面倒
- avrdude(かドライバ?)がDTRを使わない/送信しないようにする
- DTRしないオプションをつける
- シリアルポートを開いてからDuemilanoveのブートローダの待ち時間分、通信をまったく無視するオプションを付ける
とか。
めんどくさい。UP-12C買った方が良さそうだ。
ブートローダ無しでスケッチを直接書き込む
ブートローダの分、大きなスケッチを書き込むことができる。
mega88
チップの初期化
(チップ消去)
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv -B 4800 \
-e
(fuse書き込み[L:E2,H:DD,E:01])
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv -B 4800 \
-U lfuse:w:0xE2:m -U hfuse:w:0xDD:m -U efuse:w:0x01:m
スケッチをビルド
ArduinoエディタのメニューTools->Board->ATMega88(8MHz)を選択して、転送ボタンを押す。
エラーになるがスケッチのフォルダのappletフォルダのなかに*.hexができている。
これを書き込む。
(プログラム書き込み)
cd applet
~/tmp/mac_bitbang/avrdude-5.3.1/avrdude -C ~/tmp/mac_bitbang/avrdude-5.3.1/avrdude.conf -c diecimila -p m88 -vv \
-U flash:w:Wiki_Hotal.hex:i
Arduino Duemilanoveとの違い
mega168/mega328/mega88P/mega88/mega8/mega644の違い。
プログラムサイズ
メモリ
クロック
参考サイト
TODO
mega8 200円
最終更新:2009年11月01日 11:27