Translate

ページ

2015年8月20日木曜日

こて先温度計シールド+PSoC4 BLE PIONEER KIT

こて先温度計シールドI2C接続の小型LCD搭載ボード(3.3V版)
今度は(PSoCまつり2015以来積んであった)PSoC4 BLE PIONEER KITとを組み合わせて使って
こて先温度計を作ってみました。
(PSoCの勉強も兼ねた習作です。)



こて先温度計シールドの3.3V化


    プログラム

    • 作成したプログラムはこちらに置きました(PSoC Creator 3.2SP1にて作成)。
    • CapSense CSD スライダでコントラスト調整可能とした版←ボタン電池で使用する場合はこちらをご利用ください。
    • ノウハウ
      • PSoC Creatorで、sprintfにおける浮動小数点(%f)の取扱いがうまく表示されない問題に悩みました。PSoCにお詳しい中村様に助けて頂きました。
        • 原因1: デフォルトでリンクされる小さなlibcにおいて、浮動小数点対応を不足している。
          対策:浮動小数点対応のprintfライブラリを追加する。(参考)([Project]-[Build Settings]を開き、下図のようにARM GCCのLinkerセクションの”Use newlib-nano Float Form”を"Yes"に設定)
        • 原因2:デフォルトのヒープサイズが小さいため動作しない。
          対策:ヒープサイズを増やす。(参考)((ピン割り当てなどを設定する)*.cydwrファイルを開き、[System]タブを選択。下図のようにHeap Sizeを0x80から0x200に増やす。

      • これは、バッドノウハウのような気がしますが、SSピンはSPIMモジュール外、プログラムで直接制御しています。
        SPIMモジュールが一度に読み出せるのは16ビットまでの様子。こて先温度計シールドで使用しているMAX31855では32ビットを一度に読み出す必要があるので、32ビット分読み出すまでSSピンをLに保つために、このようなことをしています。

    感想など

    • PSoC初挑戦。mbed慣れしていたので、PSoC Creatorの世界観に慣れるまで苦労しました。
        • 当初、作成したコンポーネント名に対応したルーチン(API)が自動生成されることが理解できず、ドキュメント記載のAPIが使えないと悩みました。

    • 非力なマシンを使っていると、非常に効率が悪い(ローカルにコンパイラが動くため、さくさくコンパイラが出来る環境無いと辛い。mbedのクラウド環境は、ローカルマシンのCPUパワーが低くても結構実用になる)。

    • 初心者こそオシロスコープ、ロジックアナライザ必要
      • I2C液晶がうまく動かない時に、LABTOOLを使ってコツコツデバッグしました。これが無かったら、ギブアップしていたかもしれません。

    • SPIも初挑戦。前述のSSピンの制御以外は、こちらは前述のSSピンの制御以外は割とすんなり行きました。

    参考リンク