Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Idée pour s'entrainer sur l'UART ?
Bonsoir,
C'est effectivement la bonne démarche.
Au vu de la photo de la carte, il y a une jolie prise DB9 qui véhicule le protocole UART. Avec les informations données, je ne peux pas dire si c'est du vrai RS232 (cad niveaux électriques entre +/- 12 Volts) ou du 0-5 Volts mais qu'importe...
L’intérêt de cette prise c'est que tu peux réaliser un rebouclage entre Tx et Rx par un simple fil et donc tout ce qui sera émis sera reçu (c'est le Hello World ! du protocole UART
).
Maintenant, il suffit d'écrire un petit programme qui initialise l'UART, envoi un ou plusieurs caractères qui devront être reçus tels quels dans un cas de bon fonctionnement.
NB: Attention, ce rebouclage n'est pas possible en utilisant le port USB.
Jérémy a écrit: Alors je souhaite juste faire un petit programme qui me familiarise avec l'UART d'un PIC , genre changer le débit , initialiser ceci ou cela , verifier mes infos que j'envoie ou que je reçois . vraiment la base !..
C'est effectivement la bonne démarche.
Au vu de la photo de la carte, il y a une jolie prise DB9 qui véhicule le protocole UART. Avec les informations données, je ne peux pas dire si c'est du vrai RS232 (cad niveaux électriques entre +/- 12 Volts) ou du 0-5 Volts mais qu'importe...
L’intérêt de cette prise c'est que tu peux réaliser un rebouclage entre Tx et Rx par un simple fil et donc tout ce qui sera émis sera reçu (c'est le Hello World ! du protocole UART
Maintenant, il suffit d'écrire un petit programme qui initialise l'UART, envoi un ou plusieurs caractères qui devront être reçus tels quels dans un cas de bon fonctionnement.
NB: Attention, ce rebouclage n'est pas possible en utilisant le port USB.
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Idée pour s'entrainer sur l'UART ?
Idée pour s'entrainer sur l'UART ?
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
L’intérêt de cette prise c'est que tu peux réaliser un rebouclage entre Tx et Rx par un simple fil et donc tout ce qui sera émis sera reçu (c'est le Hello World ! du protocole UART).
Si je comprends bien l'idée, j'envoie avec mon PIC des données sur la broche Tx avec l'UART et je reçois ces même données sur la broche RX grâce au rebouclage . Je fais un monologue en quelque sorte
Ça me semble parfait cela ! je vais chercher ou se trouve les broches en questions pour faire le pont sur la DB9
Idée pour s'entrainer sur l'UART ?
C'est effectivement cela après avoir bien positionner les 2 switchs J3 et J4 respectivement sur RX-232 et TX-232.
A priori ce sont les broches 2 et 3 de la prise DB9 (cf. RS-232 (Mécanique)).
Restera peut-être à régler le sort de CTS / RTS (broches 4 et 5) and Co, mais on fera le point plus tard... Dans la plupart des cas, cela fonctionne en rebouclant simplement Tx et Rx
.
NB: Cette opération s'appelle "réaliser un Null Modem local".
A priori ce sont les broches 2 et 3 de la prise DB9 (cf. RS-232 (Mécanique)).
Restera peut-être à régler le sort de CTS / RTS (broches 4 et 5) and Co, mais on fera le point plus tard... Dans la plupart des cas, cela fonctionne en rebouclant simplement Tx et Rx
NB: Cette opération s'appelle "réaliser un Null Modem local".
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Idée pour s'entrainer sur l'UART ?
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Si j'ai bien compris le MAX3232 présent sur la carte sert à ajuster les niveaux logiques entre différents devices . Mais comme j'utilise un seul et même PIC dans mon monologue ne pourrais-je pas plutôt relié RC7 et RC6 ensemble directement sur le PIC ? sans passer par le MAX3232 ?
En attendant une confirmation avant de branché , je vais regarder les librairies dont je vais avoir besoin .

Voici le schéma de ma carte pour cette partie :

En attendant une confirmation avant de branché , je vais regarder les librairies dont je vais avoir besoin .

Voici le schéma de ma carte pour cette partie :

Idée pour s'entrainer sur l'UART ?
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Voila un projet JET, que j'ai fais en lisant les librairies disponibles . J'attends votre confirmation sur le HARD avant de tester .
Code : Tout sélectionner
/*##################################################################################
Programme de test pour liaison UART sur carte EasyPIC_V7
Fait par Jérémy pour FantasPic.fr
- Version du "15-12-2015"
- MikroC version 6.6.2
- PIC 18F46K22 FOSC à 8MHZ, Quartz extrene de 8Mhz, PLL désactivée
- Data-Shit du PIC : http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf
- manuel et schéma de la carte : http://www.mikroe.com/downloads/get/1711/easypic_v7_manual_v104c.pdf
#################################################################################*/
// Connections de l'écran LCD
sbit LCD_RS at LATB4_bit;
sbit LCD_EN at LATB5_bit;
sbit LCD_D4 at LATB0_bit;
sbit LCD_D5 at LATB1_bit;
sbit LCD_D6 at LATB2_bit;
sbit LCD_D7 at LATB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Fin connections LCD
// Déclaration des variables utilisées ------------------------------------------
unsigned int Rx;
char Rx_buffer[16];
// Fin des varaibles---------------------------------------------------------------
//##################################################################################
//######################### PROGRAMME PRINCIPAL #########################
//##################################################################################
void main() {
ANSELB = 0x00; // Configure le PORTB en digital pour le LCD
ANSELC = 0x00;
TRISB = 0x00; // PORTB en sortie
UART1_Init(9600); // Initialisation de l'UART
delay_ms(100); // Petite pause
Lcd_Init(); // Initialisation du LCD
Lcd_Cmd (_LCD_CLEAR); // On efface l'écran
Lcd_Cmd (_LCD_CURSOR_OFF); // On arrete le clignotement du curseur
delay_ms(100); // Petite pause
//####################### BOUCLE INFINIE ####################################
while (1){
UART1_Write(45); // J'envoie le chiffre 45 sur l'UART
delay_ms(100); // Petite pause
if (UART1_Data_Ready() == 1) { // Si une donnée est prete à etre lue
Rx = UART1_Read(); // On lie et on la stcoke dans une variable
}
IntToStr ( Rx, Rx_buffer); // Convertit un Int en String pour affichage LCD
Lcd_Out (1,1, Rx_buffer ) ; // Affichage la valeur présente dans le buffer
delay_ms(500); // Petite pause
}
}Idée pour s'entrainer sur l'UART ?
Bonjour,
Il est plus pertinent de faire le rebouclage en bout de chaine (cad Tx@MAX3232 <=> Rx@MAX3232) car d'une part le test est fait de bout en bout et d'autre part j'imagine qu'après tu relieras un vrai périphérique piloté par Tx@MAX3232 et répondant sur Rx@MAX3232...
Ce rebouclage ne servant que temporairement pour valider la communication UART (programme et matériel).
Jérémy a écrit: Mais comme j'utilise un seul et même PIC dans mon monologue ne pourrais-je pas plutôt relié RC7 et RC6 ensemble directement sur le PIC ? sans passer par le MAX3232 ?
Il est plus pertinent de faire le rebouclage en bout de chaine (cad Tx@MAX3232 <=> Rx@MAX3232) car d'une part le test est fait de bout en bout et d'autre part j'imagine qu'après tu relieras un vrai périphérique piloté par Tx@MAX3232 et répondant sur Rx@MAX3232...
Ce rebouclage ne servant que temporairement pour valider la communication UART (programme et matériel).
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Idée pour s'entrainer sur l'UART ?
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour,
très bien, c'est effectivement plus pertinent et réaliste.
je viens de d’exécuter le petit programme du dessus et j'obtiens 45 sur mon LCD
Je suis content car j'ai fais le programme tout seul et quand je vois que ça fonctionne du premier coup, ca fait plaisir . D'ailleurs je crois que c'est la premiere fois que je fais un truc qui fonctionne du premier coup
Il est plus pertinent de faire le rebouclage en bout de chaine (cad Tx@MAX3232 <=> Rx@MAX3232) car d'une part le test est fait de bout en bout et d'autre part j'imagine qu'après tu relieras un vrai périphérique piloté par Tx@MAX3232 et répondant sur Rx@MAX3232...
très bien, c'est effectivement plus pertinent et réaliste.
je viens de d’exécuter le petit programme du dessus et j'obtiens 45 sur mon LCD
Je suis content car j'ai fais le programme tout seul et quand je vois que ça fonctionne du premier coup, ca fait plaisir . D'ailleurs je crois que c'est la premiere fois que je fais un truc qui fonctionne du premier coup

Idée pour s'entrainer sur l'UART ?
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Voici un petit compteur qui parcours la table ASCII :
Par contre impossible d'envoyer une phrase genre "Hello World !!!"
Avec la fonction UART1_Write_Text, je cherche , je cherche !!!
Code : Tout sélectionner
//####################### BOUCLE INFINIE ####################################
while (1){
UART1_Write(compteur); // J'envoie le chiffre de mon compteur
if (UART1_Data_Ready() == 1) { // Si une donnée est prete à etre lue
Rx = UART1_Read(); // On lie et on la stocke dans une variable
Lcd_Chr(2,1,Rx); // On l'affiche
compteur += 1 ; // On parcours la table ASCII
delay_ms(100); // Petite pause
}
}
} Par contre impossible d'envoyer une phrase genre "Hello World !!!"
Avec la fonction UART1_Write_Text, je cherche , je cherche !!!
Idée pour s'entrainer sur l'UART ?
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bon ben .... aprés avoir reussis du premier coup a afficher un charactere, je comprends pas vraiment l'exemple de fonctionnement de la fonction UART1_Write_Text .
Je n'arrive pas a afficher une suite de caractères . comme je ne peux envoyer qu'un seul caractère ( 1 octet), a chaque fois , je dois bien reboucler tant que j'ai des caractères pour l'envoi ?
Voici l'exemple de la librairie UART1_Write_Text de MikroC :
Je n'arrive pas a afficher une suite de caractères . comme je ne peux envoyer qu'un seul caractère ( 1 octet), a chaque fois , je dois bien reboucler tant que j'ai des caractères pour l'envoi ?
Voici l'exemple de la librairie UART1_Write_Text de MikroC :
Code : Tout sélectionner
while (1) {
if (UART1_Data_Ready() == 1) { // if data is received
UART1_Read_Text(output, "OK", 10); // reads text until 'OK' is found
UART1_Write_Text(output); // sends back text
}
} Qui est en ligne
Utilisateurs parcourant ce forum : Bing [Bot] et 4 invités


