ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« PSoCのUSBUART機能でPCとUSB接続する | メイン | PSoCで割り込みによりロータリーエンコーダーを2つ使う »

PSoCでスイッチによるポートの割り込みを処理する




psoc_sw_int_01.gif
今回はスイッチ入力で割り込みを発生させ、LEDを光らせる。PSoC Designerでは(使い勝手が悪いものの)比較的簡単にポート割り込みを実装できるようにできている。

psoc_sw_int_02.gif
PSoC Designerを起動したら「Config」メニューの「Interconnect」から画面を切り替える。

psoc_sw_int_03.gif
ここでポートの設定をする。「Port_1_4」の「Drive」を「Pull Down」、「Interrupt」を「ChangeFromRead」にする。この「Interrupt」の項目が割り込みの設定になる。ここではスイッチが押し下げられたときと、上がったときの両方で割り込みが起きるようにした。ちなみに今回使うスイッチはONのときに5Vになるので、押し下げられたときのみ割り込みを起こしたいときは「FallingEdge」、ボタンから指を離したときは「RisingEdge」に設定すればいい。
さらに「Port_2_0」の「Drive」を「Strong」にする。これはLEDを光らせるための設定だ。

設定が済んだら「View」メニューの「Application Editor」でソースコードを書く画面に切り替える。

psoc_sw_int_04.gif
普段であれば「main.c」を編集してソースコードを書き始めるところだが...今回はまずビルドを行う。

psoc_sw_int_05.gif
すると編集に必要なソースコードが生成される。この作業は「Device Editor」の画面で「Config」メニューの「Generate Application」から行うこともできる。

ソースコードが自動生成されたら「Library Source」の「psocgpioint.asm」を開く。

psoc_sw_int_06.gif
そして「PSoC_GPIO_ISR:」の下に「ljmp _GPIO_INT」という命令を追加する。ここでは後ほど用意する関数名に「_」(アンダースコア)を付加したラベルへのジャンプ命令にする。

psoc_sw_int_07.gif
そして「Souce Files」の「main.c」に処理を書く。


//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

#pragma interrupt_handler GPIO_INT
void GPIO_INT(void)
{
if(PRT1DR & 0x10)
PRT2DR |= 0x01;
else
PRT2DR &= ~0x01;
}


void main()
{
M8C_EnableGInt;
M8C_EnableIntMask(INT_MSK0, INT_MSK0_GPIO);

while(1)
{
}
}





_DSC9077.JPG
これでPSoCへ書き込む。するとMiniProgの横のスイッチを押すとP20のLEDが赤く光る。
今回はポート14に接続されたスイッチの割り込みを利用したが、すべてのポートに対して割り込みの設定ができる。ただし、どのポートが割り込みを発生させたのかは自分で判断しないといけない。









Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報