広告
#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()
広告 |