« やっと復活 | トップページ | AVR-USB, hid-data »

2008.11.08

AVR-USB、Tiny45 の internal RC oscillator で動作!

AVR-USB のサンプルの hid-data を、Tiny45 で internal RC oscillator を使って動作させる事ができた!

AVR-USB の HP に、
> New: Internal RC Oscillator Supported
と書かれている通り、avrusb-20081022 では、internal RC oscillato がサポートされているはずなのだが、libs-device フォルダに入っているソースを使おうとすると、コンパイルエラーが出たりして、ちょっとハマっていたのだった。

結局、EasyLoggerのソースから一部を持ってくることで動作させる事ができました。


以下、詳細。

■hid-data/firmware/Makefile
 □DEVICE=atmega168 → attiny45
 □F_CPU=16000000 → 16500000
 □FUSE_L= → 0xe1 (make fuse で書き込まないのであれば関係無い)
 □FUSE_H= → 0xdd (make fuse で書き込まないのであれば関係無い)

■hid-data/firmware/usbconfig.h
 □USB_CFG_IOPORTNAME D → B (Tiny45 には PortB しかないからね)
 □USB_CFG_DMINUS_BIT 4 → 0 (適当な port でいいはず)
 □USB_CFG_DPLUS_BIT 2 → 2 (INT0 の必要があるのでそのまま)

 □/* #define USB_RESET_HOOK(resetStarts) ... */
  の代わりに
  -----
  #ifndef __ASSEMBLER__
  extern void usbEventResetReady(void);
  #endif
  #define USB_RESET_HOOK(resetStarts) if(!resetStarts){usbEventResetReady();}
  -----
  を追加

 □USB_CFG_HAVE_MEASURE_FRAME_LENGTH 0 → 1

■hid-data/firmware/main.c
 □以下の2つの関数を EasyLogger の main.c から持ってきて追加
  (libs-device フォルダの中にもあるが、
   /**/ が2重になっててエラーが出たので、面倒なのでコピペした。)
   
   -----
   static void calibrateOscillator(void)
   {
    ...
   }
   
   void usbEventResetReady(void)
   {
    ...
   }
   -----

これで、USB Device として認識されました。


あと残りは 3 pin だけだけど、ADC で温度取得、PWM で電力制御、GPIO で回転数検出、の3つは出来るので、USB 制御可能なファンコントローラが作れそうだね。

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

|

« やっと復活 | トップページ | AVR-USB, hid-data »

AVR」カテゴリの記事

「H/W」カテゴリの記事

「プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/20208/43052294

この記事へのトラックバック一覧です: AVR-USB、Tiny45 の internal RC oscillator で動作!:

« やっと復活 | トップページ | AVR-USB, hid-data »