Synergy向けe2Studioはいくらか使いこなしており、GUIでのポート設定、ソース掃き出しなどまでは理解できております。
次のステップとしてコーディング時のAPIを使ったポートの取り扱い方法を教えてください。
SK-S7G2のテンプレートにLEDブリンキーがありますが、
ソースは「g_ioport.p_api->pinWrite(leds.p_leds[i], level);」です。
SSPマニアルから書式までは理解しますが、 上記 lleds.p_leds[i] はどこで設定されているのでしょうか?
また、ここはLED用のBSPとして決め打ちになっているかもしれませんが、
他のポートに H 、L 出力したい場合や
他のPORTより、H、L状態を 入力する場合は pinRaed まではわかりますが、
それ以降どうすればよいのでしょうか?
「g_ioport.p_api->pinWrite( ***?. ***? , level);」
「g_ioport.p_api->pinRead( ***?. ***? , level);」
よろしくお願いいたします。
はし様
おはようございます。Sugachanceです。
ledsはここで宣言されており、bsp_leds_t ledsの「bsp_leds_t」をe2studioの標準的な(?)機能としてctrlを押しながらクリックして頂くと
↓typedefの中身に飛ぶと思います。
また、このbsp_leds_tをe2studioの標準的な検索機能で検索すると↓の様にbsp_leds.cに飛び
↓の様にg_bsp_ledsやg_bsp_prv_ledsの中身を知ることができます。
これらが、↓R_BSP_LedsGet()で関係づけられて設定されているといった感じです。
これらは、フォルダ構成でいうと↓の場所にあり、自作ボード+サンプルのBlinkyの場合は、これらを自分で書く必要があります。
ctrlを押しながらクリックしていろいろ見たり、検索してみると理解が進むと思います。
また、一度、無償のSynergyセミナに出席されることをお勧めします。(私もそこでいろいろ知りました)
以上、よろしくお願いいたします。
はし様 こんにちはSugachanceです。 正直、なんだかよくわからなくなってきましたが 目的はport入力を行いたいということで回答します。 以下はP402の入力レベルを取得する実例です。 P402の先にPush SWが付いていて押すとGNDにつながってLowに そのままだとプルアップによりHighになる回路のものです。 ssp_err_t err; ioport_level_t level_P402; err = g_ioport.p_api->pinRead(IOPORT_PORT_04_PIN_02,&level_P402); これを実行することで、 level_P402に LOWであれば IOPORT_LEVEL_LOW (数値でいうと0) HIGHであれば IOPORT_LEVEL_HIGH (数値でいうと1) が入ります。 errには SSP_SUCCESS(数値でいうと0)が入ります。 何かの理由で読み込みに失敗すると、それに応じたエラー内容が入ります。 ※S7G2ではなくS128で動作確認したものですが、SSPの意義からすれば同じはずです。 ここでssp_err_t もioport_level_tも標準でプロジェクトを作成すると 自動で用意される列挙型(enum)です。 出力のときに見たとは思いますが、IOPORT_PORT_04_PIN_02も ioport_port_pin_t (enum)で定義されていて、自動で生成されています。 port入力に関していえば、特別な設定は必要なく ユーザーはマイコンのピン割り当てさえしておけば
成功失敗の戻り値 = g_ioport.p_api->pinRead(ピン指定,入力レベルの格納先)
でport入力が実現できるはずです。 他の機能のようにapiのopen等も必要ありません。