Top > blog > 2012-06-02

広告

Optibootを使ってみる2

まだOptibootはうまくいっていない
とりあえずメモを兼ねてわかったことを書いていく

ググってもなかなか情報が見つからないので、ソースを直接見ることにした。

まず、デバックのために「LED_DATA_FLASH」をつけてコンパイルする。具体的にはMakefileで

atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DLED_DATA_FLASH=1' 

みたいにやる。これが定義されていれば、本来はLEDがつきっぱなし(または点滅?)になるはず。
でも、一回つくと消えてしまう。
このことが意味するのは、プログラム内の無限ループ

/* Forever loop */

と書かれている部分のどこかで止まっている。

ソースを書き換えて、必ず送信するようにする。そしてターミナルでシリアル通信すると、ちゃんと送信してくるので、RS232のスピードなどはあっているらしい。

で、どこで止まっているかを見ると、受信するサブルーチン「getch」で引っかかっている。もっと言うと

 while(!(UART_SRA & _BV(RXC0)))
   ;

という部分で抜け出せないでいるみたい。
ここは受信待ち(受信準備待ち?)のところみたい。

ということは、受信できてないってことか。
古いブートローダーでは問題ないのでハード的な問題ではなさそうだけど、何か設定の違いかもしれない。

とりあえず古いブートローダーのソースと見比べながら解決していこうと考えているけど、挫折するかも。

Category: [Arduino][トラブル] - 09:36:29


広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sat, 02 Jun 2012 09:36:29 JST (4317d)