基板は 20日コースだが、MEGA32U4が入手できるのはもっと先。デジキーのリードタイムは、4/25 になっている。
追記: これは、2010年2月の記事。2011年 10月現在は、潤沢な在庫があり(在庫数量 20,939) 入手に問題はない。→ 商品ページ
1 個 511 円。25 個 8,010 円(単価 320円)。
国内では、スイッチサイエンスが扱っている。→ 商品ページ
480 円 。送料は、180円。数個だけ入手したいなら、こちらの方が安くつく。
USB の制御は、いままで作ってきた AT90USB162 のものがほとんどそのまま使えるはず。エンドポイントの数が増えるのがとても嬉しい。
これで、いんちきをしなくとも CDC + マスストレージクラスのデバイスが作れる。
それ以外にも魅力は多い。
まず、ADC 。x10,x40,x200 の利得つき差動入力ができる。また、採取した値を USB でホストに送るのも問題ない。USB のバッファは 最大256 バイトと大きく、ダブルバッファも可能なので、13 us 毎に変換したとしても途切れなく送れそうだ。
ただし、差動入力ができる ADC のピンには制限がある。ADC0,1間 か ADC0,1 と ADC4-7 間のみ。
次に PLL 入力 の高速 PWM 。PLLは USB と兼用なので、USB を使う前提なら 48MHz or 96MHz(5V の場合のみ)で発振させる必要がある。これを 1/1 ,1/1.5 , 1/2 に分周したものをクロック入力にできる。
3.3V だとたぶん 32MHz/48Mhz あたりまで。運が良ければ 64MHz も使えるかも知れない。
それはともかく。Tiny45(8pin のやつ) とか Tiny861 とかで使えている機能が MEGA32U4 でも使えるわけだ。しかも 10bit が可能で 3ch分ある。サウンド用として使うのが楽しそうだ。
ちなみに、PLL の周波数は、32/40/48/56/64/72/80/88/96 MHz。 USB につながない用途も想定しているらしい。... ただ半端な周波数に出来たとして何に使えるのだろう?
さて、設計したボードについて



eagle データ: dac23-u4.zip
更新版3: dac23-u4-05.zip
Fusion PCB 提出用: dac23-u4-05-fusion.zip
(スルーホールまでレジストしないよう修正)
更新版2: dac23-u4-04.zip
Fusion PCB 提出用: dac23-u4-04-out.zip

(1) NOISE 端子を PF6 に接続できるよう修正 (追記参照)
(2) 使っていない PF6/PF7/PC6 を CN5 に出すことにした。
更新版1: dac23-u4-03.zip
EzPCB 向けに (1) Pad - Wire 間のクリアランスを 0.2mm → 0.235mm に変更 (2) ポリンゴンの Isolate を 0.254mm に設定。
ついでに 、(3) TAR5SB の放熱対応。
更新版: dac23-u4-02.zip
アニュアリングを 0.15mm から 0.2mm に変更。ついでに、dac23 とフィルタボードも更新して添付。
まず電源。3.3V のレギュレータ TAR5SB33を使って 3.3V 駆動にしようと思う。ついでに NOISE 端子を ジャンパで AREF につなげるようにしておく。
AREF の デカップリングコンデンサは、0.01uF 〜 0.1uF 。0.1uF だと電源が立ち上がるのに 1m sec ぐらいかかる。.. が 水晶用に 立ち上げ時間を 最遅 の 65m sec にするので問題ない。
ちなみに、入力用コンデンサは 10uF 。USB の VBUS 用は、10uF が良いらしい。MEGA32U4 のデータシートで強く推奨されてた。
3.3V だと 16MHz はオーバクロック。だが、たぶん大丈夫だろう。たとえ だめでも CLKPR で 1/2 して 8MHz にできるのだから問題ない。
ただ、PLL の 96MHz とか タイマー4 の 64MHz 駆動とかは怪しいかも。このあたりは、最初は 48MHz で。
5V にするのは簡単で、レギュレータをバイパスすれば良い。当然このときは NOISE を基準電圧にはできない。
問題は 外部に出す信号。DAC23 ボードに接続するのを前提にしているので、条件がある。

- CONN1
1 NC
2 SDA PD1 (I2C マスタ)
3 SCL PD0 (I2C マスタ)
4 XCK PD5 (DAC BCLK)
5 OC0A/OC1C PB7 (DAC LRCIN)
6 TXD PD3 (DAC DIN)
7 RXD PD2 (DAC DOUT)
8 PD6
9 OC4D PD7 (DAC MCLK)
10 GND
こんな割り当て。PORTD 中心だが綺麗にはならない。PB7 が入るのは、どうしても 違うタイマの PWM が使いたいから。 - CONN2
1 VCC
2 GND
3 NC
4 OC4A PC7 (DAC PWM)
5 (AREF)
6 ADC5 PF5
7 ADC4 PF4
8 ADC1 PF1
9 ADC0 PF0
10 GND
4 番は、サウンド出力用 PWM 。5 番は NC だが ジャンパで AREF を外に出せるようにしておく。6-9 番 の 4pin が ADC で、説明した条件があるので、ADC 0145 の選択。 - CONN3
1 MISO PB3
2 SCK PB1
3 MOSI PB2
4 RESET/SS PB0
5 GND
ISP と SPI 。RESET/SS は、スライドSW で切り替え。
いつも混乱するのだが、mega 系の SPI だと、SPIとして使う場合、MISO は 入力で、ISP では 出力。Tiny 系の USI では、入出力は切り替わらない。ISP に合わせて、この配置にしている。
PIN 数が多いので、専用の割り当て。 - CONN4
1 GND
2 VCC
3 PB6 (OC1B / OC4B / ADC13)
4 PB5 (OC1A / ~OC4B / ADC12)
とりあえず I2C マスタ用の割り当て。だが、PWM とか ADC 機能も使えてしまう。 - LED
右 PB4
左 PD4
2色LED の SEC2004 シリーズ(pdf) 用のパターンにしている。秋月だと SEC2764Cが入手可能。1608 サイズで好きな組み合わせにしても良い。
これ以外に SEC2002 シリーズとかもある。いつ買ったのか 手持ちに SEC2492C (橙・緑)があったりする。SEC2004 が指向性アリのタイプだそうだ。
パーツリスト
R1,R2 22 (2012/1608) : USB用 (保証外だが 47 でも行けた)
R4 33K (2012/1608) : HWB 用
R5 3.3K (2012/1608) : HWB 用
R64701K (2012/1608) : LED 左用 (SEC2764: 高輝度赤)
R7150470 (2012/1608) : LED 右用 (SEC2764: 黄)
J1,J2 0 (2012/1608) : ジャンパ
C1 10u (2012) : レギュレータ入力用 (VBUS 用)
C2 10u (2012) : レギュレータ出力用
C3,C4 18p (2012) : 水晶用
C5 0.1u (2012) : AVCC パスコン
C6 0.1u (2012) : AREF 用
C7 1u (2012/1608) : VCC 出力用
C8 1u (1608) :UCAP用
C90.01u0.1u (2012) : レギュレータノイズ用
ATmega32U4-AU とチップ抵抗・コンデンサ 以外は秋月で入手できる。まぁ CPU 載っけただけのボードだからある意味当然かも知れない。現時点でチップを入手できる所は、chip1stop のみ。
結局デジキーで購入 - 2010/12/25 入手
2011/1/6 追記: デジキーで現在在庫している。-- 在庫しているのを初めて見た。価格は 1 個 562円。(25個なら 単価 344.2円)
arduino 関係<のメモ
Teensy-2.0 という ATmega32U4 ボードがあるが、Teensyduino という Arduino IDE の アドオンを出している。
4月末に出る学研の Japaninoも基板のパターンを見る限り ATmega32U4 っぽい。少なくとも mega88 系ではないから、なんらかの アドオンを付けるのだろう。
Metaboard の 「Metaboard for Arduino Users」の項目を見ると、hardware/boards.txt を書き換えることで、カスタマイズができるっぽい。
ググってみると、Arduino Build Processなんてページがあった。ちゃんと見ていないが、ビルド と 書き込みのカスタマイズは比較的簡単そうだ。(ただし、ATmega32u4 などは使い込まれていないので、avr-libc にいろいろバグがありそう。Fix するのは少々面倒かも知れない。)
問題はライブラリ。ちゃんとしたものを用意するのは骨が折れそうだ。まぁ、Japanino が もし ATmega32u4 なら 乗っかれば良いわけで、あまり苦労しないのかも知れない。
... 基板が出来たら チップをすぐ入手したくなるわけだが、 Japanino が出るまで ゆっくり待つのが吉だと思える。
2010/12/29 追記: 結局 Japanino は ATmega32U4 にならなかった。いまのところ 市販 ATmega32U4 ボードは、Teensy-2.0 と Atmega32u4 Breakout Board+ -ぐらい。
追記:基板ができて来た。


基板ができたのは良いのだが ... 肝心の ATmega32u4 の リードタイムが 04/24 から 06/12 に延びている。値段は 変わらず 473 円。Japanino も ATmega32u4 ではなくなったらしいし。うーん。
リードタイムがさらに延びている。なんと 8/29 。どういうこと?
追記: 2010/12/9
いつまでたっても在庫がない状況がずっと続いている。 今のリードタイムは 2011/1/23。
1 ヶ月以上先だが、90日までは待つという条件にして発注をかけた。これだけ入手で待たされるわけだから思い切って 25 個(単価 352.92 円 / 合計 8,823円)。これだけで 7500円以上 10000円未満の価格。
このボードがようやく作れることになる。
12/22 予想外に早く発送された。それは良いのだが微妙な時期に届きそう。... と思っていたら 25日に届いてしまった。
追記: 2010/12/28 ボード製作完了。自作USBライブラリの移植中。


- RC の値は 回路図とは違うものを使っている。
- USB の 22 Ωは 手持ちの関係で 47 Ωを使った。
- LED は SEC2764Cを使ったが、赤 1KΩ / 黄色 300Ω。(黄色が明るすぎ 470Ωにすべきか)
- TAR5SB33の NOISE用コンデンサは 0.01uF ではなく 0.1uF を使用。
- FUSE MICROSMD010 は結局使わず 。ショートでも問題ないが、TAR5SB33 の負荷を下げるために ダイオードにした。-- レギュレータの前に 数Ωの抵抗 と ダイオードを入れるような使い方は 割と一般的らしい。
- USB の 22 Ωは 手持ちの関係で 47 Ωを使った。
- 一応は動いたのだが、少々おかしい。USB で接続できないことが多い。ただし、接続できたらちゃんと動くようだ。ブートローダも動いた。
- angel_loader-1.2a.zip (usb162/mega32u2 用のブートローダと ライタ のおまけ)
いろいろ調べていて気がつたのだが、ATmega32u4RC ってのがあるらしい。USB のクロックは、±0.25% の精度が必要だが、内臓RC の設定で出荷される。
ヒューズの初期値をマニュアルと比べてみた
実際の値 無印 RC - efuse 0xf3 0xf3 0xfb
- hfuse 0x99 0x99 0x99
- lfuse 0x5e 0x5e 0x52
- lockbits 0x2c 0xec(0x2c) 0xff(0x3f)
RC版には、ブートローダは入っていないようだ。たぶん USB は動かないのだろう。
lockbits が違うと思ったが avrdude が 6bit しか表示しないためだった。 0x2c の意味は、外部からの FLASH, EEPROM の読み書きができず、 fusebit の書き換えもできない。SPM 命令を使っての ブートローダの書き換えも出来ない。
atmel のブートローダは、lockbit のルールを守るようになっていて、ブートローダ自体も読めないようにしている。
ブートローダのバックアップを取るには、自作ブートローダをアプリケーションとして動くようにすれば良いのだが、ちょっとだけ面倒。32u4 は、ブートローダが公開されているので消しても困らないのだが、公開されていない 32u2 で chip erase してしまうと元に戻せないので注意。
それはともかく、32u4 は楽しいチップだ。USB の エンドポイントが多いのも嬉しいし、ADC や 高クロックPWM の機能があるのも良い。
追記: 電源関係のメモ
32U4
例1 例2
VBUS 5V 5V USB VBUS 検出用
UVCC 5V 5V 内蔵レギュレータ入力 (3.4V 以上)
UCAP 内蔵レギュレータ出力 - USB D+/D- 駆動
(VCC に出力不可)
AVCC 5V 3.3V VCC と同じ電圧 (PLL駆動 を含む)
VCC 5V 3.3V 4.5V 〜 5.5V (16MHz) / 3.0V 以上 (8MHz)
内蔵レギュレータ: 80mA まで(4.0v 入力時) / 55mA まで (3.4V 入力時)
電源がやたらあるが、こういう役目らしい。内蔵レギュレータ出力(UCAP)を VCC に接続できないのはデフォルト Off だから。UVCC を無接続にして、UCAP に 3.3V を給電しても良い。
32U2/USB162 (参考)
例1 例2
UVCC 5V 5V 内蔵レギュレータ入力 (3.4V 以上)
UCAP 内蔵レギュレータ出力 - USB D+/D- 駆動 + PLL駆動
(VCC に出力可)
VCC 5V 3.3V 4.5V 〜 5.5V (16MHz) / 3.0V 以上 (8MHz)
内蔵レギュレータ: 100mA まで(4.0v 入力時)
ATmega32U2/AT90USB162は結構シンプル。UCAP から VCC に給電可能。これはデフォルト ON。
UVCC を無接続にして、UCAP に 3.3V を給電しても良いのは同じ。
レギュレータの前に 数Ωの抵抗 と ダイオードを入れるような使い方は 中華フォトフレームを分解したとき学んだ。電圧をできるだけ落としておいた方が レギュレータの負荷を減らせ電流を流せる。今回は、Vf が大きく電圧降下自体を目的に買った 1SS352 をヒューズのところに入れてみた。ただ定格が 100mA で レギュレータの定格より小さいので本末転倒。4.7 Ω (1/4W) なら 200mA で 0.94V の電圧降下なので 都合が良いかも。
追記: AREF についてのメモ
レギュレーターに NOISE 端子がある TAR5SB33 を使用しているが、J2 をジャンパすることで、NOISE 端子を AREF に接続できるようにしている。
NOISE 端子には、TAR5SB33 内部基準電圧用のデカップリングコンデンサを接続するが、データシートの 容量と 立ち上がり時間の関係のグラフからみて 20KΩ前後の 出力インピーダンスのようだ。
1uF を接続すると 立ち上がりに 70ms かかる。立ち上がりが 1% - 99% に要する時間だとすると、その時間は、
(ln 0.99 - ln 0.01) x RC
で計算でき、15K Ωという値になる。このような抵抗値だから、J2 には数百Ωまでの抵抗を使っても良い。
一方 32u4 の AREF の入力インピーダンスは 32kΩだそうだ。大丈夫だとは思うのだが一回確認しておかないといけない。
また、J2 をジャンパすると ADCの基準電圧の設定では、内部基準電圧や VCC を設定してはいけない。その場合 AREF は出力になる。そうしてしまうと TAR5SB33 の基準電圧が上がり VCC の電圧も上がってしまうはず。32u4 のVCC の電圧は 5V でも問題ないので、壊れるということはない。いったいどうなるのか、一度確認しておかないと。
確認してみた:
手持ちのテスターでは、J2 無接続時 NOISE 1.280V / VCC 3.260V だった。で、J2 を 470 Ωで接続してみた。あと内部基準電圧は、2.488V -- 多分実際より低めの値。1% 低いとみなして、x1.01 すると 1.293/3.293/2.513 。
接続するだけなら問題はない。が ADC を enable にすると BOD リセットがかかるようだ。AREF の入力インピーダンスは やはりこの値で、NOISE の電圧が下がり、VCC の電圧も下がる。
一方 内部基準電圧 2.56V を enable にすると VCC が 4.08V まで上がった。テスターなので分かるのは平均電圧のみ -- 発振しているかも知れない。
結論としては、J2 は接続すべきではない。ただ NOISE 端子には一定の電圧が出ているので、AREF ではなく、ADC(入力インピーダンス 100MΩ) につなぎ 内部基準電圧を校正するのには使える。
ボードを改修することにした:
PF6/PF7 は無接続なのでこれを、J2 に来ている NOISE 端子につなぐ。なぜ 2 つも使うかというと、PIN の中央にケーブルをハンダ付けするのだ。プログラムでは PF6を使うが、PF7もデジタル入力禁止。
追記: 2011/1/2 ADC 使ってみた。
- angel_loader-1.2b.zip (usb162/mega32u2 用のブートローダと ライタ のおまけ)
serjtag も入れておいたのだが、そのおまけ機能で ADC を読み込む機能がある。これを 32u4 用に作り直した。
テストプログラムも添付しておいた。
$ adctest.exe
ADC_RANGE_V256 | ADC_CHAN_VCC : 1.28992
ADC_RANGE_V256 | ADC_CHAN_VCC : 1.28992
ADC_RANGE_V256 | ADC_CHAN_VCC : 1.28992
ADC_RANGE_V512 | ADC_CHAN_VCC : 1.28992
ADC_RANGE_V512 | ADC_CHAN_VCC : 1.28992
ADC_RANGE_V512 | ADC_CHAN_VCC : 1.28992
ADC_RANGE_V256 | ADC_CHAN_TEMP : 0.54727
ADC_RANGE_V256 | ADC_CHAN_TEMP : 0.67383
ADC_RANGE_V256 | ADC_CHAN_TEMP : 0.67383
追記: 2011/1/3 angel_loader-1.2c
- angel_loader-1.2c.zip (usb162/mega32u2/mega32u4 用のブートローダと ライタ のおまけ)
USB の接続がうまくできるようになった。ブートローダと ライタの初期化で LEDの点灯のさせかたで、USB RESET がかかるのを分かるようにしてみているのだが、これでも 何回か RESET がかかっている。
ところでこのボードは、DAC (dac23 ボート)と接続するのをメインに設計したのだが、後で これと接続できる XMEGA ボードも作った。(接続するのは、PDI とシリアル) ちょうど PDI のテスト中なので、接続して PDI のテストをこちらに移そうかと思っている。
というわけで 1.2c の uspasp2 ライタの 設定を次のように変えた。- ISP : SS(PB0) /SCK(PB1) /MOSI(PB2) /MISO(PB3)
- PDI : SDA(PD1) = PDI_DATA, SCL(PD0) = PDI_CLK), TX(PD3) = DIR(ロジアナデバッグ用)
- TDI : 未サポート(RESET 出力を割り当てたくなかったので)
これが現状の接続図。
開発用に組んだところ、下のが XMEGA ボード(L28A3) で、PDI とシリアルが接続されている。その状態で ISP 用のケーブルを付けて 普通のAVR のライタにもなる。 - ISP : SS(PB0) /SCK(PB1) /MOSI(PB2) /MISO(PB3)