Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

RX621マイコンで、割り込みを使用して、MCP3208とspi通信をさせたい

こんにちは。

現在秋月のRX621マイコンの勉強をしております。表題の通り、AD変換のMCP3208をマイコンの機能を使用して、通信させたいと思っております。

この場合、全二重通信で、24ビット長での通信をさせればよいのでしょうか?送信データが半端なため、何バイトなのか、よくわからず、色々なサイトを参考にしているのですが、IOやメモリなど、1バイトずつ区切れるものが多く、実際どうなのかな?と思い、質問させて頂きます。よろしくお願いいたします。(モノは近日中にてに入れるつもりです)

  • In reply to NoMaY:

    NoMaYさん
    ご指摘頂いたディップスイッチは、リトルエンディアンでした。あと、もしかしたら見ている場所が違ったのかもしれないのですが、今は実行中はクロックとDinの信号は2V程度に張り付いたままです。立下りは観測できません。ご指摘頂いた★の部分も入れ込んでみたのですが、そのままでした。時間を割いて頂いて、本当にありがとうございます。なかなか自分でもレジスタ周りを見ているのですが、上手くいかずです。
    関数の呼び出し方は、

    ReadGsensor_X(0,3,2,Gy);

    としているのですが、送信バイト3、受信バイト2、入れる変数Gyと指定しています。
  • In reply to えるん:

    NoMaYさん、えるんさん

    こちらでもサンプルを作成していました。完成してからと思っていたのですが、途中のものを添付します。

    e2studio v7.4.0, gcc 4.8.4版です。詳細はソースのコメントを参照下さい。

    まだ送信のみですが、クロックは出ていますし、送信割り込みも発生します。

    RSPIモジュールはちょっとくせのある仕様で、とっつきが悪いです。ルネサスのサイトでは見つからなかったので、この際、まともなサンプルを掲載しておこうと考えています。

    後ほど完成したら再掲します。

    注) 一度投稿後、添付ファイルを差し替えました。

    0871.SampleSPI.zip

  • えるん さん、こんにちは。NoMaYです。#[追記] あっ、Higetakaさんからも同時に投稿が来ていますね。感謝です。

    昨日投稿した件のプロジェクトを作ってみました。e2 studioでzipファイルを直接インポート可能です。ただ、e2 studio v7は大丈夫(v7.4.0で確認)だと思いますが、プロジェクトフォーマットが今と互換性の無いv5は出来ないと思います。また、v6はやってみないと分からない、というところです。何れにせよ、ソースファイルやMOTファイルはWindowsエクスプローラで取り出せる筈です。

    プロジェクトのファイル一式

    issue_20190715.zip    486KB

    含まれるプロジェクト(CC-RX用プロジェクトはCS+のmtpjプロジェクトファイルを同梱)

    ・aki_rx62_ccrx
    ・aki_rx62_ccrx_pdg2
    ・aki_rx62_gnurx

    なお、CC-RX用プロジェクトは、別スレッドのTBボードサンプルプログラムやFreeRTOSプログラムのプロジェクトをベースにしていますので、e2 studioやCS+でプロジェクト生成した直後のものより少し複雑になっています。(対して、GNURX用プロジェクトはプロジェクト生成した直後のものから変えないようにしました。)

    [余談]

    今回、e2 studio v7.4.0+CC-RXでPDG2と連携させようとしたら。以下の画面コピーの「e2 studioとの接続に失敗しました。」のエラーが出てしまい、何だろうと思ってゴソゴソやっていたら遅くなってしまいました。でも、結局、出来ないままなのですが、、、インテグレーションサービスのCOMはインストール済みで、e2 studio v6で出来ていたプロジェクトを試してもエラーが出てしまうので、e2 studio v7でのPDG2のサポートが終了していないか、e2 studio v7系のリリースノートを確認して、終了していないようなら、e2 studio v6を再度インストールして確認した方が良いかも知れない、と思い始めています、、、

    エラーの画面コピー


    FAQ 1011677 : PDG2でe² studioプロジェクトを設定すると 「インテグレーションサービスをインストールしてください」エラーが出る
    ja-support.renesas.com/knowledgeBase/17797659

    e2 studio v6とPDG2を組み合わせた時のトラブル回避策を探してみました(Workaround)
    japan.renesasrulz.com/cafe_rene/f/forum21/4573/e2-studio-v6-pdg2-workaround

    秋月電子のRX621マイコンボード開発セットをe2studioで開発しようとしたときのエラー解決方法をご教授頂けないでしょうか。
    japan.renesasrulz.com/cafe_rene/f/forum5/4567/rx621-e2studio
     

  • えるん さん、こんにちは。NoMaYです。

    お風呂に入ってリラックスしていて思い浮かんだのですが、以下のことがあるということであれば、RSPCKA-AであるPC5を単なる出力ポートにして0や1が出力されるか(或いは少し端折ってトグル出力されるかどうか)確認する為だけの、私が昨日(と今日)投稿したプログラムのような、main()だけの簡素なプログラムを作り、試してみた方が良い(というか試すべきかな)と思います。2V程度ということは中間電位ということなのだと思われますが、ソースではオープンドレイン出力に設定されていませんでしたので、測定ミス、もしくは、マイコン/ボード/オシロが壊れた、等も気になります。(或いは、デバッガ上で必要な内蔵周辺レジスタの設定を行った後、同じくデバッガ上で出力データレジスタに0や1を書いて、オシロ上の測定電圧が0Vや3.3Vになるか見る、という方法もあります。)

    >あと、もしかしたら見ている場所が違ったのかもしれないのですが、今は実行中はクロックとDinの信号は2V程度に張り付いたままです。立下りは観測できません。

    あと、今読み返していて、ふとDinという表記が気になったのですけど、これはオシロのプローブの入力という意味ですか? それとも、AKI-RX62に相手のボードか何かが接続されていて、そちら側の何かのDinなのでしょうか?

  • In reply to NoMaY:

    NoMaYさんHigetakaさん

    こんばんわ。お世話になっています。

    NoMaYさんのプロジェクトのソースを元に、自分のプロジェクトに入れ込んでみました。

    黄色がクロック、緑がDinを計測しました。Dinは、MCP3208のデータシートで使われている用語です。

    RXのMOSIAと接続しています。

    DriveMonitor011.zip

    現状はこのプロジェクトのようにしました。とりあえず、クロックらしきものは計測できたので、あとはデータ送信と受信かと思っています。

    本当にありがとうございます!もう一度、書籍なども見返してみます。

  • In reply to えるん:

    RX621のユーザーズマニュアル(ハードウェア編)を見ていて、以前見た他のRXに比べて何か違うという事に気が付きました。確認したところ、後の世代のRX(RX63N等)用のマニュアルだと、情報が追加されています。これらはソフトウェアを書く上で必要な情報です。おそらくRX621のマニュアルだけでは、RSPIの設計思想や使い方が読み取れず、まともなソフトは書けません。RX63Nのマニュアルを見る事をお勧めします。
  • えるん さん、こんにちは。NoMaYです。

    クロック出てますねぇ。まだ、えるんさんがやりたかったことの半分にも届いてませんけど、大きな前進ですね。今、えるんさんの2つのソースを比較したり、Higetakaさんのソースを読んだり、しているのですが、次のステップとして、受信周りを一旦削除して(つまりRSPIの設定として全2重通信ではなく送信のみの設定にして)Nバイト送信が出来るようにソースを簡略化/デバッグしてみる、というのはどうでしょうか?

    今の状況は以下のような感じですかね、、、

    (A) 他のRSPI設定は同じまま、割り込み駆動にしない(以下の画面コピー参照)だけで、クロックが出る
    (B) (推測) 以前と同様に、割り込み駆動では、送信割り込みにも来るし、SPDRにもライトしている、であろう

    それで、割り込み駆動の送信のみのソースにして、Higetakaさんのソースと比較しつつ、アドバイスに従ってRX63Nのハードウェアマニュアルも読みながら(RSPIモジュールのバージョン(回路)はRX62N/621とRX63N/631では同じ)、SPDRにライトしてもクロックが出ない原因を突き止める、という時に気になるのは、以下の点かな、と思いました。

    (1) SPDRにライトした時に(RX63Nのハードウェアマニュアルに記載があるかも知れない)禁則事項に触れてないか
    (2) SPDRにライトした時にエラーは起きていないか
    (3) SPDRにライトした時にSPE=0になっていないか(SPE=0にするのはスレーブ番号を間違えた時のみであるが)
    (4) 実は、1回だけはクロックが出ていたが見落としていた、ということはないか

    今思い浮かぶのは、こういったところ、です、、、

  • In reply to NoMaY:

    Higetakaさん、NoMaYさん
    こんばんわ、お世話になっています。
    本日、SPDRの受信バッファをLCDに表示させてみたのですが、「01279」と固定の数字が出てきました。
    意味があるのか!?と思い、可変抵抗に繋いだのですが、動きませんでした。
    実を言いますと、題名とは乖離してしまいますが、割り込みでの使用は必須ではなく、「必須だと思い込んでいた」のです。お手本にしたサイトの方や、割り込みハンドラにその場所があったので「使わなきゃSPIは出来ないのか?」と思っていました。
    Higetakaさんが仰った通り、63Nのマニュアルを今参照しています。
  • In reply to えるん:

    えるんさん、こんばんわ。
    DriveMonitor011.zipの中身をみて、GREPで全ファイル検索してみましたが、PORTCが見つかりませんでした。
    接続は、PORTCを使われているとの事でしたので、入出力の設定を確認されると良いとおもいます。
    周辺モジュールも、PORTC.ICR.BITnの設定が必要なので、もしかすると入力されていないかもしれません。

    ICR レジスタは、ポートの入力バッファを制御するレジスタです。 PORTn.ICR レジスタ(n = 0 ~ 9、A ~ G)の各ビットは、それぞれポート n の端子 1 本ずつに対応してお り、1 ビット単位で指定できます。 周辺モジュールの入力端子および入力ポート端子として使用する場合は、あらかじめ対応する端子の入力 バッファを有効にするために PORTn.ICR を “1” にする必要があります。PORTn.ICR を “0” にした状態のまま 周辺モジュールの入力端子として使用した場合は、周辺モジュールへの入力信号は High に固定されます。

    との事です。1279は16進数で0x04FFなので、微妙なところですが、下位8ビットだけ反映されているのでしょうか。


    ちなみに、AKI-RX621ボードは手元にあるので試してみようと思ったのですが、E1接続コネクタが無いのでのちほど。

  • In reply to HiRoSan:

    HiRoSanさん
    こんばんわ、お世話になります。
    おお!確かにないです;; ご指摘ありがとうございます!
    PORT4使用なので、
    PORTC.ICR.BIT.B7 = 1; /*MISOA-A端子(PC7)のバッファコントロール
    として、初期化の中に加えました。
  • In reply to えるん:

    ポーリング版のサンプルができました。(添付ファイル)

    送受信ができます。(割り込み版は不要との事なので、様子見する事にしました)

    SampleSPI1.zip

  • In reply to えるん:

    えるん さん、HiRoSanさん、こんにちは。NoMaYです。

    > PORTCが見つかりませんでした。

    > おお!確かにないです;; ご指摘ありがとうございます!

    あっ、そうでした。これは私が原因ですね。記憶を辿ってみれば、えるんさんのInit_RSPI0()の中から先日の投稿のmain()にコピペした時に、以下(赤文字箇所)はどうしようかな、出力確認用だから外しておくかな、としたのですが、ほどなくしてそのことはすっかり忘れ、SPDR読み出し(カラ読み出し)をしている箇所のコメントに/* 受信データ読み出し */とか書いてしまいました、、、

    ここは、外さずに残して/* 以下は一応残しておく */とか、外して/* 受信データ読み出し(端子未設定なので0x00?) */とか、しておけば良かったですね。(HiRoSanさんの指摘からすると、端子未設定だと0xffが読める、ということですね、、、)

        /* RSPI0のポート設定 */
        IOPORT.PFGSPI.BYTE = 0x1e;    /*ポートファンクションレジスタ PC4~7を使用*/
        PORTC.DDR.BIT.B7 = 0;
        PORTC.ICR.BIT.B7 = 1; /* PC7(MISOA)の入力バッファ有効 */
        PORTC.PCR.BIT.B7 = 1; /* PC7(MISOA)のプルアップ抵抗有効 */

    それから、Dinの件は分かりました。そういうことなのですね。それで、もう1つ気になっていますが、今回のオシロの写真ではHighが2Vちょっとしかないのには何かわけがあるのでしょうか?(以前の写真を見返すと3V以上はあったのですが、、、)

  • In reply to HiRoSan:

    えるん さん、HiRoSanさん、こんにちは。NoMaYです。

    えるんさん、その後、どうでしょうか? Higetakaさんのソースを参考にして通信出来るようになったでしょうか?

    HiRoSanさん、お手持ちのAKI-RX62で試してみるかも、というリプライをされていましたが、どうにも私は気になって、RX631のGR-CITRUSですが、試してみることを始めました。現時点では、ポート周りの設定ミスという線は消え、割り込み周りの処理の不具合(+予感/推測ですがオシロでの測定ミス?)のように思われますので、RSPIモジュールがRX62N/621と同じであるRX63N/631でも何かしら掴めるのではないだろうか、という気がするからです。ただ、両者でICUモジュールが異なっていますので、それによる差異があるかも知れない、という点には気を付けるつもりです。(もし何か掴めたら投稿します。)

  • In reply to NoMaY:

    NoMaYさん、こんにちは。
    E1を接続して動作確認を行おうと思いましたが、CS+とRX-CCを使っていますので、単純に開いただけだと、エラーが多発しており、ビルドできていない状態です。.rcpcがあれば変換出来るようですが、良くわかっていないので申し訳ありません。e2Stuidoで試してみましたが、こちらもエラーが出てビルドできませんでした。フィールド'ADDR0'が解決できません。との内容で、iodefine.hで定義されているレジスタが使えていない状況です。
    Higetaka さんのサンプルなら、正常動作しております。PC7をVDDまたはオープンで、rxbufがすべて0xff、GNDに繋ぐとすべて0x00、PC7とPC6を接続すると0x01,0x02,0x03となりました。

  • In reply to HiRoSan:

    HiRoSanさん、Higetakaさん、NoMaYさん
    こんばんわ、お世話になります。
    本日まで出張で、返信が遅くなり申し訳ありません、しかし、日曜からまた出張なので、来週半ば以降に、教えて頂いたソースを試せそうです。
    早くやりたいのですが・・・。すみません。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page