Založen: Oct 30, 2006 Příspěvky: 2310 Bydliště: Poblíž Zlína
Zaslal: út únor 09 2010, 22:45 Předmět: Hodiny a seriový přenost Pic 16F628
zdravím
Jsem našel dva programy pro hodiny a na sériový přenos dat do PC a potřeboval bych je spojit v jedno aby hodiny šly a po stisku tlačítka byl ten aktuální čas přenesen pomocí seriového portu do PC přikládám zdrojový kód
PRERUS movwf TMP_W ; (ulozeni hodnot registru W a STATUS)
movf STATUS,W ; prohodi nibble STATUS a ulozi do W
clrf STATUS ; nastaveni banky 0
movwf TMP_S ; ulozit STATUS
MOVLW 4 ; první proměnnná menšitele
MOVWF TMR0
INCF TMR,1
MOVFW TMR
;Při krystalu 20 MHz 155 a při 4 MHz 31 druhá část menšitele
XORLW 31 ;31 155 druhá proměnná menšitele
BTFSS 03,2 ; aktuální nastavení má odchylku 0,000432s , tzn. za jeden den se čas
GOTO CAS_1 ; odchýlí od skutečnosti o 37,3 sekundy , za měsíc to činí 18,6 minuty
CLRF TMR ; toto velmi jemné donastavení můžeš provést kapacitním trimrem u krystalu
INCF SEC,1 ; A PŘEDEVŠÍM SI VŠIMNI , JAK SE PÍŠOU POZNÁMKY !
MOVFW SEC
XORLW 60
BTFSS 03,2
goto CAS
CLRF SEC
INCF MIN,1
MOVFW MIN
XORLW 60
BTFSS 03,2
GOTO CAS
CLRF MIN
INCF HOD,1
MOVFW HOD
XORLW 24
BTFSC 03,2
CLRF HOD
goto CAS_1
CAS
MOVLW 132
CAS_1
;------------------------------- (obnovení hodnot registru W a STATUS)
INT_END movf TMP_PCL,W
movwf PCLATH ; obnova PCLATH
movf TMP_S,W ; prohodi nibble TMP_S a ulozi do W
; swapf TMP_S,W ; prohodi nibble TMP_S a ulozi do W
movwf STATUS ; obnova STATUS
swapf TMP_W,F ; prohodi nibble TMP_W a ulozi do W
swapf TMP_W,W ; obnova W
retfie
btfsc EECON1,WR ; pockat na konec zapisu
goto $-1 ; =1
bcf EECON1,WREN ; zakazat zapis do EEPROM
bcf STATUS,RP0 ; banka 0
;-------------------------------
return
;-----------------------------Seriovy prenos-----------------------------
;************************ Konec programu *************************
auart
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
movlw 7
movwf CMCON ; CMCON=7 set comperators off
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movlw b'00000000' ; set up portA
movwf PORTA
movlw b'00000100' ; RB2(TX)=1 others are 0
movwf PORTB
bsf STATUS,RP0 ; RAM PAGE 1
movlw 0xFF
movwf TRISA ; portA all pins input
movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output
movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
;
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ; brgh = high (2)
movwf TXSTA ; enable Async Transmission, set brgh
bcf STATUS,RP0 ; RAM PAGE 0
movlw b'10010000' ; enable Async Reception
movwf RCSTA
;
; ------------------------------------
; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
clrf dataL
settle decfsz dataL,F
goto settle
movf RCREG,W
movf RCREG,W
movf RCREG,W ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;
call message ; send "16F628 alive"
loop call receive ; wait for a char
call send ; send the char
goto loop
;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive btfss PIR1,RCIF ; (5) check for received data
goto receive
movf RCREG,W ; save received data in W
return
;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send movwf TXREG ; send data in W
TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere
ale vyhazuje mě to toto
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
Založen: Oct 30, 2006 Příspěvky: 2310 Bydliště: Poblíž Zlína
Zaslal: st únor 10 2010, 9:08 Předmět:
procesor napsal(a):
Ten mix programov má len tak sám od seba fungovať?
Nemá to je jen rozdělaný program který by měl ve finále měřit teplotu pomocí čidla DS18S20 po určitých intervalech třeba v nočních hodinách a ukládat do univerzálních registrů a pak po přenést naměřené hodnoty s časovým údajem po seriové lince do PC.A k té chybě co jsem prvně uvedl nebude to v špatně zvolené bance? díky za pomoc
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: st únor 10 2010, 21:24 Předmět:
markoni napsal(a):
ale vyhazuje mě to toto
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
Kto, čo ...to vyhadzuje?
RCREG je v bank-u 0, takže to je o.k. Píše sa tam o tom, že sa deje s RCREG niečo bezdôvodne. Zrejme to vypisuje nejaký (aký?) simulačný-ladiaci, emulačný program. Nie je to trestné, ak sa chce vyčistiť vstupný FIFO a RCREG. TAkže to je len upozornenie na takéto čítanie RCREG bezdovodne (nie je nastavený flag RCIF v PIR1)
Založen: Oct 30, 2006 Příspěvky: 2310 Bydliště: Poblíž Zlína
Zaslal: st únor 10 2010, 22:10 Předmět:
Zdravím
Na těchto instrukcích
movf RCREG,W
movf RCREG,W
movf RCREG,W
UART-W0002: Read attempted from an Empty RCREG SFR, invalid data
abys rozuměl dávám dohromady dva programy a to hodiny a přenos do PC po seriové usart lince každý sám o sobě mě funguje takto chci dát do hromady aby mě to fungovalo když stisknu na jednom pinu tlačítko aby mě ten čas který je právě aktuální se přenesl do PC a zobrazil v terminálu který je součástí WXP.Moje představa je přes noc měřit teplotu pomocí teplotního čidla DS18S20 v určitých intervalech a nechávat je v univerzálních registrech s časovým údajem (proto chci ti běžící hodiny) až po měření to pak připojit na PC a přečíst ty naměřené teploty z údajem o čase v tom terminálu. Takže s toho co jsi napsal jsem pochopil že to není na závadu UART-W0002: Read attempted from an Empty RCREG SFR, invalid data je to tak?díky
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: st únor 10 2010, 23:19 Předmět:
Pýtam sa na to, čo za program ti vypisuje tú hlášku. Predpokladám, že to nie je prekladač. Môže to byť nejaký ladiaci prostriedok, všetky nepoznám.
K tým dvom častiam: teba to spojiť tak aby nar. inicializácia portov a iných sfr bola spoločná. Hodinky využívajú prerušovací systém, a vhodnejší by bolo aj pre sériový kanál používať prerušenia najmä pre príjem. Predpokladám, že podnet na prenos údajov bude dávať PC ako master. Ak v PC bude iba čítací program v PIC-ku prijímacia časť ani nemusí byť implementovaná a PC sa musí chovať ako SLAVE.
Založen: Oct 30, 2006 Příspěvky: 2310 Bydliště: Poblíž Zlína
Zaslal: čt únor 11 2010, 11:16 Předmět:
Tu hlášku mě vypisuje MPLAB SIM,další já tam nepotřebuji do Pic-ku přijímací část ten program v Pic-ku bude vysílat naměřenou teplotu s časovým údajem do terminálu v PC.díky
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.