Bonjour,
J'ai dois mettre en place une communication série via le module EUSART du PIC 18F13K22 dans le cadre d'un projet. J'arrive à envoyer des données du PIC mais pas de les recevoir.
Je configuré les registres pour travailler en mode 8 bit asynchrone à 20 Kbauds. Comme déjà dit, pas moyen de détecter une réception du côté du PIC, pourtant la transmission se fait bel et bien (Vérifié sur oscillo).
Pour envoyer les caractères au PIC j'utilise l'outil UART tool du PICKit 2. J'ai beau essayer de scruter le flag d’interruption, de lire le registre RCREG en boucle pour voir si un changement a eu lieu ou encore vérifier les flags d'erreurs de la réception, il ne se passe rien. (J'utilise C18 comme compilo).Code:#include <p18cxxx.h> #pragma config FOSC=IRCCLKOUT #pragma config PLLEN=OFF // PLL active par par le software #pragma config FCMEN=OFF #pragma config PCLKEN=OFF // Primary clock under software control #pragma config IESO=OFF // Internal/external switch clock #pragma config PWRTEN=OFF #pragma config BOREN=ON #pragma config BORV=30 #pragma config WDTEN=OFF // Watchdog OFF #pragma config WDTPS=1 #pragma config HFOFST=OFF // System clock OFF until internal oscillator stable #pragma config MCLRE=ON #pragma config STVREN=ON // Reset if stack full #pragma config LVP=OFF #pragma config BBSIZ=OFF // 512K boot block #pragma config XINST=OFF #pragma config CP0=OFF #pragma config CP1=OFF #pragma config CPB=OFF #pragma config CPD=OFF #pragma config WRT0=OFF #pragma config WRT1=OFF #pragma config WRTC=OFF #pragma config WRTD=OFF #pragma config WRTB=OFF #pragma config EBTR0=OFF #pragma config EBTR1=OFF #pragma config EBTRB=OFF #pragma code void main (void) { OSCCON = 0b01110000; OSCTUNEbits.PLLEN = 1; while (!OSCCONbits.HFIOFS); PORTB = 0; LATB = 0; TRISB = 0b10100000; // EUSART SPBRG = 199; // 20 kbaud BAUDCON = 0; TXREG = 0; TXSTA = 0b00100100; RCSTA = 0b10010000; while(1) { if (PIR1bits.RCIF) LED = 1; } }
Quelqu’un aurait une idée?
Merci
-----