Stránka 1 z 1
Zprovoznění hodin na PIC16F628A
Napsal: 28 led 2010, 12:09
od markoni
Zdravím
Potřeboval bych aby mi šli hodiny na PIC16F628A frekvence krystalu 20 MHz na bázi přerušení prostě aby šly ti hodiny na pozadí s tím že v hlavním programu by jsem testoval teplotní čidlo DS18S20 určitě je nějaká rutina na ty hodiny nevíte kde? díky
Napsal: 28 led 2010, 12:42
od kony2807
Což takhle modul časovače ? A že v procesoru není jen jeden !
http://ww1.microchip.com/downloads/en/D ... 40044G.pdf - študuj od strany 47 ...
Pak už to je jen otázkou vhodného zpracování v přerušení

.
EDIT: Teď mě tak napadá , pokud by si chtěl jednoduchost programu a vysokou přesnost hodin a jsi ochoten si za to připlatit , je vhodné použití specializovaného obvodu , např. DS3234 -
http://datasheets.maxim-ic.com/en/ds/DS3234.pdf ...
Napsal: 28 led 2010, 21:01
od markoni
Kód: Vybrat vše
INTR MOVWF MEM_W
SWAPF STATUS,W
MOVWF MEM_S
BCF STATUS,RP0
MOVLW 100
MOVWF TMR0
INCF TMR,F
MOVFW TMR
XORLW 100
BTFSS STATUS,Z
GOTO CAS_1
CLRF TMR
INCF SEC,F
MOVFW SEC
XORLW 60
BTFSS STATUS,Z
goto CAS
CLRF SEC
INCF MIN,F
MOVFW MIN
XORLW 60
BTFSS STATUS,Z
GOTO CAS
CLRF MIN
INCF HOD,F
MOVFW HOD
XORLW 24
BTFSC STATUS,Z
CLRF HOD
goto CAS_1
CAS MOVLW 132
CAS_1
BCF INTCON,T0IF
SWAPF MEM_S,W
MOVWF STATUS
SWAPF MEM_W,F
SWAPF MEM_W,W
RETFIE
Kde dělám chybu?
Napsal: 28 led 2010, 23:02
od kony2807
Bylo by vhodné ke kódu napsat alspoň popisky jednotlivých operací , v surovém kódu se těžko orientuje , obzvláště vhodné , pokud se ke stejnému kódu budeš vracet s odstupem času , pokaždé by si musel znovu dešifrovat funkci , použité proměnné , atd ...
Kažodopádně , zkontroluj si inicializaci časovače , přerušení a nastavení předděličky , nebo sem rovnou napiš celý tvůj INIT blok

.
Napsal: 29 led 2010, 10:59
od markoni
Abys rozuměl to mě chodilo původně na 16F84A 4MHz tak to bude asi špatně nastavená předdělička nicméně přikládám INIT
Kód: Vybrat vše
BSF STATUS,RP0
MOVLW B'00110001'
MOVWF TRISB
MOVLW B'11000101'
MOVWF OPTION_REG
BCF STATUS,RP0
MOVLW B'10100000'
MOVWF INTCON
a uvítal bych ten datashet PIC16F628A česky (já a angličtina to nejde do hromady pro mě bohužel

) některé překlady jsou na
http://doveda.byl.cz/historie.htm ale na ten můj typ jak na podporu ne!!díky.
Napsal: 29 led 2010, 11:31
od Atlan
Ak som dopre pochopil....4Mhz /4 = 1Mhz zakladny takt ide to predelicky tj /64 a este / 255-100=155 (ta stovka je cislo davane do TMR) tj prerusenie kazdych 9,920 atd ms
TAk ze do TMR0 daj 224 a s urcitoiu presnostou by to malo ist tak ako na 4Mhz
Napsal: 29 led 2010, 12:30
od Andrea
Hlavně také nezapomenout na to, že nezakázaná přerušení můžou "kecat" do toho přenosu po 1W, takže může docházet k chybám.
Napsal: 29 led 2010, 12:31
od markoni
nepomáhá to asi ta předdělička je spatně nastavená na jakou hodnotu ji nastavit? při přičtení 1 sekundy tak mám na panelu Stopwatch je to co tam je viz screen díky.
Napsal: 29 led 2010, 22:42
od kony2807
Tož kolego, máte to naservírováno až podnos na mejlu - zprovozněné a upravené tak , aby se v tom dalo vyznat .
