コントローラ(8Pin type)V
前回のコントローラと同じです、IC AT90S2323は購入してからほとんど使って無かったのと、出力が単なるCW出力だけなので「今回使ってみようか!」となった訳です。 3.52MHzなのでそのまま移植しました、少しよけいな所を削除してますが8ピンのこのICは小形に作れます、ただコスト的には20ピンの方が安いのですが使って見ました。 プログラム! コールサインの書換え、MO*の設定・A-SWの変更をすればARDF機器をCWでコントロール出来ます。 FM機でF2を出すにはPTT出力を出す必要がありますがこの部分は削除したので必要な方は追加して下さい。入力の切替えは予めプログラムするので特に必要な物では無い。 動作はこのままでMOEが出ます、PB0をLOWにすればMOIが出る様にしました、またA-SWは2に初期設定にしたので2台作れば1台づつ信号が交代で出ます。 動 作 回路図の様に全体は簡単でSW入力が無いので見た感じ簡単です、でも動作はほとんど同じです。 外部のコントロールは念の為トランジスタでコントロールした方が安心です、一瞬でも12V系の電源に接続するとICは破壊されます。 電源は乾電池の3V動作としました、セラロック3.58を接続して3.52MHzを発振させ1.9Vでも動作しましたが1.8Vでは発振が停止しました。 消費電流は5V動作で6.6mA・3V動作で2.6mA・2V動作で1.2mAでした。消費電力に付いては32Kの水晶だと電源スイッチも不要になるほど・・・ですが実験はしていません(次の機会にしたいと思います)。 2004/JUN/22 | |
プログラム | プログラム(続き) |
---|---|
;************************************* ;Title : ADRF Signal_generater ;Date :3.52MHz BY JA1HWO ;Last :6/20 AT90S2323 ;************************************* ;ADRF用の信号発生機で1分間にDE+CALL+MOE(MOI.S.H.5)+MOE+... ;機器数の設定で5台分設定と信号の番号の設定(MOE)の設定が出来る。 ;スイッチONでPortB0をLでMOI、何もしなければMOEになる。 .include "C:\AVRTOOLS\APPNOTES\2323def.inc" .cseg .org 0 ;**** set **** .equ in_sw =0 ;PortB0 DATA input .equ sound =1 ;PortB1 .equ LED =2 ;PortB2 CW Mode .def m_data =r0 .def back_f =r1 ;SREG .def back_i =r2 ;SREG .def tc_set =r3 ;for Timer .def mo_SW =r4 ;Signal No .def a_SW =r5 ;Max SG .def cunt_m =r7 ;1-7min counter .def temp =r16 .def gr0 =r17 ; .def gr1 =r18 ; .def gr2 =r19 ;Wait .def ic_1 =r20 ;60sec counter .def ic_2 =r21 ;60sec counter .def speed =r22 ;for A/D timer .def wcunt =r23 ;timer ;------------------------------------ rjmp star ;Reset reti ;Ex0 rjmp T_60m ;timer overflow star: ldi temp,LOW(RAMEND) out SPL,temp ; ldi temp,0b11111110 ;1=output 0=input out DDRB,temp clr ic_1 ;counter clr ic_2 ldi temp,1 out PortB,temp ;pull up mov cunt_m,temp ldi temp,5 ;in Clock=1/1024 out TCCR0,temp ;T/C0 ldi temp,-250 ;*250=4Hz(0.25S) mov tc_set,temp out TCNT0,tc_set ; ldi temp,2 sbic PinB,0 ; ldi temp,1 mov mo_SW,temp ;MO=1 or 2 ldi temp,2 mov a_SW,temp ;A=2 ldi temp,2 out TIMSK,temp ;Timse Interrupts ON sei ;Interrupts on ;-------------------------------------------- ;DATA 8F 3F FF 77 5F 7B 07 6F EF FF [DE JA1HWO ] main: cp cunt_m,mo_SW ;time=mo_SW ? brne main ;no to ldi temp,8 ;Wait0.25*8=2 Sec main0: ldi speed,250 ;250*1mS rcall wait2 dec temp brne main0 ldi speed,100 ;CW SPEED 1=1mS ldi gr1,$8f ;D rcall CW_set ldi gr1,$3f ;E rcall CW_set ldi gr1,$ff ;" " rcall CW_set ldi gr1,$77 ;J rcall CW_set ldi gr1,$5f ;A rcall CW_set ldi gr1,$7b ;1 rcall CW_set ldi gr1,$07 ;H rcall CW_set ldi gr1,$6f ;W rcall CW_set ldi gr1,$ef ;O rcall CW_set ldi gr1,$ff ;" " rcall CW_set ldi gr1,$ff ;" " rcall CW_set main2: ldi gr1,$df ;M rcall CW_set2 ldi gr1,$ef ;O rcall CW_set2 mov temp,mo_SW ;1.2.3.4.5 cpi temp,2 breq m22 brlo m21 cpi temp,4 brlo m23 breq m24 ldi gr1,$03 ;5 rjmp m2e m21: ldi gr1,$3f ;e rjmp m2e m22: ldi gr1,$1f ;i rjmp m2e m23: ldi gr1,$0f ;s rjmp m2e m24: ldi gr1,$07 ;h m2e: rcall CW_set2 ldi gr1,$ff ;" " rcall CW_set2 cp cunt_m,mo_SW ;time=mo_SW ? breq main2 ;no to cbi PortB,LED ;LED OFF Limit rjmp main | ;gr1=DATA use temp sub Wait ;output PortB Set & Clear/LED or TX control CW_set: cpi gr1,$ff ;" "? breq C_5 c_2: sec ;carry Flag rol gr1 ;Rotate left in back_f,SREG sbi PortB,LED ;LED ON(H) rcall wait out SREG,back_f brcc c_3 ;s to rcall wait rcall wait c_3: cbi PortB,LED ;LED OFF rcall wait2 mov temp,gr1 ;end ? sec ;carry Flag rol temp ;Rotate left cpi temp,$ff brne c_2 C_5: rcall wait2 rcall wait2 ret CW_set2: cp cunt_m,mo_SW ;time=mo_SW ? breq cw_set ;no to ret ;------------------------------------------------- ;Interrupt minute counter ;use back_i.ic_1.ic_2.cunt_m T_60m: in back_i,SREG ;*825=60S(1 minute) inc ic_1 brne t_601 inc ic_2 t_601: cpi ic_1,low(825) ;825=$339 brne t_6e cpi ic_2,high(825) brne t_6e ; clr ic_1 clr ic_2 inc cunt_m ;1.2..a_SW cp a_SW,cunt_m ; brcs t_61 ;if(activ SW< cunt_m) to rjmp t_6e t_61: clr cunt_m inc cunt_m ; t_6e: out TCNT0,tc_set ;next out SREG,back_i reti ;------------------------------------------------- Wait: ;3.52MHz=0.284uS 1mS mov gr2,speed wa1: sbi PortB,sound ldi wcunt,220 ; wa2: nop ;4*220*0.284u=250uS dec wcunt brne wa2 cbi PortB,sound ldi wcunt,220 wa3: nop dec wcunt ;4*220*0.284u=250uS brne wa3 dec gr2 brne wa1 mov gr2,speed wa11: sbi PortB,sound ldi wcunt,220 ; wa12: nop dec wcunt ;4*220*0.284u=250uS brne wa12 cbi PortB,sound ldi wcunt,220 wa13: nop dec wcunt ;4*220*0.284u=250uS brne wa13 dec gr2 brne wa11 ret ;------------------------------------------------- Wait2: ;3.52MHz=0.2841uS mov gr2,speed ;speed*1mS wa21: ldi wcunt,251 ; wa22: nop ; nop nop nop nop nop nop nop nop nop nop ;14*251*0.2841u=1000uS(1mS) dec wcunt brne wa22 dec gr2 brne wa21 ret ;------------------------------------------------- |
もどる [MAIN MENU]