高田馬場の組み込みおやじ-電子工作、回路設計、ファーム TIPS

このブログは令和デバイス株式会社の菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い気づきなどを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
CS+のプロジェクトにドキュメント登録しておくと便利
0

    JUGEMテーマ:組み込み開発

     

    CS+でなくてもほとんどのの統合開発環境でできると思うけど プロジェクトにはビルドに関係ないファイルも登録できる。

    こんなふうに

    PDFとか word,Excel,Text 等なんでも登録、ダブルクリックするとそのファイルを開くことができる。

    ビルドに関係しないファイルは無視してくれる。

    マイコンやデバイスの仕様書、回路図、部品表や仕様書など登録するようにしている。

    地味に便利です。

     

     

    | 令和デバイス-菅原 | Renesas RXマイコン | 07:04 | comments(0) | - |
    smalight-os のスタック確認
    0

      JUGEMテーマ:組み込み開発

       

      随分前に開発して、この度ファームの修正をした基板。謎の暴走が頻発してしばらくハマった。

      原因はマルチタスクOSのスタックがあふれてて隣のタスクのスタック領域を破壊していたからだった。

       

      メモリがたっぷりあるマイコンシステムであれば、十分なタスクを用意すればいいだけの話だけど 15タスク動いていてメモリもかなりカツカツだったので、ひとつあたりのスタックが 300バイト程度しか確保していなかった。

      今回の変更で関数の引数が増えたり、コールする関数の深さがましていたので、いままで大丈夫だったスタックが溢れてしまっていた。

       

      このシステムは uItronライクの smalight-osを使っているので、この例だと

      knl_tcbsp を参照すると各タスクのスタック開始位置を確認できるので、これを元にスタックの確認をする。

      knl_tcbsp[].sp の値を確認して、そこのメモリを参照する。

       

      スタックリスト

       

       

       

      一般的には起動時にメモリを初期化して 0にしてあるので、どこまでスタックを使っているかは、0以外のところがどこまで伸びているかで一目瞭然

      たとえば TASK7 .. はknl_tcbsp[6].spなので 0x21a0 で、その上を確認すれば、どこまでスタックを使っているかはおおよそわかる。

       

       

       

      | 令和デバイス-菅原 | Renesas RXマイコン | 10:30 | comments(0) | - |
      an-r01an0339ju0205-rx-can RX63系で CAN0が動作しないことがある報告
      0

        JUGEMテーマ:組み込み開発

         

        RX600 シリーズ CAN アプリケーションプログラミングインタフェース

        an-r01an0339ju0205-rx-can 

        R01AN0339JU0205
        Rev.2.05
        2018.02.07

        にて。。

         

        RX63 の CANのマイコンで不具合があります。RX62系はありません。

         

        RX630 で 以下のようにCAN0のポートを PD1,PD2にしたところ 動作しませんでした。

         

        config_r_can_rapi.h 

        #define CAN0_RX_PORT PD2
        #define CAN0_TX_PORT PD1

         

        実機でデバッグ中にレジスタを見てみると CAN0のレジスタに書き込みされていませんでした。

         

         

        原因を探ったところ以下のところに不具合がありました。

         

        r_can_api.h 

        78行目から

        /******************************************************************************
        Definitions Used to make the port pin selection logic work 
        ******************************************************************************/
        #define    P14        14
        #define    P15        15
        #define    P32        32
        #define    P33        33
        #define    P54        54
        #define    P55        55
        #define    P66        66
        #define    P67        67

         

        とあります、 PD1,PD2の設定がありません。

         

        PD1,PD2の設定がないところだと 以下のような記述の場合

         

        #if (CAN0_RX_PORT) && (CAN0_RX_PORT == P33)

         

        #elif (CAN0_RX_PORT) && (CAN0_RX_PORT == PD2 )    

          ここを有効としたい

        #else     

          しかしここが有効となっていた

        #endif    

        PD2が #defineされていないので #else以下が有効となってしまいました。

        すなわち、 ポートが設定されていないので CANは使わないという解釈がされていました。

         

         

        そこで

        #define      PD2        132
        #define      PD1        132

         

        と追加したところ 動作するようになりました。

         

        PD2,PD1に設定する値は 他のポート設定と重複しなければOKです。

         

        今回 北斗電子のHRSBRX630Bで開発していました。

        HRSBRX630B は PD2,PD1をCANのポートとして 回路設計しています。同じようにはまることがありませんように。

         

         

         

        | 令和デバイス-菅原 | Renesas RXマイコン | 20:59 | comments(0) | trackbacks(0) |
           1234
        567891011
        12131415161718
        19202122232425
        2627282930  
        << April 2020 >>
        + RECOMMEND
        + RECOMMEND
        + SELECTED ENTRIES
        + RECENT COMMENTS
        + RECENT TRACKBACK
        + CATEGORIES
        + ARCHIVES
        + つぶやき
        + MOBILE
        qrcode
        + LINKS
        + PROFILE