avr-gccのバグらしき現象にぶち当たりました。

現象は、USARTの受信データ読み込み関数を関数を呼び出す所と異なるファイルに定義していると連続受信時にリセットがかかったかの様な状態になる事です。

MCU状態レジスタ(MCUSR)の値を出力してリセット要因を見てみましたが、リセットされた形跡がありません。なのでJMP命令等で突然飛ばされている感じです。割り込みは禁止にしっぱなしなので割り込み関連ではないと思われます。

今のところ、USART受信関数の位置を変更するだけで現象が発生しなくなっているが、本当の原因が何なのか分っていないのでいつまたこの現象に遭遇するか心配です。

現象発生前後で大きくプログラムの構成を変えたので原因解明に1週間以上を費やしてしまいました…。原因を追い詰めたファイルを置いておきます。


開発環境:WinAVR-20090313
使用マイコン:ATmega644P
使用リソース:USART 0ch(非同期、19200baud)

現象発生ソースコード: winavr_usart_bug_generate.zip
現象発生しないソースコード: winavr_usart_bug_not_generate.zip


追記 2009.06.10
バグではなかったみたいです。
詳細はこちら
スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
06 | 2018/07 | 08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux 6P43P トランジスタ式ミニワッター TRminiWatterPart4 MPD FON2405E DAC OpenOCD 6P43P-E buildroot イーサネットコンバータ 全段差動プッシュプル 三段化 BeagleBoneBlack FM3ペリフェラル ODROID-U2 library FM3評価ボード mingw OpenGL ミニワッター bitbake KiCad 計測 プリアンプ Edison VMware FM4 6N6P シングル TL-WR700N 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter