お世話になっております。
/*参考
*
* CAN/LIN/UART/PORT Checker for RL78/F14
* Target: QB-R5F10PPJ-TB (RL78/F14, 100pin, 256KB ROM, 20KB RAM)
* Author: Yasushi Tanaka
/
移植RL78/F13 評価ボード(QB-R5F10BMG-TB)
開発環境: e2-studio7.4
toolChain: Renesas CC-RL C
デバッグツール: e2-Lite
/* CANの割込(vector.c)の設定 */
#pragma interrupt intcan0err_isr(vect=INTCAN0ERR, bank=RB1)
#pragma interrupt intcan0trm_isr(vect=INTCAN0TRM, bank=RB1)
#pragma interrupt intcangrfr_isr(vect=INTCANGRFR, bank=RB1)
#pragma interrupt intcangerr_isr(vect=INTCANGERR, bank=RB1)
現象は、
送信割り込みを使ってCAN送信しようとしますが、
CAN0のスロットにデータは入っても(確認済)、割込のルーチンintcan0trm_isr()は呼び出されません。
下記のように割り込みが許可されていて問題なさそうに見えますが。
/* CAN0送信割り込みを許可 */
MK2H &= (u1)(~RL78F_MK2H_CAN0TRMMK);
考えてられる原因は何でしょうか、ヒントをいただければ助かります。
よろしくお願いします。
(ちなみに割り込み使わずにCAN APIを使って通信は確認できています)
ikkiさん NAKAです。
CANでトラブった経験がそんなに無いので、アドバイスが難しいかも?ですが終端処理とかしっかりしてますか?
一応、朝から北斗電子のF14ボード引っ張り出し、プロジェクトにぺたんと貼って動かしてみましたが、やはりエラーは出ませんし、
データに 「TMDF30H = c_TX; //送信DATAバッファ0にDATAをSET!」とかしてモニタしても当然、カウンタ値は抜けませんし......
ハードなのかなぁ~???
唯一
極まれにエラーフレームが発生する!という事例で調査したことがあって
原因と思われるのが、
基板実装屋さんが電源のコンデンサを指示したものと間違えてESRの高いものが実装されてたことがありました。
電源ICのカタログでは
のようにESR3Ω以上だと安定領域から外れる恐れがあり、ついていたアルミ電解は
のようでさらに温度特性で低温になるとさらに悪化するらしいです。
実際の波形が
このように負荷電流の変化がトランジェント応答に現れちゃってる感じになったことがあります。
これでも、CANの規格は十分に満足しており、実機での評価中は2日間一度もエラーフレームは発生しませんでした。
極低温の環境だと可能性があるのかもしれません。
そして、当初に設計したコンデンサを実装したところ
このように電源も波形も安定して、その後そういった報告は無いと聞いております。
もう一度確認ですが、先のサンプルに一切手を加えない状態でエラーがあるのでしょうか?
だとやっぱり、ハード?