AT90S8535でシリアル通信の部分を実装。
一応、送受信ともに割り込みを使って、リングバッファでバッファリングしている。
ただ、送信の部分は、割り込み要因がいまいちわからないので、
今のところはマスクしてある。
はまりどころしては、どこのサイトにも書いてあるけど、
・割り込みを全部許可するためにsei()を実行する
・シリアル通信のレジスタにも割り込み許可のレジスタがあるので、それも有効にする
(AT90S8535の場合、RXCIE・TXCIEあたり)
・割り込みと通常処理の両方で参照する変数は、volatileにしておくこと
・バッファを取りすぎると、すぐにデータ領域がなくなる
あたり。SHとかに比べれば、かなり素直だとは思う。
# もう、割り込みはこりごりというのが本音だけど。。。orz
# ここ半月ぐらい、いろいろなところで割り込みまわりに悩まされた。。。
割り込みはenableビットが予想外のとこにあったりするよね
こないだ自分も、シングルコアのボードなのに「マルチコア用の割り込み振り分けマスク」があって、引っかかったw
s_shogo - 2010-11-17 15:47:32
シングルコアのボードで,マルチコア用の割り込み振り分けマスク...w 嫌だなぁ.
最近,困ったのはPowerPCの割り込みだね.
PCI Expressの割り込みからPICに入って,カーネルがそれに反応してなかったり...orz
まぁ,機会があったら話しましょうw
yasuharu - 2010-11-18 09:38:45