AVRのシリアル通信のはまりどころ

AT90S8535でシリアル通信の部分を実装。
一応、送受信ともに割り込みを使って、リングバッファでバッファリングしている。
ただ、送信の部分は、割り込み要因がいまいちわからないので、
今のところはマスクしてある。

はまりどころしては、どこのサイトにも書いてあるけど、

・割り込みを全部許可するためにsei()を実行する
・シリアル通信のレジスタにも割り込み許可のレジスタがあるので、それも有効にする
(AT90S8535の場合、RXCIE・TXCIEあたり)
・割り込みと通常処理の両方で参照する変数は、volatileにしておくこと
・バッファを取りすぎると、すぐにデータ領域がなくなる

あたり。SHとかに比べれば、かなり素直だとは思う。

# もう、割り込みはこりごりというのが本音だけど。。。orz
# ここ半月ぐらい、いろいろなところで割り込みまわりに悩まされた。。。

Posted at : 2010-11-17 02:00:25 / Category : none

Comments

割り込みはenableビットが予想外のとこにあったりするよね
こないだ自分も、シングルコアのボードなのに「マルチコア用の割り込み振り分けマスク」があって、引っかかったw

s_shogo - 2010-11-17 15:47:32

シングルコアのボードで,マルチコア用の割り込み振り分けマスク...w 嫌だなぁ.

最近,困ったのはPowerPCの割り込みだね.
PCI Expressの割り込みからPICに入って,カーネルがそれに反応してなかったり...orz

まぁ,機会があったら話しましょうw

yasuharu - 2010-11-18 09:38:45

Send comment


Name


Mail-address (empty is OK. If you want to notify update, please fill mail-address.)


Bot check code (241224 と入力してください / Please input 241224.)