Pic16F88 a jeho tmr0
Mala Kobyla
Mala.Kobyla@seznam.cz
Čtvrtek Červen 23 09:30:20 CEST 2005
Dobry den,
mam PIC16f88 a snazim se na nem pomoci tmr0 udelat zpozdeni v radu jednotek
sekund.
(Pracuju na DA a po zapnuti napajeni kazdy node nahodne ceka 1-5 sekund aby
na siti nevznikl velky frmol.:)
Mam krystal 3.6864MHz a nepouzivam prescaler.
pocitam (3686400/4)/256 = 3600Hz (frekvence preruseni)
3600/256 = 14Hz (frekvence po vydeleni na 8bit registru)
=> po nacitani 14 v dalsim 8bit registru uplynula 1 sec.
Kdyz to ale zkusim, dostavam casy delsi 2-3x.
Nemam citac abych overil jestli krystal kmita spravne.
Nechci pouzit tmr1.
Kde delam chybu?
MK2
Tady je zdrojak ocistenej od banksel.
; inicializace -------------------------------------
bcf OPTION_REG, T0CS ; zdroj je Fosc/4
bsf OPTION_REG, PSA ; prescaler je pouzit na WDT
bsf OPTION_REG, PS0 ; PS = 111
bsf OPTION_REG, PS1
bsf OPTION_REG, PS2
bsf INTCON, TMR0IE
clrf p_t1
clrf p_t2
bsf INTCON, GIE
; cekej tak dlouho dokud v preruseni nenacita do 14
boot_1
movfw p_t2
sublw 14 ;14=1sec
bnz boot_1
; kod preruseni --------------------------------
intrpt_begin
btfss INTCON, TMR0IF
goto intrpt_end ; ne
bcf INTCON, TMR0IF
incf p_t1, F
bnz intrpt_end
incf p_t2, F
goto intrpt_end
intrpt_end
Další informace o konferenci Hw-list