Mar Postat Noiembrie 24, 2010 Partajează Postat Noiembrie 24, 2010 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
puiu Postat Noiembrie 24, 2010 Partajează Postat Noiembrie 24, 2010 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
Mar Postat Noiembrie 24, 2010 Autor Partajează Postat Noiembrie 24, 2010 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
puiu Postat Noiembrie 24, 2010 Partajează Postat Noiembrie 24, 2010 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
Mar Postat Noiembrie 25, 2010 Autor Partajează Postat Noiembrie 25, 2010 Am citit RCREG si acu functioneaza (exact cum ai spus)Multumesc Link spre comentariu
puiu Postat Noiembrie 25, 2010 Partajează Postat Noiembrie 25, 2010 1. Citirea RCREG este pentru trecerea din 1 in 0 a lui RCIF. Pentru al trece in unu ai simulat RC7 ? Link spre comentariu
Mar Postat Noiembrie 25, 2010 Autor Partajează Postat Noiembrie 25, 2010 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
puiu Postat Noiembrie 25, 2010 Partajează Postat Noiembrie 25, 2010 1. Ma bucur ca a mers conlucrarea cu calculatorul. Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum