V850E2/FK4でUARTドライバ

お世話になります。

表題のとおり、V850E2/FK4を利用して調歩同期通信(UART)ドライバを作成していますが、うまく動作せず、皆様のご意見をいただければと思い、投稿させていただきます。
ソースは→におきました。 https://gitlab.com/snippets/1661521

# 簡単な経緯

既存のプロジェクトで使っていた基板を流用して性能テストをやろうという話になり、テストのためには対話的なインターフェースが欲しいね、ということでUARTを載せることになりました。

# 設計方針

V850E2/FK4の場合、RenesasのホームページにUARTのサンプルコードが存在せず、ハードウェアマニュアルを見ながら作成しました。
UARTはUARTEのみで、LINコントローラと結合しているようで非常に分かりづらかったのですが、なるべくLINに触らないようにと思い、LINコントローラでいうUARTスルーモードとして設定することにしています。

# 現状の動作

既存プロジェクトに添付のコードを入れて動作させましたが、d_uart_putcで出力すると最初の一文字だけ出力され、以降出力されない状況です。
期待する動作としては、d_uart_putcの実行時に送信割り込み(URTE11TIT)が発生するつもりだったのですが、割り込み関数でブレークを張ってもここには到達しない状況です。
当然ながら、d_uart_getcで入力待ちしても、同様に割り込みが発生しないため受信は一切動作していません。
PCから入力して、マイコンの足まで波形が届くか等、ハードウェア的な動作は確認できています。

また、d_uart_putcを実行するコードを追加すると、途中で実行に失敗(?)して以降正常な動作ができない状況に陥っているようです。
(デバッガで停止すると、逆アセンブルコードの無いアドレスを実行している。。

一文字とはいえ出力はできているので、設定はできていると思いますが、割り込みの設定の仕方に問題があるような気がしています。
うまく動作しないのは、存在しない割り込みが発生しているためではないか、、等と考えて調査中です。

ご意見等いただけましたら幸いです。

Parents
  • わわいです
    まずは、割り込みを全く行わないで送信/受信ルーチンを書いてはいかがでしょうか。
    割り込みを使用しようとすると、ベクタ設定やら初期設定やらがからんでくるので、初めてでは敷居が高いと思います
    送信であれば、送信レジスタの空きチェック、および空き待ちのループ後送信レジスタにデータ設定する、だけでいけます。
  • わわい様

    ご回答ありがとうございます。
    ハードウェアマニュアルを見る限り、割り込みを利用する方法しかかかれていないように感じたので、このような形になっています。

    先ほどいただいた回答でひとまずは解決したので、とりあえずこのまま進んでみようと思います。
Reply
  • わわい様

    ご回答ありがとうございます。
    ハードウェアマニュアルを見る限り、割り込みを利用する方法しかかかれていないように感じたので、このような形になっています。

    先ほどいただいた回答でひとまずは解決したので、とりあえずこのまま進んでみようと思います。
Children
  • わわいです
    まあ、それで解決とするならそれでいいんでしょうが、、
    そこら辺のワケがわかってないうちはこのあとでトラブったときにあっさり詰んでしまいます
    自分の手の届く範囲で動かしていき、少しづつ範囲を広げていくほうがかえって早いかと思います