wiki:32u4bb

Version 21 (modified by sgk, 7 years ago) (diff)

--

ATmega32U4ブレークアウトボード

ご自宅リフローお試しキットで作ったボードです。

概要

ATmega32U4の乗った単純なボードです。 ATmega32U4には、工場出荷時からブートローダが書きこまれていて、DFU機能を実現しています。 DFUというのは、USB経由でファームウェアを書き込むことを可能にする機能です。 AVR ISP mkIIのような書き込み装置が要らないのが魅力的です。

ただし、DFUではブートローダ自体を書き換えることはできません。 Arduino Leonardo互換にしたい場合は、LeonardoのブートローダをAVR ISP mkIIなどで書き込んでください。

このボードのエッジには、Arduino Leonardoで使用するピンを出してあります。 ピンの名前のシルク印刷はLeonardoに準拠したものですが、一部異なります。 これは、このボードの製造後にLeonardoのピンの定義が変更されたためです。 特に、A6以降が異なるでしょう。ご注意ください。

DFUの動作サイクル

ボード裏面にHWBというソルダジャンパが有り、出荷時はショートしてあります。 ショートしてある場合は、以下のような挙動を示します。 (HWBは「Hardware Bootloader」の略です。)

何もファームウェアが書き込まれていない時

  1. USBに接続する
  2. DFUが有効になる

何らかのファームウェアが書き込み済みの時

  1. USBに接続する
  2. 書きこまれているファームウェアが動く
  3. リセットボタンを押す
  4. DFUが有効になる

ウィンドウズ

Atmelが提供しているFLIPというソフトウェアを使います。 これをインストールしてから、このボードをパソコンに接続してください。

ドライバファイルが自動的に見つからない問題が発生しているようです。 その場合には、ドライバファイルを手動で指定してください。 ドライバファイルは、「C:\Program Files\Atmel\Flipバージョン番号」以下に有るようです。

ファームウェアを書き込むには、以下のように操作します。

  1. 一番左のアイコンをクリックして、チップを選択します(ATmega32U4を選んでください)。
  2. 右から3番目のアイコンをクリックして、HEXファイルを読み込みます。
  3. 二番目のアイコンをクリックして出てくるメニューからUSBを選択します。
    • 「USB Port Connection」というダイアログが現れるので、「Open」ボタンをクリックします。
  4. 「Operation Flow」の項のチェックボックスが全てチェックされている事を確認し、「Run」ボタンをクリックします。

ファームウェアを書き込んだら、USBから一度抜き差しすると、ファームウェアが動きます。 Flipの「Start Application」ボタンをクリックするのでもいいはずなんですが、うまくいかない事があります。 書き込むファームウェアによるように感じます。

Linux

dfu-programmerを使います。 インストール方法は、Linuxのディストリビューションごとに違うので、適切な方法でインストールしてください。 たいてい、コンパイル済みのパッケージが用意されているでしょう。

  1. dfu-programmer atmega32u4 erase
  2. dfu-programmer atmega32u4 flash HEXファイルのファイル名
  3. dfu-programmer atmega32u4 reset

これでファームウェアが動き出します。 もしも動かなかったら、USBから一度抜いて挿しなおしてください。

Mac OSX

Linuxと同じく、dfu-programmerを使います。 インストールするには、「sudo port install dfu-programmer」コマンドを使います。

いや、その前にportコマンドをまだインストールしていない人はインストールしてください。 インストール方法はここにありますが、英語です。

お試しファームウェア

とりあえず、キーボードのふりをするファームウェアを載せておきます。 HelloArduino.hexをダウンロードして、書きこんでみてください。 定期的に勝手にキーボードを叩いたふりをします。

さて、これをどうやって作ったか。 一番簡単な方法をお教えします。

  1. ここからArduino IDEの最新ベータ版をダウンロードしてインストールします。
  2. Arduino IDEを起動し、以下のコードのスケッチを作ります。
    void setup() {
    }
    
    void loop() {
      Keyboard.print("Hello Arduino ");
      delay(1000);
    }
    
  3. 「スケッチ」メニューの「検証・コンパイル」を実行します。
  4. TempディレクトリのどこかからHEXファイルを探します。
    • ウィンドウズなら、「C:\Users\ユーザ名\AppData\Local\Temp」フォルダを開いて、検索窓で「hex」を検索します。
    • Mac OSXなら、「/tmp」のどっかですかねえ。

もうひとつお試し

MouseTest.hex

int phase = 0;
int full = 100;
int radius = 100;
int delay_msec = 2;

int x = radius;
int y = 0;

void setup() {
}

void loop() {
  ++phase;
  phase %= full;

  double th = 3.141592 * 2 * phase / full;
  int xx = radius * cos(th);
  int yy = radius * sin(th);
  Mouse.move(xx - x, yy - y, 0);
  x = xx;
  y = yy;
  delay(delay_msec);
}

勝手にぐるぐる回る迷惑なマウスです。

(2011/11/26)

Attachments (7)

Download all attachments as: .zip