avr 122:LED 回路の入力


 以前[avr76]でアノード・コモンLEDを使っていました、入力回路との併用はカソード・コモン(現在はほとんどこれ!)でも使えるか試してみました。
 使いたい回路に付けたのですが、すっかり忘れて作動まで結構時間が掛かりました(以前のメモを見ればよかった・・!)。

 結局、おなじようなプログラムに落ち着き、動作するようになった。続けて逆側(アノード側)にも付けて動作するのか試して見ました。いずれも作動しました。

 再度ここで手順を並べておきます。
[カソード側の例]
* 必要によってPortを保存する。
* Port の変更[input]
* pull up
* 7segments=L
* wait 1MHz=5ck(5μS)
* in [PinD]、必要によってDATAを逆にする(COM)。
* Portを戻す。
* 必要なら、初期状態に戻す。

[アノード側の例]
* 基本的にカソード式と同じ。
* Waitは1mSが必要だった。

○アノード側にSWを付ける場合何故か時間が必要で誤動作した。500μS以上必要で安全を見て1mSとする。
○スイッチは[L=アクテイブ]として使う。
○[avr119]とは異なり、ここのはリアルタイムに受付処理をする物です。


プログラム [サンプル]プログラム(続き)

;***** 05/25	SW check to Flag
	ldi	temp,0b01000110	;PD3.4.5 check
	out	DDRD,temp
	ldi	temp,$38		;pull up
	out	PortD,temp
	clr	temp
	out	PortB,temp		;7segments=L
	rcall	wait		;[over 5uS]
;-----------------------------------------------

	in	flag,PinD	;
	com	flag
	andi	flag,$38	;mask & flag set
	ldi	temp,$7e	;0b01111110
	out	DDRD,temp	;
	ldi	temp,$38	;set again
	out	PortD,temp
;-----------------------------------------------

2006/5/27


[もどる]もどる [MENU

inserted by FC2 system