Sari la conținut
ELFORUM - Forumul electronistilor

Probleme cu RCIF din RCSTA (USART) la 18F452


Mar

Postări Recomandate

Pentru a simula receptiea USART am am scris urmatorul program care utilizeaza intrerupere pe receptie:Problema e ca din simulare imi arata ca RCIF nu se seteaza. Din cauza RCIF-ului programul nu poate sa sara la ORG 0x0008 si sa faca secventa COM. Am simulat un alt program care utilizeaza intrerupere pe port B si acolo cind intentionat setez RBIF programul raspunde la simulare (sare adresa de intrerupere 0x0008 si apoi face secventa de intrerupere) Va rog sa-mi spuneti daca mai trebuie sa setez ceva pentru a functiona RCIF-ul.(Simularea se face cu MPLAM SIM)MultumescORG 0x0002Goto mainORG 0x0008Bra Commain movlw 80h movwf 0xF94 ;setez Rx ca IN si restul OUT din TRISC movlw 0x26 movwf 0xFAC ;setez TMTR=1;BRGH=1;TXEN=1 din TXSTA movlw 19h movwf 0xFAF ; setez 9600 bps (4MHZ Quartz) din SPBRG movlw 0x90 movlw FAB ; setez CREN=1;SPEN=1 din RCSTA bsf 0xFF2, 7 ; setez intreruperea globala GIEH din INTCON bsf 0xFF2, 6 ; setez intreruperea periferica GIEL/PEIE bsf 0xFD0, 7 ; activez IPEN sin RCON bsf 0xF9F, 5 ; setez RCIP pe high priority din IPR1 bsf 0xF9D, 5 ; setez RCIE din PIE1 bcf 0xF9E, 5 ; sterg RCIF dinPIR1test nop nop nop nop bsf 0xF9E, 5 ; setez RCIF dinPIR1 goto testcom bsf ......... ; se poate pune orice in secventa de intrerupere ............... bcf 0xF9E, 5 ; sterg RCIF dinPIR1 retfie

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

Top autori în acest subiect

  • Mar

    4

  • puiu

    4

Top autori în acest subiect

1. Vezi ca RCIF are proprietatea de R-0 nu o are R/W-0 si in plus are inca o prorietate ca trece in zero prin citirea registrului RCREG. Toate aceste detalii le gasesti in REGISTER 8-4: PIR1: PERIPHERAL INTERRUPT REQUEST (FLAG) REGISTER 1.

Link spre comentariu

Am mai cercetat programul si am vazut ca nu se modifica RCIP, cred ca asta e problema. de exemplu daca la simulare dau bsf IRP1, RCIP nu seteaza RCIP in program.Deci nu pot sa selectez nici o prioritate pe intrerupere.

Link spre comentariu

1. Vezi ca nu de geaba ti-am dat infornmatiile precedente. Aducerea in zero a acestui bit se face prin citirea registrului RCREG, iar semnalizarea prin trecerea in unu a lui este data daca este activat bitul corespunzator in PIE. Deci nu are ce cauta instructiunea bcs RCIF. Incearca in stimuli sa dai pe RC7 cu togle conform cu setarile pentru receptie.2. Ordinea de setare a modulului USART este:To set up an Asynchronous Reception:1. Initialize the SPBRG register for the appropriatebaud rate. If a high speed baud rate is desired,set bit BRGH (Section 16.1).2. Enable the asynchronous serial port by clearingbit SYNC and setting bit SPEN.3. If interrupts are desired, set enable bit RCIE.4. If 9-bit reception is desired, set bit RX9.5. Enable the reception by setting bit CREN.6. Flag bit RCIF will be set when reception is completeand an interrupt will be generated if enablebit RCIE was set.7. Read the RCSTA register to get the ninth bit (ifenabled) and determine if any error occurredduring reception.8. Read the 8-bit received data by reading theRCREG register.9. If any error occurred, clear the error by clearingenable bit CREN.10. If using interrupts, ensure that the GIE and PEIEbits in the INTCON register (INTCON<7:6>) are set

Link spre comentariu

Nu am mai simulat, am utilizat secventa de mai sus dar am citit RCREG iar rezultatul l-am copiat intr-un ram si apoi l-am afisat pe lcd. Deci am scris direct pic-ul si l-am testat pe placa si a functionat.

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