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