2014年12月23日火曜日

ATmega 1284PをArduino化したときのピンマッピング

個人的な備忘録。
Arduino on ATmega1284P より。
                      +---\/---+
           (D 0) PB0 1|        |40 PA0 (AI 0 / D24)
           (D 1) PB1 2|        |39 PA1 (AI 1 / D25)
      INT2 (D 2) PB2 3|        |38 PA2 (AI 2 / D26)
       PWM (D 3) PB3 4|        |37 PA3 (AI 3 / D27)
    PWM/SS (D 4) PB4 5|        |36 PA4 (AI 4 / D28)
      MOSI (D 5) PB5 6|        |35 PA5 (AI 5 / D29)
  PWM/MISO (D 6) PB6 7|        |34 PA6 (AI 6 / D30)
   PWM/SCK (D 7) PB7 8|        |33 PA7 (AI 7 / D31)
                 RST 9|        |32 AREF
                VCC 10|        |31 GND
                GND 11|        |30 AVCC
              XTAL2 12|        |29 PC7 (D 23)
              XTAL1 13|        |28 PC6 (D 22)
      RX0 (D 8) PD0 14|        |27 PC5 (D 21) TDI
      TX0 (D 9) PD1 15|        |26 PC4 (D 20) TDO
RX1/INT0 (D 10) PD2 16|        |25 PC3 (D 19) TMS
TX1/INT1 (D 11) PD3 17|        |24 PC2 (D 18) TCK
     PWM (D 12) PD4 18|        |23 PC1 (D 17) SDA
     PWM (D 13) PD5 19|        |22 PC0 (D 16) SCL
     PWM (D 14) PD6 20|        |21 PD7 (D 15) PWM
                      +--------+
                     ATmega 1284p
書き込みに使うのは、本家からfolkしたこちらがおススメ。 https://github.com/JChristensen/mighty-1284p

ATmega 328PをArduino化した時のピンマッピング

個人的な備忘録。
ATmega 328pをArduino化した時のピンアサイン。
    ┏━━━━┓
rst ┃1     28┃ a15
rxd ┃2     27┃ a14
txd ┃3     26┃ a13
d2  ┃4     25┃ a12
d3  ┃5     24┃ a11
d4  ┃6     23┃ a10
vcc ┃7     22┃ gnd
gnd ┃8     21┃ aref
xt1 ┃9     20┃ avcc
xt2 ┃10    19┃ d13
d5  ┃11    18┃ d12
d6  ┃12    17┃ d11
d7  ┃13    16┃ d10
d8  ┃14    15┃ d9
    ┗━━━━┛
    atmega 328p

FT232RLのISP端子

個人的な備忘録。
FT232RLを使ってArduinoのbootloaderを書き込むときの配線。

    ┏━━┓
CTS ┃・・┃ 5V
DSR ┃・・┃ DCD
RI  ┃・・┃ GND
    ┗━━┛
      ISP
            │ 1284p│ 328p 
──────┼───┼───
CTS → MISO │   7  │ 18
DSR → SCK  │   8  │ 19
RI  → RESET│   9  │  1
DCD → MOSI │   6  │ 17

2014年12月7日日曜日

Arduino Uno互換機

秋月電子でパーツセットを買ってきて組み立ててみました。


  • 「作って遊べるArduino互換機」パーツセット
  • UncomPatino基板
これは、もともと書籍の付録基板のパーツセットのようですが、書籍は買わなくても作れますし、Arduino互換機として使えます。


この互換機の良いところは、これ単体でBootloaderの書き込みができることだと思います。完全なクローンでは無いので厳密な互換性を求める方には不向きだと思いますが、Arduinoでちょっと遊びたい方には良いと思います。


組み立て自体は簡単です。
パーツの向きがあるのは、ATMEGA328P(のソケット)、FT232RL、LEDの3つだけ。部品の切り欠きを基板の切り欠きマークに合わせてはんだ付けすれば大丈夫です。 背の低い部品から背の高い部品の順にはんだ付けしていくと楽です。



FT232RLは普通のハンダと、ハンダ吸い取り線を使ってハンダづけしました。
初めに両面テープを使ってFT232RLを基板上に張り付けて位置決めをします。次に足をブリッジするようにはんだ付けした後に、はんだ吸い取り線を足の上に軽くおいてブリッジしたハンダを吸い取ります。足と足がショートしていないことを最後に確認しておしまい。


大変なのは、Bootloaderの書き込みです。以下のサイトなどを参考にさせていただきました。
基本的には、参考サイトにあるとおりで問題無いのですが、気を付けないといけない点が2点ありました。

1点目は、書き込むBootloaderのファイル。
optiboot_atmega328.hex を使う必要があります。書き込むファイルを間違えると、Arduino IDEでArduino Unoとして認識してくれず、作ったプログラムのマイコンボードの書き込み時に失敗します。

2点目は、Bootloaderの書き込み時の待ち時間。
書き込みには40分程度かかりました。avrdude-GUIが応答無しの状態となっても、基板のLEDがチカチカしている間は辛抱強く待つ必要があるようです。avrdude-GUIの問題だと思いますので、私はコマンドプロンプトから以下のとおり直接avrdude.exeを実行しました。
avrdude.exe -c diecimila -P COM3 -p m328p -P ft0  -u -e -U flash:w:optiboot_atmega328.hex

これだと、進捗が見えますので安心です。

補足)
単純ミスでした。Command line Optionに "B 115200" を追加したら一瞬で書き込むことができました。Arduinoをインストールしたフォルダの中にある/hardware/arduino/boards.txtの中に、書き込み時に指定すべきパラメーターが書かれています。

  • uno.upload.speed=115200
  • uno.bootloader.low_fuses=0xff
  • uno.bootloader.high_fuses=0xde
  • uno.bootloader.extended_fuses=0x05
  • uno.bootloader.file=optiboot_atmega328.hex
  • uno.bootloader.lock_bits=0x0F