はまったので、メモメモ
●現象
PIC18F25K22を使って、RasPiとUART通信をしているんだけど、
何回か通信すると、PIC側が送受信できなくなる
(電源入れて1回ないし2回はうまくいくけど、それ以降だめ)
●原因
どうもこれみたい・・・
PIC EUSART受信エラー処理
http://micom.hamazo.tv/e3286054.html
エラー( FERR または OERR)のとき、CRENを0から1にする必要有。
●対策
こんなかんじになる
(PIC18F25K22はUARTが2つ使える。今2番目を
割り込みして使っている)
●現象
PIC18F25K22を使って、RasPiとUART通信をしているんだけど、
何回か通信すると、PIC側が送受信できなくなる
(電源入れて1回ないし2回はうまくいくけど、それ以降だめ)
●原因
どうもこれみたい・・・
PIC EUSART受信エラー処理
http://micom.hamazo.tv/e3286054.html
エラー( FERR または OERR)のとき、CRENを0から1にする必要有。
●対策
こんなかんじになる
(PIC18F25K22はUARTが2つ使える。今2番目を
割り込みして使っている)
void interrupt InterReceiver( void ) { unsigned char RxData; /* エラー確認 */ if( FERR2 || OERR2 ) { CREN2 = 0; NOP(); CREN2 = 1; } /* 受信処理 */ if (RC2IF == 1) { RxData=RCREG2; RC2IF = 0; //my_process()が受信データ(RxData)の処理関数(自作する) my_process(RxData); } } |