Author: onishi

もくじ

コメント

コメントはありません。 Comments/チュートリアル/PSoC1duino_スイッチ編

お名前:

スイッチでLEDを点灯させる

PSoC1duinoについているスイッチは、RESETに繋がったものしかありません。なので、スイッチによってLEDを制御するには、ボードの外にスイッチを用意する必要があります(ブレッドボードを使用すると便利です)。今回はD2(Port_2_2)をスイッチとして割り当てています。(不細工ですが、ブレッドボード上はこのようになっています。)

BB_SW.png
  • マイコンボード上で電圧源を制御できるので、抵抗を挟む必要は無いようです。
    1.チュートリアルで全て同じ結線図を使用している人は、LEDPinの「Select」を「StdCPU」に戻しておいてください。Port_2_2を選択し、「Drive」を「Pull Down」にします。また、PinoutにあるLEDpin(P_1_6)の「Drive」を「Strong」にしておきましょう。
    22drive.png

2.続いて、ソースコードを記述していきます。

void main(void){
    while(1){
        PRT2DR&= ~0x04;
        if(( PRT2DR&0x04 ) != 0){
             PRT1DR |= 0x40;
        }else{
             PRT1DR &= ~0x40;
        }
    }
}

PRT1DR,PRT2DRはそれぞれPort1,Port2のことです。0x04や0x40はPortの中で対応するピンです。例えば、Port_2_2であれば、2進数で00000100なので、16進数として04となります。
3.以上のプロジェクトをビルドすると、スイッチを押すとLEDが点灯するプログラムができます。

ここで、毎回、PRT2DRと~0x04(0x04の否定=0xfb)との論理積(&)を取っていて、Port_2_2を"L"にしています。これは、PSoC1の仕様で、プルダウン抵抗をONにして、スイッチを押していないときにポートを"L"にするためには、明示的にそのポートを"L"にすることが必要なため、です。ですので、プルダウン抵抗を使ってポートの1/0を読むときは、まずはそのポートを"L"にしてから読むようにします。(プルアップの場合はすべて逆)


添付ファイル: fileBB_SW.png 848件 [詳細] file22drive.png 797件 [詳細] file22drive.bmp 432件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-02 (日) 11:12:58