読者です 読者をやめる 読者になる 読者になる

H8で同期シリアル送信

組み込み

今日は、H8の同期シリアル送信ではまってました。

SCI0の送信をDMA0で行います。クロックは外部から供給です。

何とか送信出来るところまでは行ったのですが、しばらくするとハングしてしまいます。

こういう不安定な問題はやっかいです。

しかし、解決しました。

結局は、DMA0終了割り込みとSCI0送信エンプティ割り込みの両方をハンドラで受けることで解決しました。

DMA0終了割り込みはハンドラを作って受けていたのですが、SCI0はハンドラ無しでした。

SCI0の送信エンプティ割り込みはDMA0が受けるはずですから。

しかしDMAによる送信が終わったところでSCI0の割り込みがかかってしまうことがあるようです。

よって、SCI0の送信エンプティ割り込みもハンドラできちんと受けて、その中でSCI0の送信エンプティ割り込みをOFFにしてやる必要がありました。