ATmega88生活

ws☆Nak172基板で始めるATmega88生活

https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ws0.jpg


Hardwareについて

  • ここでは、WS#172基板を料理していきたいと思います。
  • まず、必要最小限と思われる部品を載せます。

https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ws1.jpg

  • 3.3V動作させたかったので、バスパワージャンパーJP1の表側2-3間をパターンカットして、ジャンパーの代わりに3端子レギュレータを実装しました。
  • 裏面は3端子レギュレータの真ん中の足をGNDに落としています。

https://raw.github.com/iruka-/ATMEL_AVR/master/web/jpg/ws2.jpg

  • ちょっと汚いですが、改造箇所は、表面の3端子のJP1 (2-3) パタンカット1箇所と、裏面のJP1 (2) GNDの2つです。
  • ポリスイッチR7は手持ちが無かったため、0Ω直結しています。
  • ZD1,ZD2は青色LEDで代用し、ZDとは逆極性(つまりLEDが点灯するように順方向)接続にしています。
  • 5V動作時は青色LEDがまばゆいほどに点灯しますが、3.3V動作では丁度良い明るさで点灯し、USBバスの動作の様子を表わしてくれています。
  • 3.3V動作させるので、ZD(もしくは代用LED)は省略可能です。(単に目視チェック用に点灯させているだけです)
  • スイッチは'L'のみを載せています。(bootloadHIDのユーザープログラム起動が出来ます)
  • PWR LED , BSY LEDはちゃんと実装しました。
  • 水晶はソケット式にして、差し替え可能(クロック変更自在)としました。





Softwareについて

第一弾:

HIDmonとbootloaderHIDの詰め合わせ

  • これは、bootmon-1127.zip のbootloaderconfg.hを書き換えて、USBの配線をWS#172に合わせただけのものです。
  • hidmon88.exeを起動して、PWR LED , BSY LEDを手動で点灯させることが出来ます。
  • bootloadHID.exeを起動して、ATmega88の応用領域6kBに任意のhexファイルを転送して実行させることが出来ます。
  • 実行後hidmonに制御を移す、あるいはリセットするという操作により、自作プログラムの実行後のメモリー内容 を読み出すことも出来ます。

注意:

  • ATmega328P用HEXをビルドするときはATmega328Pに対応したAVR-GCCが必要です。
  • ATmega88/168用HEXをビルドするときはWinAVRの20060421版もしくはそれに近いバージョンのコンパイラを使用します。(ファームサイズを2kに納める為です。)



Borland-Cに対応してみました。

Borland-C対応版HIDmonソース入り (ファームはmega328/644用です)



第2弾:

HIDaspx for ATmega88

注意:

  • ATmega328P用HEXをビルドするときはATmega328Pに対応したAVR-GCCが必要です。



第3弾以降の予定稿

  • キーボードまにあ!!!(スリー) for WS#172基板
  • microSD access TEST






ATmega328P/ATmega644Pのfuseについて。

  • 以下のように設定しています。

ATmega328P

E:\bootmon-ws172\bin>hidspx -d4  -rf
Detected device is ATmega328P.
Low: 11111111
     ||||++++-- CKSEL[3:0] システムクロック選択
     ||++-- SUT[1:0] 起動時間
     |+-- CKOUT (0:PB0にシステムクロックを出力)
     +-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8)
High:11-11000
     |||||||+-- BOOTRST (1:Normal, 0:BootLoader)
     |||||++-- BOOTSZ[1:0] (11:256W, 10:512, 01:1024, 00:2048)
     ||||+-- EESAVE (消去でEEPROMを 1:消去, 0:保持)
     |||+-- WDTON (1:WDT通常動作, 0:WDT常時ON)
     ||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ
     |+-- DWEN (On-Chipデバッグ 1:無効, 0:有効)
     +-- RSTDISBL (RESETピン 1:有効, 0:無効(PC6))
Ext: -----101
          +++-- BODLEVEL[2:0] (111:無, 110:1.8V, 101:2.7V, 100:4.3V)

ATmega644

Detected device is ATmega644P.

Low: 11110111
     ||||++++-- CKSEL[3:0] システムクロック選択
     ||++-- SUT[1:0] 起動時間
     |+-- CKOUT (0:CLKOにシステムクロックを出力)
     +-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8)
High:11-11010
     |||||||+-- BOOTRST ※データシート参照
     |||||++-- BOOTSZ[1:0] ※データシート参照
     ||||+-- EESAVE (消去でEEPROMを 1:消去, 0:保持)
     |||+-- WDTON (1:WDT通常動作, 0:WDT常時ON)
     ||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ
     |+-- JTAGEN (1:JTAG禁止, 0:JTAG許可)
     +-- OCDEN (JTAGデバッグを 1:無効, 0:有効)
Ext: -----101
          +++- BODLEVEL[2:0] (111:無し, 110:1.8V, 101:2.7V, 100:4.3V)