Top > blog > 2012-05-29

広告

FT232RLの問題

FT232RLが認識しないという問題があった。
正確には認識しないのではなく、一瞬認識してすぐに切断されてしまう現象。

[89967.666991] usb 6-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
[89971.127451] usb 6-1.2: usbfs: interface 0 claimed by ftdi_sio while 'brltty' sets config #1
[89971.127954] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[89971.127962] ftdi_sio 6-1.2:1.0: device disconnected

どうも「brltty」というのが悪さをしているらしい。
このページにあるとおり、root権限で

# killall brltty

とやったらこの問題は解決された

Category: [トラブル][USB] - 11:48:18

Arduinoの問題

前の記事でプログラムを書き込めないのはハードには問題なさそうと書いてしまったけど、実際には恥ずかしながらハードに問題があった (^^;
と言ってもArduino互換ボードに問題があったのでは無く、書き込み方法に問題があった。

TTLレベルで入力するところにRS-232Cレベルで入力してしまっていた。 (^^;
そりゃー

avrdude: stk500_recv(): programmer is not responding

って出るはずだ。

なぜこんなことになったかと言うとUSB経由でFT232RLで書き込む予定だったけど、FT232RLが認識しなかったので、USB-シリアル変換ケーブルで書き込みしてしまっていた。

それでも昔のボードに書き込めそうな雰囲気が出ていたので、気づかずに使ってしまっていた。

FT232RLを認識するようになったのでFT232RLから書き込んだら何の問題もなく書き込めた。

Category: [Arduino] - 11:43:50

Arduinoのブートローダーをコンパイル

久しぶりにArduino互換ボードを作り、ブートローダーを書き込んでArduino IDEからプログラムを書き込もうとしたら

avrdude: stk500_recv(): programmer is not responding

というエラーが出て書き込めない。
回路や半田など考えられるミスを探してみたがわからなかった。

ためしに以前作ったボード(動いていたボード)で試したが、今度は

avrdude: stk500_getsync( ): not in sync: resp=xxxx

というエラーが出てやはり書き込めない。

その以前作ったボードに再度ブートローダーを書き込んだら

avrdude: stk500_recv(): programmer is not responding

と新しいボードと同じエラーがでた。この辺でどうもハードの問題っぽくないかもと考えた。

もしかするとArduinoのバージョンが変わったためにうまくいかないのかと思い、再度ブートローダーをコンパイルした。ブートローダーのコンパイルに関しては、ここにまとめている

ところが新しくコンパイルしたブートローダーを書き込もうとするとエラーが出て書き込めない。
以前の同じブートローダーと比べてみるとサイズが2倍近くあった。

以前はちゃんとコンパイルできて、ちゃんと書き込めたのに今はできなくなっている。
ソースは変わっていないので、何かおかしい。

結局ブートローダーのコンパイルに関してはHow to: Compiling the Arduino Bootloaderに書いてある通り、ATmegaBOOT_168.cの584行目付近を

#if defined(EEPE)
               while(bit_is_set(EECR,EEPE));           //Wait for previous EEPROM writes to complete
#else
               while(bit_is_set(EECR,EEWE));           //Wait for previous EEPROM writes to complete
#endif

/*
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__)
               while(bit_is_set(EECR,EEPE));           //Wait for previous EEPROM writes to complete
#else
               while(bit_is_set(EECR,EEWE));           //Wait for previous EEPROM writes to complete
#endif
*/

と変える。これは「error: ‘EEWE’ undeclared」というエラーを出さないようにするため

そしてMakefileの52行目付近で

OPTIMIZE   = -Os
# OPTIMIZE   = -O2

と変える。これは上述したコンパイル後のhexファイルが以前のものの2倍近くになっているという問題を解決してくれる。

で、このようにコンパイルしたブートローダーを書き込むとうまく行く。

しかし、相変わらず

avrdude: stk500_recv(): programmer is not responding

というエラーが出てArduino IDEからプログラムを書き込むことができない

以前うまく行ったときとの違いはArduinoのバージョンとかavrdude関連だと思う

continue on: [Arduinoの問題]
Category: [Arduino][トラブル] - 01:33:00


広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Tue, 29 May 2012 01:33:00 JST (4343d)