Sari la conținut
ELFORUM - Forumul electronistilor

Probleme cu portul serial la 16f628


mdorian

Postări Recomandate

Am un circuit care foloseste PIC16f628A la care pinul de Rx este legat cu cel de Tx , se transmite pe Tx o secventa "abcfefg" de exemplu, si se receptioneaza pe rx pentru detectia erorilor pe linie. Initial am folosit MAESTRO(cu intreruperi) cu buffer de 32 de octeti si totul era in regula pana cand incercam sa introduc niste erori punand in scurt linia la masa , dupa eroare nu mai puteam reinitializa receptorul , am verificat si pe osciloscop si pe calculator pe portul serial si totul e in regula cu transmisia , mesajul e transmis corect , in schimb receptia este eronata. Am incercat si varianta pooled si acelasi lucru se intampla. Singurul mod in care se poate reveni din eroare este sa intrerup alimentarea . Nu revine nici cu reset MCLR. Asta este rutina de initializare uart banksel portb movlw b'11111101' movwf portb; banksel trisb movlw b'00111011' ; RB0 BUTON ; RB 1-2 RX-TX ; RB 3..5 DIPSW movwf trisbinituart banksel spbrg movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps) movwf SPBRG banksel txsta 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 ; sfarsitul initializarilor return Aveti vre-o idee unde gresesc?

Link spre comentariu
  • Răspunsuri 3
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • mdorian

    3

Top autori în acest subiect

Vizitator PicNick

Am un circuit care foloseste PIC16f628A la care pinul de Rx este legat cu cel de Tx .

 

Vrei sa spui ca ai conectat cei 2 pini intre ei? sau ca rx este legat la tx la PC si tx la RX la PC?

 

Verifica urmatoarele:

 

1)

MCLR nu iti functioneaza pt. ca nu este configurat. Uita-te in byte-ul de configurare.

 

EX:

 

_CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _XT_OSC

 

 

2)

;****Rutina Receive****

 

Receive

Bank0

bsf RCSTA,CREN ;activeaza receptia

btfss PIR1,RCIF ;testeaza daca receptia s-a efectuat

goto Receive

movf RCREG,W ;salveaza datele receptionate (doar 8 biti)

movwf Reg1

bcf RCSTA,CREN ;dezactiveaza receptia

return

 

3)

Cum stai cu intreruperile, verifica daca se sterge flag-ul RCIF (dupa golirea reg RCREG).

Link spre comentariu

Multumesc PikNik pentru raspuns, pinii sunt legati intre ei (pinul 7 cu pinul 8) 1- Mclr functioneaza , picul se reseteaza dar tot nu receptioneaza corect 2- rutina receive e un pic mai complicata pentru ca trebuie sa nu se blocheze si am un timeout de cuvant xtimer2 si unul de caracter xtimer1 care decrementati pina la 0 in intrerupere:uartgetch macro movf xtimer2,w xorlw .0 btfss status,z goto $+6 movf xtimer1,w bsf status,c xorlw .0 btfsc status,z goto $+9 banksel pir1 btfss PIR1,RCIF ; (5) check for received data goto $-.12 banksel rcreg movf RCREG,W ; save received data in W bcf status,c banksel pir1 bcf pir1,rcif clrf xtimer1 clrf xtimer2 endm La timeout se seteaza carryAm incercat varianta ta modificata ca sa nu pierd primul caracter:bsf RCSTA,CREN ;activeaza receptia (trimite caracter) (receptioneaza caracter)bcf RCSTA,CREN ;dezactiveaza receptia si tot nu merge bine Probabil e ceva cu bufferul dublu de la pic16f628a (scuze , in primul post am scris 16f628)

Link spre comentariu

Se pare ca problema mea era in legatura cu bufferul hardware de receptie care cred ca nu se reseteaza decat la power off reset , dupa o eroare pe linie am facut din nou initializarea portului serial apoi inainte de orice transmisie am citit portul serial de trei ori ca sa fiu sigur ca bufferul e gol si acum merge bine. Probabil ca raman ceva "gunoaie" in el chiar si dupa reinitializare sau reset. Multumesc din nou pentru sugestii PicNik

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări