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 制御可能なファンコントローラが作れそうだね。
| 固定リンク
「プログラミング」カテゴリの記事
- ListView の Height は WRAP_CONTENT を避けるべき(2015.12.23)
- プログラミングコンテストチャレンジブック(2010.09.27)
- 久しぶりに(2009.03.18)
- AVR-USB, hid-data(2008.11.24)
- AVR-USB、Tiny45 の internal RC oscillator で動作!(2008.11.08)
「H/W」カテゴリの記事
- sysbench をとってみた(2016.07.02)
- M4 から 850 PRO に変えた(2014.12.28)
- モバイルバッテリー(2014.05.14)
- LPCXpresso LPC11U68 が当たった(2014.02.11)
- Beaglebone Black に LCD を付けた(その3)(2014.01.26)
「AVR」カテゴリの記事
- V-USB を AtmelStudio 6 でビルドする(2013.06.19)
- AVR-USB is now V-USB(2009.04.22)
- AVR-USB, hid-data(2008.11.24)
- AVR-USB、Tiny45 の internal RC oscillator で動作!(2008.11.08)
- 78K0 AVR Writer(2008.10.26)
コメント