Top > blog > 2012-06-02 > Optibootを使ってみる2

広告

#blog2navi()
**[[Optibootを使ってみる2>blog/2012-06-02/Optibootを使ってみる2]] [#sd439c99]
LEFT:continue form: [[[Optibootを使ってみる1>blog/2012-06-01/Optibootを使ってみる1]]]

まだ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)))
    ;
という部分で抜け出せないでいるみたい。~
ここは受信待ち(受信準備待ち?)のところみたい。

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

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

RIGHT:continue on: [[[Optibootを使ってみる3>blog/2012-06-09/Optibootを使ってみる3]]]
RIGHT:Category: [[[Arduino>blog/Category/Arduino]]][[[トラブル>blog/Category/トラブル]]] - 09:36:29
----
RIGHT:&blog2trackback();
#blog2navi()

広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS