PF入力を使おう

出力ができましたので、今度は入力を使ってみましょう。

入出力方向に関しては、前回説明した通りPFピンに対応するDIRレジスタのビットを0にすれば入力になります。また、PFピンの値はFLAGS、FLAGCのいずれからでも行えます。両レジスタの読み出しに変なひねりはなく、いずれのレジスタも同じ値を返します。

FSPR

入力が出力とちょっとだけ違うのは、ビットごとに正論理か負論理かを決められることです。この決定はFSPRレジスタで行います。

FSPRのあるビットが0のとき、対応するPFピン入力は正論理です。逆に1のときは負論理です。リセット後はFSPRの値は0になっています。

今回はこのレジスタは使いません。

プログラム

簡単なプログラムを作ってみましょう。EZ-KIT LiteのSW3を押したときだけLED8が点灯するプログラムです。このプログラムの構造は

繰り返し
    SW3の値を読む
    値に応じてLED8を制御する

という簡単なものです。前回紹介したEZ-KIT LiteのPFピンの使い方を再掲すると、

PF0 PF1 PF2 PF3 PF4 PF5
LED8 LED9 LED10 LED11 SW3 SW2

でした。この表から今回はPF4を入力として使い、PF0を出力と使うと決まります。そして、PF4の値を調べてその値に応じてPF0に出力を行います。

以下にプログラムを示します。これも別にひねりのないプログラムです。

#include <def2191.h>
#include <sysreg.h>

#define SW3 0x10

int main(void)
{
        int flagval;

        sysreg_write( sysreg_IOPG, General_Purpose_IO );
        io_space_write( DIR, 1 );

        while (1)
        {
                flagval = io_space_read( FLAGS );
                if ( flagval & SW3 )
                        io_space_write( FLAGS, 1 );
                else
                        io_space_write( FLAGC, 1 );
        }
}

これについてもプロジェクトを丸ごと圧縮したものを用意しました。興味がある方はダウンロードして使ってください(7.5KB)。使用するにはVisualDSP++で開いた後、メニューバーProjectUpdage Dependenciesを実行してください。プロジェクトを作成場所から移動させた場合にはこれが必要です。

⇒次は割り込みを使おう

2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |