Časovač s nízkou spotrebou
Minútky napájané z batérie CR2032 a s MCU TMP47P242VN
ChaN, 19.10.2009-00:00
V konštrukcii je použitý nízkopríkonový MCU Toshiba TMP47P242VN.
Ide o 4-bitový MCU s 2kB OTP ROM a 128 bytovou RAM pamäťou.
MCU zvláda napájanie v rozsahu 2,7 až 6V a odber má 2mA (VCC=5.5V; 4.2 MHz) a iba 500nA (VCC=5.5V) v hold móde.
Datasheet nájdete u nás:
TMP 47P242VNSchéma časovačaČas sa nastavuje pomocou kódových prepínačov (SW2, SW3, SW4) v rozsahu 1 až 999 sec. Po nastavení sa časovanie spúšťa a zastavuje tlačítkom (SW1).
Časovač má vyvedené signály (otvorený kolektor) N.O., N.C. a O.S., pre ovládanie externých zariadení.
Záťaž maximálne 30 mA.
Odber pri napájaní z batérie CR2032, je 100nA a batéria by mala vydržať 2000 hodín.
Schválne, k akým odberom by sme sa vedeli dostať dnes ?Zdrojový kód:
;
; ƒ~ƒjƒ^ƒCƒ}[
;
name aaa
$include(tlcs47.h)
;***********************************************************************
; ‚q‚`‚l—̈æ’è‹` 00h ` 0Fh / 90h ` FFh
dseg rel ddd
org 0 ; zero page ram
Count: res 3 ; minute down counter
State: res 1 ; 0:stop, 1:run, 2:time out beep
org 90h
HLsav: res 2
; <<MEMORY MAPPED REGISTERS>> org 0f4h ; timer counter 1
TC1: res 3
org 0f8h ; timer counter 2
TC2: res 3
org 0fch ; rom data pointer
DTC: res 3
org 0ffh ; stack pointer
SPW: res 1
;***********************************************************************
; ƒvƒƒOƒ‰ƒ€ƒR[ƒh
cseg rel ccc
org 00h
init:
ld a,#0ch ; init SP
st a,SPW
out #1100b,%P01 ; init ports
out #0000b,%P09
cmpr State,#1 ; ƒXƒ^[ƒg^ƒXƒgƒbƒv ?
testp zf
bs m_stop
test cf
bs sleep
clr %P07,1 ; ݒ莞ŠÔ“Ç‚Ýž‚Ý
ld hl,#Count
in %P00,a
subr a,#-1
st a,@hl+
in %P04,a
subr a,#-1
st a,@hl+
in %P08,a
subr a,#-1
st a,@hl+
set %P07,1
st #1,State ; ƒJƒEƒ“ƒgŠJŽn
out #0011b,%P01 ; SW on
call beep
counter: ; ƒJƒEƒ“ƒgƒ_ƒEƒ“ƒ‹[ƒv
ld hl,#Count
dec @hl
bs wait60
st #9,@hl+
dec @hl
bs wait60
st #9,@hl+
dec @hl
bs wait60
bs timeout
wait60: ld hl,#TC1 ; 60•b‘Ò‚¿
st #nll(-1465),@hl+
st #nlh(-1465),@hl+
st #nhl(-1465),@hl+
dec l
w60l: call click
ld a,@hl
cmpr a,#0
bs w60l
bs counter
timeout:; ƒ^ƒCƒ€ƒAƒEƒg
st #2,State
out #1100b,%P01 ; SW off
out #1100b,%P02 ; O.S. on
ld hl,#-150 ; 10•b–‚炷
tmol: call beep
inc l
bs tmol
add h,#1
bs tmol
out #1111b,%P02 ; O.S. off
bs sleep
m_stop: ; ƒJƒEƒ“ƒg’âŽ~
call beep
call beep
call beep
sleep: ; ‘Ò‹@ƒ‚[ƒh‚É“ü‚é
st #0,State
ld a,#0101b ; enter hold mode, wait for reset!
out a,%P10 ;
click: ; ŒvŽžƒNƒŠƒbƒN‰¹
ld a,TC1
and a,#7
cmpr a,#1
bs clcr
ld a,#0
out #0111b,%P02
out #1011b,%P02
clcp: out #1111b,%P02
out #1111b,%P02
out #1111b,%P02
inc a
bs clcp
out #0111b,%P02
out #1011b,%P02
out #1111b,%P02
clcw: ld a,TC1
and a,#7
cmpr a,#1
testp zf
bs clcw
clcr: ret
beep: ; ’P”ƒr[ƒv
xch hl,HLsav
ld a,#1000b ; set timer 1, 391Hz
out a,%P1C
ld hl,#TC1 ; 1/30•b–‚炷
st #-13,@hl+
ld a,@hl
bpl1: set %P02,3
clr %P02,2
nop
nop
cmpr a,@hl
set %P02,2
clr %P02,3
testp zf
bs bpl1
set %P02,3
ld hl,#TC1 ; 1/30•b‹x‚Þ
st #-13,@hl+
ld a,@hl
bpl2: cmpr a,@hl
testp zf
bs bpl2
ld a,#1001b ; set timer 1, 24.41Hz
out a,%P1C
xch hl,HLsav
ret
end
Celkový pohľad na časovač
Preklad: EdizonTN (vysypaný čaj upratal google translator)
Zverejnené so súhlasom autora.
Homepage projektu:
http://elm-chan.org/works/timer/report.html
tento článok je z mikroZONE
( https://www.mikrozone.sk/pluginy/content/content.php?content.27 )