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 ---
Forum général sur le langage C !

Modérateur : Jérémy

communication PC-PIC par USB-UART
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#11 Message par Gérard » ven. 18 déc. 2015 20:23

C'est les 3 derniers qui doivent être mis à 1.
RC1IF est un flag.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

communication PC-PIC par USB-UART
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#12 Message par Jérémy » ven. 18 déc. 2015 23:28

patou149 a écrit :Source du message Papa noël est vraiment sympa.

C'est pas faux :D

patou149 a écrit :Source du message La discussion sur la "RS232" était vraiment sympathique, merci à tous les intervenants chacun a pu profiter des différentes interventions.

J'ai également vraiment aimé cet échange convivial, et constructif. J'ai énormément appris, tout en prenant du plaisir.

Gérard a écrit :Source du message C'est les 3 derniers qui doivent être mis à 1.
RC1IF est un flag.

Oui, y'a eu un léger confusionnage :P

Pour l'heure j'ai travailler, lu le chapitre des INT sur la DS . Y'en a vraiment pas mal . y'a de quoi faire !

Sinon j'ai écrit ces quelques lignes, mais j'ai un erreur lors de la compilation . je ne comprends pas pourquoi .

Code : Tout sélectionner

/*##################################################################################
Programme de test pour liaison UART-USB sur carte EasyPIC_V7 avec PC
Fait par Jérémy pour FantasPic.fr
- Version du "18-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
#################################################################################*/

#define BP PORTD.B0

// 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  ------------------------------------------
int Rx_buffer[16] ;
int i, Rx ;

// Fin des varaibles---------------------------------------------------------------

// Prototypes  --------------------------------------------------------------------
// FIN Prototypes

// Début Interruption---------------------------------------------------------------
void interrupt (){
    if (PIR1.RC1IF==&& UART1_Data_Ready()){  // On check le FLAG de l'INT et le buffer
        UART_Read_Text(Rx_buffer, "OK", 20);   // On enregisre le text
        Lcd_out (1, 1, Rx_buffer );            // On l'affiche
        PIR1.RC1IF = 0;                        // On réarme
     }
}
// Fin Interruption ---------------------------------------------------------------

//##################################################################################
//#########################      PROGRAMME PRINCIPAL       #########################
//##################################################################################
void main() {

    ANSELB = 0x00;             // Configure le PORTB en digital pour le LCD
    ANSELC = 0x00;             // PORTB en digital
    ANSELD = 0x00;             // PORTB en digital

    TRISB = 0x00;              // PORTB en sortie
    TRISC = 0x00;              // PORTC en sortie
    TRISD = 0xFF;              // PORTD en entrée

//----- config. interrutpion ------------------------------------------------------
 INTCON.GIE = 1;           // Activation Global des INT
 INTCON.PEIE = 1;          // Active l'INT sur periphérique
 PIE1.RC1IE = 1;           // Active l'INT sur reception EUSART
 PIR1.RC1IF = 0;           // bit=0 --> buffer vide
 //PIE1.TX1IE = 0;           // Active l'INT sur l'émission EUSART
 //PIR1.TX1IF = 1;           // bit=0 --> buffer plein
//---------------------------------------------------------------------------------

    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)
 {

    if ((BP==1) && (UART1_Tx_Idle() == 1))  // Check le BP et le buffer
       {
            UART1_Write_Text("Hello World !");  // Envoie du texte
            UART1_Write(10);                    // Envoie un CL
            UART1_Write(13);                    // envoie un CR
            while (BP==1);                      // Anti rebond
       }
  }
}


Voici le message d'erreur :

Code : Tout sélectionner


0 122 Compilation Started USB
-UART.c
41 1505 Suspicious pointer conversion USB
-UART.c
42 1505 Suspicious pointer conversion USB
-UART.c
70 1509 Generated baud rate is 9615 bps 
(error = 0.16 percent) USB-UART.c
90 123 Compiled Successfully USB
-UART.c
0 127 All files Compiled in 15 ms  
18 365 Reentrancy is not allowed
: function 'Lcd_Cmd' called from two threads __Lib_Lcd.c
0 102 Finished 
(with errors): 18 déc. 2015, 23:26:45 USB-UART.mcppi


En enlevant ces deux lignes ( mise en commentaires), ca compile bien. Bonne nouvelle mon code fonctionne, avec l'INT et Reception.

Code : Tout sélectionner

    Lcd_Cmd (_LCD_CLEAR);      // On efface l'écran
    
Lcd_Cmd (_LCD_CURSOR_OFF); // On arrete le clignotement du curseur 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

communication PC-PIC par USB-UART
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#13 Message par Guest » sam. 19 déc. 2015 09:11

Bonjour

Bravo c'est bien.
Comme dab cela ne sera ni une polémiques nauséabondes, mais qu'un simple conseil.

Il est dommage dans une telle application d'avoir encore et encore utilisé les fonctions. Pourquoi :

il n'y a dans USART que 2 registres RCSTA et TXSTA et c'est 2 registres nous en apprennent beaucoup sur la gestion des flags (quand comment) des erreurs (quand pourquoi) et donc comment réagir dans telle ou telle situation, avec l'aide de la ds sous le coude, et aboutir a que mettre en INT

Dans un but ludique décortiquer les bits de ces registres fut amah très profitable et aurait répondu a bien de questions , chose que tes fonctions ne t'apportent pas .

Je ne vois pas ainsi par exemple,le contrôle de la vitesse et son calcul, la gestion des erreurs, le mode détection adresse,le contrôle du flux hard ou soft qui est aussi un élément important dans l’étude de ce module, avec le passage en 4 fils par exemple.

Car je suppose que tu vas en faire un tuto, un mode asynchrone en 3 fils et le minimum et il est bien dommage de laisser le reste de coté pour un tuto

A+

communication PC-PIC par USB-UART
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#14 Message par Jérémy » sam. 19 déc. 2015 09:33

Hello maï,

je doute faire un tuto la dessus, car je considère que je dois acquérir encore pas mal de connaissances sur le sujet . Je n'en suis qu'au balbutiements.

Il y a 2 écoles :
- ceux qui disent, pourquoi tu n'utilises pas les fonctions, que des gens bien plus compétents se sont décarcasser à faire, ça t'évitera les erreurs et de ré-inventer l'eau chaude .
- et ceux qui disent de faire ces propres fonctions.

Le temps ne jouant pas en ma faveur, je préfère utilisé les outils qui sont à ma disposition, avec les inconvénients que cela entraine, je suis sur quand même de gagner du temps, et d'avoir un truc plus fiable au final. Car même en faisant mes fonctions elles seraient certainement moins fiables. Après il est vrai que c'est formateur, mais la on est dans du truc complexe pour moi, je n'ai pas les bases.

Mon niveau ne m'a permis de comprendre la moitié de cette phrase:
Je ne vois pas ainsi par exemple,le contrôle de la vitesse et son calcul, la gestion des erreurs, le mode détection adresse,le contrôle du flux hard ou soft qui est aussi un élément important dans l’étude de ce module, avec le passage en 4 fils par exemple.
.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

communication PC-PIC par USB-UART
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#15 Message par Jérémy » sam. 19 déc. 2015 09:47

J'ai regardé ce registre RCSTA, et j'avoue qu'il m'a perdu . Entre UART USART, EUSART ? port serie ?? je sais plus lequel je dois utilisé .

Il y a un tableau en page 282 de la DS .

On retrouve mon message d'erreur , quand on regarde à avec un Fosc à 8Mhz et un débit de 9600bauds !!
malheureusement je ne comprends pas trop

EDIT : je pense que se ne sont que des indications en fait .
Mon probléme dois venir de la LIB LCD à mon avis que de la COM RS232
C'est en faisant des erreurs, que l'on apprend le mieux !!!

communication PC-PIC par USB-UART
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#16 Message par Guest » sam. 19 déc. 2015 09:49

Jérémy a écrit :Il y a 2 écoles :
- ceux qui disent, pourquoi tu n'utilises pas les fonctions, que des gens bien plus compétents se sont décarcasser à faire, ça t'évitera les erreurs et de ré-inventer l'eau chaude .
- et ceux qui disent de faire ces propres fonctions.


NON mon propos n'est pas, faire ou ne pas faire, c'est seulement: UTILISATION des 2 registres et leurs explications tu ne peux pas , le faire avec les fonctions mais si tu ne fais pas de tuto on tourne la page

Mon niveau ne m'a permis de comprendre la moitié de cette phrase:


il y a moult explication sur le net sur la RS232 qui est bien plus vielle que moi :x

tient une copie de la DS sur RCSTA avec ses bits
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

communication PC-PIC par USB-UART
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#17 Message par Jérémy » sam. 19 déc. 2015 10:05

Oui j'ai régardé . Mais j'ai pas tout compris . Beaucoup de terme me sont inconnu, ou alors je ne comprends pas leurs fonctions.

Je pense avoir trouvé mon problème de compilation : lien

Ca compile , quand je mets le LCD_Out dans le main , mais j'ai un autre problème maintenant ca ne s'affiche pas lol !!

Allez je cherche , je cherche
C'est en faisant des erreurs, que l'on apprend le mieux !!!

communication PC-PIC par USB-UART
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#18 Message par Guest » sam. 19 déc. 2015 10:09

juste pour la date de la naissance de RS232 ;) 1962 mer.de je suis encore plus vieux quelle encore tout faux :lol:

ALLEZ A+

communication PC-PIC par USB-UART
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#19 Message par Jérémy » sam. 19 déc. 2015 10:16

maï a écrit :Source du message juste pour la date de la naissance de RS232 ;) 1962 mer.de je suis encore plus vieux quelle encore tout faux :lol:

:lol:
C'est en faisant des erreurs, que l'on apprend le mieux !!!

communication PC-PIC par USB-UART
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#20 Message par Guest » sam. 19 déc. 2015 10:58

Pour ton LCD, tu ne crois pas qu'il serait bien temps de te mettre a debug ? une fois que tu vas goutter, tu seras comme ME impossible sans mon debug

A+


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 56 invités