SK-S7G2ボードでのポート入出力方法について

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セミナに出席されることをお勧めします。
    (私もそこでいろいろ知りました)

     

    以上、よろしくお願いいたします。

  • ご回答ありがとうございます。
    一度、無償のSynergyセミナは2回ほど参加させていただきましたが、
    あくまでツールの設定、操作レベルまでの内容でしたのでさらに高度なセミナを
    検討する必要があるのかもしれません。

    今回のご回答から到底目的のことができないと考えお手数かけますが追加質問をさせてください。

    目的 Port出力のテンプレートを参考にPort入力を使ったなにがしかのソフトを作る。

    LED点滅(Blinky)テンプレートから、Port出力の流れを確認しました。
    (非常に難しく完全とまでは理解できませんが・・・)

    結局、難しく考えすぎず、
       「g_ioport.p_api->pinWrite( ***?. ***? , level);」 の
        pinWrite命令でPort出力ができると一旦考えます。

    目的は、Port入力ですが、
        「g_ioport.p_api->pinRead( ***?. ***? , level);」の
        pinRead命令でPort入力ができると同じく考えます。

    ここで質問ですが、
        SynergyのBSP、HALドライバ ・・・ ツールが自動生成する分
        (Blinky)テンプレート   ・・・ 通常コーディングする分
    はどれに当たりますでしょうか?

    質問の意図は、Port入力を実現するのに、
       「g_ioport.p_api->pinRead( ***?. ***? , level);」だけでは足りない
      と考え、(自動生成とコーディングそれぞれで)用意する分を知りたいためです。
  • はし様
    こんにちは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等も必要ありません。

  • ご回答ありがとうございます。

    評価ボード(SK-S7G2)のSWの状態をLEDに表示させるプログラムの実行を考えましたが、
    ---------
    err = g_ioport.p_api->pinRead(IOPORT_PORT_00_PIN_05,&level_P005);
    err = g_ioport.p_api->pinRead(IOPORT_PORT_00_PIN_06,&level_P006);

    g_ioport.p_api->pinWrite(IOPORT_PORT_06_PIN_00, level_P005);
    g_ioport.p_api->pinWrite(IOPORT_PORT_06_PIN_01, level_P006);
    ---------
    の様に、ダイレクトに入力ポート値を出力ポートへ渡すだけで動作確認ができました。

    LED表示(Blinky)のサンプルソフトが難しく理解できなかっただけと思います。