-
18/07/2012 - 21h48 bonhommr [EUSART] Problème de com avec PIC18F23K22
Bonjour,
pour un projet, je souhaite programmer le PIC18F23K22.
Je suis assez débutant dans le monde Microchip.
J'ai un PICkit3 et arrive à communiquer avec le microcontrolleur.
Je souhaite tout simplement envoyer des caractères sur le port série, 9600bauds, 8 bits, pas de parité, 1 bit de stop. (EUSART1).
Cependant, ça n'a pas l'air de fonctionner (oscillo sur la broche du micro).
J'utilise le code suivant:
Le début du code (RST_IC et WIRELESS) sert pour le reste de mon montage (commande d'un switch et du reset d'un autre composant). Code: //#pragma code*/
void main (void)
{
// Configuration bits
// set internal oscilator with frequency to 16MHz
OSCCON = 0x72;
// Try to communicate with serial port with PC
//set WIRELESS = 1 (Output, 1), RA7
// Set RST_IC = 1 (Output, 1) RB3
// setup for Asynchronous, 8bit, 9600bauds
TRISA = TRISA & 0x7F; //set RA7 as Output
PORTA = PORTA | 0x80; // set RA7 as 1
TRISB = TRISB & 0xF7; //set RA7 as Output
PORTB = PORTB | 0x08; // set RA7 as 1
//configure serial port
// set bauddrate to 9600 bauds
// set BRGH and BRG16 = 0
SPBRG1 = 0x19;
SPBRGH1 = 0x00;
BAUDCON1 = BAUDCON1 & 0xF7;
TXSTA1 = TXSTA1 & 0xFB;
// Set TRIS to '1' for RC6 and RC7
TRISB = TRISB | 0xC0;
// Clear SYNC and set SPEN to activate serial port
TXSTA1 = TXSTA1 & 0xAB;// enable TX, asynchronous mode, 8bits, low speed
RCSTA1 = RCSTA1 | 0x90;// Enable receiver
RCSTA1 = RCSTA1 & 0xBF;
TXSTA1 = TXSTA1 | 0x20;
TXREG1 = 0x55;
} Est-ce que quelqu'un peut m'apporter ses lumières ou me donner une piste ?
J'ai essayé autant que possible de suivre la datasheet du PIC (étapes page 268)
Merci !
-
19/07/2012 - 19h05 RISC
Re : [EUSART] Problème de com avec PIC18F23K22
Salut,
Il manque la déclaration des bits de configuration dans ton programme...
Je te recommande de jeter un oeil sur le code de la carte PICDEM2PLUS qui utilise le PIC18F46K22 qui est le "grand frère" de ton PIC.
Le code comprend la gestion d'une liason série : http://www.microchip.com/picdem2plus
a+
Ma marotte ? les microcontrôleurs...mais pas tous ;=) -
19/07/2012 - 20h32 paulfjujo
Re : [EUSART] Problème de com avec PIC18F23K22
bonsoir,
Malheureusement, ton code est relativement indigeste ..
pourquoi ne pas utiliser les champs de bits qui facilite la comprehension..
tel que dans l'exemple cité par RISC
source serial.c
attention il n'y a pas de gestion d'erreur dans la routine d'interruption de cet exemple .
sur les 18F46K22 ne pas oublier ANSELC=0 ; // no analog
je ne sais pas si ton pic est dans ce cas.
-
21/07/2012 - 09h49 bonhommr
Re : [EUSART] Problème de com avec PIC18F23K22
Bonjour,
j'ai bien compris que c'était indigeste et je vais essayer d'utiliser la librairie MCC18. Code: #include <p18f23k22.h>
#include <usart.h>
void main (void)
{
// Configuration bits
// set internal oscilator with frequency to 16MHz
OSCCON = 0x72;
// Try to communicate with serial port with PC
//set WIRELESS = 1 (Output, 1), RA7
// Set RST_IC = 1 (Output, 1) RB3
// setup for Asynchronous, 8bit, 9600bauds
TRISA = TRISA & 0x7F; //set RA7 as Output
PORTA = PORTA | 0x80; // set RA7 as 1
TRISB = TRISB & 0xF7; //set RA7 as Output
PORTB = PORTB | 0x08; // set RA7 as 1
// configure USART
Open1USART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25 );
while(1)
{
Write1USART(0x65);
}
} Quand je compile, j'ai l'erreur suivante:
D:\Projet RFID\Hardware\v2\Firmware\v0.1 \main.c:67:Warning [2058] call of function without prototype
D:\Projet RFID\Hardware\v2\Firmware\v0.1 \main.c:72:Warning [2058] call of function without prototype
Ce qui correspond aux fonctions Write1USART et Open1USART.
J'ai cherché un peu et j'ai trouvé ce lien qui semble correspondre à mon problème: http://www.microchip.com/forums/m498169.aspx
Ce qui se passe, c'est que dans mon pconfig.h, je n'ai pas de définition de mon PIC (j'utilise un PIC18F23K22).
Par contre, j'ai bien un p18f23k22.h de disponible.
Il me semble donc qu'une petite modification de pconfig.h permettrait de resoudre le problème mais je ne vois pas comment faire.
Est-ce quelqu'un sait comment faire pour que je puisse profiter des librairies ?
Merci beaucoup !
-
23/07/2012 - 18h33 RISC
Re : [EUSART] Problème de com avec PIC18F23K22
Salut,
Pour pouvoir utiliser les librairies du C18 il faut inclure le fichier header du/des périphérique(s) que tu veux utiliser.
#include <timers.h>
#include <usart.h>
...
Voir les différents headers dans ce répertoire : c:\Program Files (x86)\Microchip\mplabc18\v3.42 \h\
Tu trouveras la documentation des librairies périphériques du C18 ici : c:\Program Files (x86)\Microchip\mplabc18\v3.42 \doc\PIC18F Peripheral Library Help Document.chm
a+
Ma marotte ? les microcontrôleurs...mais pas tous ;=) | | |