Bonjour,
Je travaille actuellement sur une board Olimex PIC-WEB rev C, dotée d'un microcontroller Microchip PIC18F67J60 (voir la présentation ici http://www.olimex.com/dev/pic-web.html ) et je ne parviens pas à recevoir des données en utilisant l'EUSART intégré..
Je suis débutant et je suis un peu perdu, voici le schema electrique : http://www.olimex.com/dev/PIC/PIC-WE...-schematic.pdf D'après ce que j'ai compris, RXD1 et TXD1 des pins 31 et 32 du PIC sont multiplexés sur les pins 11 et 12 de la puce MAX3232 présente sur la board, de même que sur le port UEXT.J'ai trouvé un exemple de code en utilisant le compilateur C18 dans la doc de Microchip et je l'ai adapté à mon PIC.Par exemple j'ai rajouté des "1" avant "USART" dans les fonctions comme Close1Usart, Open1USART.. j'ai rajouté une boucle infinie pour envoyer ma chaine de caractère sans cesse.
je me connecte sur le port Uext avec un hyperterminal configré pour une transmission de 8bits , baudrate 2400. j'ai vu dans la doc de Microchip que certain bit était à activer, comme le SPEN, TRISC7 and TRISC6. ce que j'ai fait, sans plus de succès.J'ai également essayé de configurer manuellement les bits FOSC, STRV etc, mais cela n'a pas aidé non plus. Voici le code :
Merci beaucoup pour votre aide.Code:#define USE_OR_MASKS #include "p18F67J60.h" #include "usart.h" #pragma config FOSC = HSPLL, STVR = OFF, FOSC2 = OFF, FCMEN = OFF unsigned char Rxdata[25]; unsigned char Txdata[] = "MICROCHIP_USART"; void main(void) { unsigned char config=0,spbrg=0,baudconfig=0,i=0,j=0; Close1USART(); //turn off usart if was previously on //-----configure USART ----- config = USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_LOW; //-----SPBRG needs to be changed depending upon oscillator frequency------- spbrg = 51; //At 8Mhz of oscillator frequency & baud rate of 2400. Open1USART(config, spbrg); //API configures USART for desired parameters RCSTA1bits.SPEN1=1; TRISCbits.TRISC7=1; TRISCbits.TRISC6=1; baudconfig = BAUD_8_BIT_RATE | BAUD_AUTO_OFF; baud1USART (baudconfig); //------USART Transmission ---- while(Busy1USART()); //Check if Usart is busy or not while(1){ for(j=0;j<10001;j++){ if (j==10000){ puts1USART((char *)Txdata); //transmit the string j=0; } } } Close1USART(); while(1); //end of program }
-----