Problème USART et PIC18F, en C18. Je n'y comprend plus rien.
Discussion fermée
Affichage des résultats 1 à 13 sur 13

Problème USART et PIC18F, en C18. Je n'y comprend plus rien.



  1. #1
    invitec1a2f24b

    Problème USART et PIC18F, en C18. Je n'y comprend plus rien.


    ------

    Bonjour,
    Je rencontre des problèmes pour faire fonctionner correctement l'USART de mon PIC 18F2685.
    J'ai réussi à l'utiliser en émission et réception il y a quelques mois ainsi que les interruptions associées. J'avais écrit un code me permettant de récupérer les trames d'un GPS en 4800bauds, il fonctionnait à merveille, je récupérais toutes les infos...

    Depuis quelques jours, comme j'ai du temps libre, je me suis remis à mon projet, j'ai donc récupéré mon ancien code, mais il ne fonctionne plus.
    Je l'ai ainsi "épuré" afin de ne garder que la partie réception sans interruption, mais je n'arrive plus à récupérer quoi que ce soit.

    Voici le code en C18 sous Mplab :

    Code:
    #include <p18cxxx.h>
    #include <usart.h>
    
    void main(void){
    //Trame : $GPRMC,101443.000,A,4839.0708,N,00226.6614,E,0.07,14.08...
    	char inputstr[75] = "";
    
    	OSCTUNE = 0x00;
    	OSCCON = 0b01100000;      //4Mhz oscillateur interne
    
    	TRISC=0b10000000;
    
    	OpenUSART( USART_TX_INT_OFF &
    		USART_RX_INT_OFF &
    		USART_ASYNCH_MODE &
    		USART_EIGHT_BIT &
    		USART_CONT_RX & 
    		USART_BRGH_HIGH,
    		207 );
    
    	while(1){	
    	                while (!DataRdyUSART());
    	                getsUSART(inputstr, 70);
    		Nop();
    	}
    }
    Pour info, j'ai un Pickit2, j'ai bien vérifié que mon GPS fonctionnait, transmission 8bits de data, 1 bit de stop, pas de parité, 1200bauds dans l'exemple ci-dessus.

    Merci pour votre aide, je suis vraiment ennuyé et ralenti dans mon projet !
    N'hésitez pas si vous avez des questions...

    Martin

    -----

  2. #2
    RISC

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Salut,

    Ou sont les bits de configuration dans ton programme ?????
    Quel type d'horloge utilises-tu (interne, quartz externe,...) ?

    a+

  3. #3
    invitec1a2f24b

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Bonjour RISC,
    J'utilise l'horloge interne : OSCCON = 0b011000000; pour la configurer à 4Mhz.
    Les bits de config sont configuré dans Mplab... J'ai tout désactivé, sauf MCLRE pour pouvoir debugger avec mon Pickit2 ;
    OSC : INT RC-Port on RA6, Port on RA7
    Watchdog : disable...

    Lorsque je débug, le programme reste bloqué sur l'instruction :
    Code:
    while(DataRdyUSART());
    Le buffer de réception ne reçoit donc rien...

    Un grand merci pour ton aide !
    Bonne journée.

    Martin

  4. #4
    invitedf53f6be

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Hello!
    Si ma mémoire est bonne, l'oscillateur interne n'as pas la précision suffisante pour gérer l'uart.
    Je te recommande d'utiliser un quartz. Y a aussi les oscillateur RC externe: je ne les ai jamais utilisés, mais je n'en ai jamais entendu de mal.
    À toi de voir, mais en tout cas, l'interne, oublie.

  5. A voir en vidéo sur Futura
  6. #5
    invitec1a2f24b

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Agonez,
    Il me semble que je l'uitlisais avec l'oscillateur interne, mais dans le doute je vais y mettre un quartz externe (ce soir).
    Biensur, je vous tiens au courant !

    Merci !

  7. #6
    RISC

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Martin,

    C'est bien ce que je craignais...pas de quartz externe.
    Si tu veux faire de la communication (UART, CAN, USB, ETHERNET...) qui fonctionne à tous les coups il FAUT utiliser un quartz.

    Pour les bits de configuration, prends tout de suite la bonne habitude de les configurer DANS TON PROGRAMME et pas dans l'environnement MPLAB...

    Sinon cela peut marcher....de temps en temps ...comme les clignotants

    a+

  8. #7
    invitec1a2f24b

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Je trouve plus ma boite de Quartz..
    La configuration suivante vous parait -elle correcte ?

    Code:
    #pragma config OSC = XT 
    #pragma config PWRT = OFF 
    #pragma config BOREN = OFF
    #pragma config WDT = OFF
    #pragma config MCLRE = ON
    #pragma config PBADEN = OFF
    #pragma config LVP = OFF
    Un ami me donne un quartz cet aprèm.

    Martin

  9. #8
    RISC

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Salut,

    La valeur de certains bits de configuration dépend directement de ton circuit électronique et AUSSI de la valeur de ton quartz (voir datasheet chapitre "Special features"). En dessous d'une certaine fréquence on utilise XT, au dessus, il faut utiliser HS. Tu peux également vouloir (recommandé) activer la PLL pour multiplier par 4 la fréquence. Si ton quartz est < 10MHz, choisi HSPLL car 40MHz est la fréquence Fosc max autorisée.
    Pour PWRT, ON est recommandé je crois si on utilise un quartz. Pour MCLRE cela dépend si tu as un circuit de Reset externe ou pas...
    N'oublie pas qu'autour du quartz il faut aussi 2 petits condensateurs...

    a+

  10. #9
    invitec1a2f24b

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    RISC,
    Malheureusement, ça ne fonctionne toujours pas.
    J'ai mis un quartz de 4Mhz avec deux condo de 22pF (OSC = XT).
    Toutes les masses sont bien reliées entre elles, le cablage semble bon (emission du GPS sur réception du PIC, RX-PORTC 7...).

    Ce qui métonne c'est que le buffer de réception ne se remplisse pas, même de données bidon.
    J'ai changer de PIC (toujours un 18F2685, mais un neuf !) pareil...

    Mon SPBRG est à 51 pour 4800bauds.

    Je ne sais pas quoi dire d'autre, je n'en peux plus !

  11. #10
    invitec1a2f24b

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Bon, j'ai activé l'interruption sur la réception et crée la routine d'interruption suivante :

    Code:
    void it_prioritaire(void){
    	if(PIR1bits.RCIF){
    		PIR1bits.RCIF = 0;
    		
    		while (!DataRdyUSART());
    		result = ReadUSART();
    
    		if(result == 'G'){
    			i = 500;
    		}
    
    		if(result == 'S'){
    			i = 0;
    		}
    	}
    }
    Ensuite j'ai écris une petite appli en VB :
    Dès la mise sous tension du PIC, celui-ci compte de seconde en seconde et envoi la valeur actuelle du compteur par l'USART vers mon appli en 9600bauds. (sorte de chrono)

    Sur mon appli en VB, je peux envoyer des caractères ASCII au PIC ; si j'envoi "S", le compteur se remet à zéro, si j'envoi "G", il se met à 500.

    Bref, tout fonctionne correctement.

    Je ne comprend plus rien. J'ai réinstallé MPLAB et C18 une seconde fois. Mais ça ne change rien.

    Les bits de configuration sont les mêmes que précedemment.

  12. #11
    invitec1a2f24b

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    C'est encore moi !
    J'ai réécrit mon code qui récupère les trames GPS dans ma routine d'interruption et tout fonctionne correctement.

    J'aimerais quand même réussir à utiliser l'USART sans interruptions alors si vous avez des suggestions, elles sont les bienvenus !

    Merci !

  13. #12
    invitefd70d2d5

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Bonjour,

    Je travaille sur un projet de récupération d'une trame de GPS via une liaison RS232 avec un PIC 18F4580 sous mplab C18

    Le projet consiste à extraire la latitude, la longitude, l'heure de la trame GGA et la vitesse depuis la trame RMC.

    j'ai essayé de faire un programme, je ne sais malheureusement pas si il fonctionne ou pas !? je voudrais dans un premier temps recevoir une trame , l'enregistrer dans un tableau et de pouvoir afficher ce tableau contenant cette trame. (avant de faire le decodage et extraire les NMEA GGA et RMC)

    Pourriez vous me verifier ce programme et voir si j'ai bien mis les déclarations etc ...

    #include <p18f4580.h>

    #include <usart.h>
    #include <sw_uart.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <delays.h>
    void closeUSART(void);

    //void getsUSART ( char * gps , unsigned char 80 );
    void main(void)
    {

    char gps[80]; // tableau pour recevoir la trame

    OpenUSART (USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 130); //4800bauds

    TRISCbits.TRISC6 = 0 ; // Lignes affect?es au RS232
    TRISCbits.TRISC7 = 1;
    while(1){
    getsUSART( gps, 80); // instruction pour revoir la trame

    }
    }

    Je vous remercie d'avance pour toute aide possible venant de votre part dans l'optique de me mettre sur une bonne voie.

    PS : je suis une étudiante en 1ere année de DUT, je suis débutante dans le domaine et dans la programmation en géneral.


    Bien à vous.

  14. #13
    Tropique

    Re : Problème USART et PIC18F, en C18. Je n'y comprend plus rien.

    Ce sujet est fermé pour cause de doublon avec son homologue.

    Les doublons ne sont pas permis, et les déterrages déconseillés, prière dorénavant de rester sur l'autre sujet.
    Pas de complexes: je suis comme toi. Juste mieux.

Discussions similaires

  1. Problème (Je n'y comprends rien)
    Par NexXxuS dans le forum Mathématiques du collège et du lycée
    Réponses: 41
    Dernier message: 20/03/2011, 18h39
  2. [PIC18F]-module USART - problème avec le bit OERR
    Par jorg1n dans le forum Électronique
    Réponses: 6
    Dernier message: 28/10/2009, 07h37
  3. mon dm de maths : je n'y comprend rien
    Par invite0f061f58 dans le forum Mathématiques du collège et du lycée
    Réponses: 9
    Dernier message: 13/03/2009, 18h02
  4. Bouhou je n'y comprend plus rien !
    Par invite2f8ed008 dans le forum Chimie
    Réponses: 1
    Dernier message: 22/10/2008, 14h14
  5. fontion je n'y comprend rien
    Par invited1c8361c dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 10/04/2006, 18h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...