Bonjour,
je suis actuellement en train de coder sur un PIC18F46K22.
Sur ce projet, je dois gérer deux UART à 9600bauds.
La première fonctionne sans problème.
La deuxième, non.
En regardant rapidement, je vois que les registres BAUDCON ne sont pas configurés de la même manière (visualisation dans Watch MPLAB).
Malgré une configuration identique (ou du moins il me semble), le bit BRG16 de BAUDCON1 reste correctement configuré à 1 alors que celui de BAUDCON2 ne le reste pas.
Ci dessous le code d'initialisation de mes UARTS:
Un fois l'initialisation terminée, BAUDCON1 reste égal à 0x48 et BAUCON2 est égal à 0x40.Code:void uart1_init(void) { // UART setup // No auto baud // Wake-up disabled // 16 bit baud rate generator (BRG16=1) // Idle state on TX is low // Received data are not inverted BAUDCON1 = 0b01001000; SPBRGH1 = 0x01; SPBRG1 = 0xA0; PMD0 |= 40; // Enable clock of UART1 // Enable received // 8 bit reception // Enable Serial Port RCSTA1 = 0b10010000; // High speed rate (BRGH=1) // Asynchronous mode // Transmit enabled TXSTA1 = 0b00100100; } void uart2_init(void) { // UART setup // No auto baud // Wake-up disabled // 16 bit baud rate generator (BRG16=1) // Idle state on TX is low // Received data are not inverted SPBRGH2 = 0x01; SPBRG2 = 0xA0; TRISDbits.RD6 = 1; TRISDbits.RD7 = 1; TXSTA2bits.SYNC = 0; PIE3bits.RC2IE = 1; RCSTA2bits.SPEN = 1; BAUDCON2bits.CKTXP = 0; BAUDCON2bits.DTRXP = 0; BAUDCON2bits.BRG16 = 1; RCSTA2bits.CREN = 1; }
Je ne comprend pas pourquoi le bit BRG16 ne reste pas à 1.
Après une recherche de BAUDCON2 dans le projet (Edit -> Find in files), il n'y a pas d'autres accès à BAUDCON2.
Est-ce que quelqu'un a déjà eu ce genre de soucis ?
Merci,
Antoine
-----