Bonjour,
J'ai rencontré un probleme avec une init d'UART2 sur un PIC18F46K22 (sous MLPAB C18)
en utilisant la librairie C18,
suite à une modif de frequence
AVANT : FOSC interne 16Mhz ... init OK
APRES : FOSCs avec Q=20Mhz .. probleme
question: le parametre de passage est il limité à 8 bits , soit 255 maxi ?
Apres re-consultation de la datasheet (page 283) du PIC et des tableaux BRG fonction de FOSC
j'ai rajouté les instruction forcant SPBRG à la valeur de 4160 ( valeur prevue pour 4Mhz=832 * 5 => 4160)
et BRG16=1 BRGH=1
... et c'est OK !
nota: j'utilise en meme temps UART1 à 19200 bauds
qui ne m'a posé aucun probleme lors du passage de 16MHz à 20 Mhz
avec la classique init UART et ajustement du BRG. de 51 pour 16Mhz à 65 pour 20Mhz
mais ici le parametre reste inferieur à 255 ..
Doit-on en conclure qu'il vaudrait mieux initialiser les UART directement (in manual mode!)
via les registres plutot que d'utiliser les bibliotheques ?
Code:void Init_UART2_TeleInfo(void) { // init 1200,E,7,1 10Mhz avec IT en rx // voir para 18.5 spec sheet DS41159B page 186 Open2USART( USART_TX_INT_OFF & USART_RX_INT_OFF & //interrupt NON armee USART_ASYNCH_MODE & USART_CONT_RX & //USART_SINGLE_RX & USART_EIGHT_BIT & // use of 7 bits 8em bit =Parite //USART_BRGH_LOW,208 // 16Mhz FOSC interne sans PLL ... OK //USART_BRGH_HIGH,260 // Q=20Mhz init 1200,E,7,1 avec IT en rx ... BAD USART_BRGH_LOW,260 // Q=20Mhz init 1200,E,7,1 avec IT en rx ... BAD ); // ..mais OK avec surcharge ci dessous TXSTA2bits.BRGH=1; BAUDCON2bits.BRG16=1; SPBRGH2=0x10; //4160 SPBRG2=0x40; }
-----