pic24 et UART, la reception ne marche pas ??
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

pic24 et UART, la reception ne marche pas ??



  1. #1
    nordiste

    pic24 et UART, la reception ne marche pas ??


    ------

    salut,
    je bloque sur un problème bizare :
    j'utilise un pic24F08KA101.
    je souhaite utiliser l'UART1 pour communiquer avec un périphérique.
    il est dit 1 stop bit, pas de parité, autobaud, vitesse de base :4800baud.

    j'arrive a envoyer des données, mon périphérique répond, mais le buffer d'entree ne se remplis pas...
    j'ai vérifié a l'oscilloscope, les temps sont bon, j'ai exactement le meme temps entre le pic et le périphérique.

    voici le code d'initialisation du port :
    Code:
    // on ouvre le port 1
    U1BRG=103;
    U1STA = 0;
    U1MODE = 0x8000; //Enable Uart for 8-bit data    no parity, 1 STOP bit
    U1STAbits.UTXEN = 1; //Enable Transmit

    l'envoi :
    Code:
    void envoyer(char* val)
    {
    	int i = 0;
    
    	while(!U1STAbits.TRMT); 	// on attend que la transmission précédente se termine
    	while (val[i] != 0)			// on parcours la liste
    	{
    		U1TXREG = val[i];		// on envoie caractere par caractere
    		i++;
    	}
    }


    la reception :
    Code:
    	unsigned char val;
    
    
    	while(U1STAbits.URXDA) 	//si un caractère est dans le buffer d'entree
    	{
    		val = U1RXREG; 
    		IFS0bits.U1RXIF = 0; 
    	}


    il ne lis aucune données.
    j'ai essayé de mettre un BP dans la boucle de la reception et on ne rentre jamais dedans.

    y a t-il une particularité dans la config de ces pic ou j'ai merdé avec le code ???
    merci d'avance,
    marc

    -----

  2. #2
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    petite précision, je n'utiliser que RX et TX.

    ca ne fonctionne pas sur aucun des 2 ports qui sont tout les 2 utilisés.

  3. #3
    DAUDET78

    Re : pic24 et UART, la reception ne marche pas ??

    Et un p'tit schéma hard de la liaison ?
    Tu causes avec quoi? avec un autre PIC? un PéCé ? En niveau RS232? tu utilises un MAX232?
    J'aime pas le Grec

  4. #4
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    salut,
    je communique avec un module GSM.
    les niveaux sont 3V 0V, le tout alimenté en 3.3V.

    pour le coté hardware :
    TX1 sur pin 6 (U1RX)
    RX1 sur pin 11 (U1TX)

    TX2 sur pin 5 (U2RX)
    RX2 sur pin 4 (U2TX)
    aucune autre connexion entre le module et le pic.

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

    Re : pic24 et UART, la reception ne marche pas ??

    Citation Envoyé par nordiste Voir le message
    aucune autre connexion entre le module et le pic.
    Pas de 0V ?
    J'aime pas le Grec

  7. #6
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    je parlais de lignes de communication.
    pour les autres, il y a la masse en commun, un regul pour le pic et un regul interne pour le module GSM.

  8. #7
    DAUDET78

    Re : pic24 et UART, la reception ne marche pas ??

    et si tu débranches les liaisons TX et RX entre le GSM et le PIC, tu mesures quelles tensions sur les différents fils (en mettant une résistance de 10K en PullDown pendant la mesure)?
    J'aime pas le Grec

  9. #8
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    je testerais en rentrant.
    peut tu me confirmer que si je met une resistance entre RX et TX, je devrais recevoir des données quand j'en envois (normalement oui)?

  10. #9
    DAUDET78

    Re : pic24 et UART, la reception ne marche pas ??

    Si c'est le TX et le RX du même UART, tu branches en direct et tu as l'écho sur RX de tout ce que tu envoies sur TX .

    Le but des manips que je te demande, c'est de vérifier que tu n'as pas branché le TX du GPS sur le TX du µC et que le TX du GPS est bien à 3,3V au repos
    J'aime pas le Grec

  11. #10
    kronanberg

    Re : pic24 et UART, la reception ne marche pas ??

    Salut !!

    Est ce que tu as essayé de receptionner à l'aide d'une interruption !!
    En général je n'utilise pas d'interruption pour la transmission mais lorsque je suis en reception je préfère en mettre une !!
    Sinon tu es obligé de faire du polling bloquant dans ton code et je trouve que ce n'est pas la meilleur solution !!

    a+

  12. #11
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    je viens de tester en reliant directement UX et TX, ça ne fonctionne pas sur aucun des 2 ports.
    je vais tester l'interruption.
    le code est-il correct ?

  13. #12
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    je viens de tester ca sur un nouveau circuit, ca ne fonctionne pas, j'ai 1 sur la patte de sortie.



    Code:
    #include <p24F08KA101.h>
    
    #define LED2		PORTBbits.RB4
    #define LED1		PORTAbits.RA4	
    #define PWRKEY		PORTAbits.RA2
    
    #define SORTIE		PORTBbits.RB7
    #define ENTREE		PORTBbits.RB2
    
    
    void attendre(int tmp);
    
    
    int main()
    {	
    	TRISBbits.TRISB4=0;	//led 1
    	TRISAbits.TRISA4=0; //led 2
    	TRISAbits.TRISA3=0; // gps wakeup
    	TRISAbits.TRISA2=0; // pwrkey
    	
    	TRISBbits.TRISB0 = 0;	// U2TX
    	TRISBbits.TRISB1 = 1;	// U2RX
    	TRISBbits.TRISB2 = 1;	// U1RX
    	TRISBbits.TRISB7 = 0;	// U1TX
    
    	LED2 = 1;
    	SORTIE = 1;
    
    	while(1)
    	{
    		LED1 = ~LED1;	
    		LED2 = ENTREE;
    	}
    
    	return(0);
    }

  14. #13
    RISC

    Re : pic24 et UART, la reception ne marche pas ??

    Salut,

    Quelques petites remarques :

    1/ Pour les broches en sortie utilise TOUJOURS LATx et pas PORTx (pourquoi ce sujet revient tous les jours )
    Exemple : PORTBbits.RB4 --> LATBbits.LATB4
    modèle générique : LATXbits.LATXY

    2/ Où est l'initialisation des bits de configuration dans ton programme ?...Ne me dis pas que c'est dans l'environnement MPLAB Si c'est le cas implémente de suite un #PRAGMA ....

    3/ Pour tes problèmes d'UART, peux-tu confirmer le type d'oscillateur que tu utilises (interne, quartz, ...) et la fréquence ?

    4/ Tu trouveras d'excellents exemples de code pour les périphériques des PIC24F ici.

    5/ Tu devrais pouvoir trouver du code directement applicable à ton micro à la fin de cette page dédiée au kit PIC24 XLP

    a+

  15. #14
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    pour ce qui est des sorties, j'ai essayé avec lat, pas de changement.
    pour la config, effectivement c'est la config d'MPLAB.
    oscillateur interne 8Mhz.
    je pense que le problème viens du fait que le pic n'arrive déja pas a lire l'entrée...

    la sortie fonctionne, mais quand je lis l'entree avec port ou lat, j'ai toujours 0.
    si je lis les registres avec l'ICD3, j'obtiens les memes résultats.
    pourtant la pin est bien a 3V.
    les seules pin a 1 sont celles que j'ai définit a 1 dans le code (les sorties).
    je ne comprend vraiment pas, j'ai meme essayé de changer le PIC, mais ca ne change rien ...

  16. #15
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    un autre truc, je n'ai accés qu'a 2800octet de memoire de programme et non 8K comme annoncé dans la doc, je me demmande si il n'y a pas un problème avec les fichiers d'MPLAB.

  17. #16
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    voici le nouveau code :

    Code:
    #include "p24fxxxx.h"
    
    #include <stdlib.h>
    
    
    
    #define LED1		LATBbits.LATB4
    #define LED2		LATAbits.LATA4
    
    #define SORTIE		LATBbits.LATB7
    #define ENTREE		PORTBbits.RB2
    
    
    int main()
    {	
    	TRISBbits.TRISB4=0;	//led 1
    	TRISAbits.TRISA4=0; //led 2
    	TRISBbits.TRISB2=1;	// U1RX
    	TRISBbits.TRISB7=0;	// U1TX
    
    
    	LED2 = 1;
    	SORTIE = 1;
    
    	while(1)
    	{
    		LED1 = ~LED1;
    		if (ENTREE == 1)
    			LED2 = 1;
    		else
    			LED2 = 0;	
    	}
    }

    pour ce qui est de la config, je ne trouve pas de doc sur la config avec pragma config sur cette gamme de micro.
    c'est pourquoi j'ai utilisé la config interne de mplab.
    y a t-il une différence entre la config dans MPLAB et dans le code ?

  18. #17
    RISC

    Re : pic24 et UART, la reception ne marche pas ??

    Salut,

    Tu n'as apparemment pas lu les liens que je t'ai donné....sans quoi tu n'aurais pas posé la question sur les bits de configuration

    Ma question sur les bits de configuration n'était pas innocente...tu viens de confirmer une source possible de problème.
    Tu utilises l'oscillateur interne. As-tu une idée de sa précision ???
    L'oscillateur a une précision de +/-1%....à 25C et il est donné pour +/-3% de -40 à +85C pour 3V < Vdd < 3.6V.

    Il est possible d'utiliser l'oscillateur interne malgré son manque de précision, mais la technique pour le faire est assez sophistiquée et n'est utile que dans des applications de gros volume ou l'ajout d'un oscillateur externe n'est pas envisageable en terme de cout.

    Si ton application est une application perso, je te recommande donc de mettre un quartz pour avoir une source de fréquence précise et plus stable en température.
    N'utilises pas le mode autobaud, sauf si tu as bien compris qu'il faut impérativement que l'hote envoie 0x55 avant toute communication ce que ne peut certainement pas faire ton module GPS.

    En résumé LIS LES LIENS 4/ et 5/, cela t'évitera de continuer à perdre du temps...

    Pour ce qui concerne la mémoire tu lis la datasheet :
    PIC24F08KA101 = 8Kbytes mais attention....si tu regarde la FLASH sous la forme de mots de 24 bits (1 instruction), la FLASH est donc de ...2816 mots de 24 bits

    Si tu n'as pas assez de mémoire, il existe une version compatible broche à broche de 16KB du PIC24F08KA101 qui s'appelle le PIC24F16KA101.

    a+

  19. #18
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    je les avais lu mais je n'ai pas trouvé de pragma config, seulement ces bouts de code :
    Code:
     _FBS(BSS_OFF & BWRP_OFF)
        _FGS(GCP_OFF & GWRP_OFF)
        _FOSCSEL(FNOSC_FRCDIV & IESO_OFF)
        _FOSC(FCKSM_CSECMD & POSCFREQ_MS & OSCIOFNC_ON & POSCMOD_NONE & SOSCSEL_SOSCLP)
        _FWDT(FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768)
        _FPOR(MCLRE_ON & BORV_LPBOR & BOREN_BOR3 & I2C1SEL_PRI & PWRTEN_OFF)
        _FICD(BKBUG_OFF & ICS_PGx3)
        _FDS(DSWDTEN_OFF & DSBOREN_ON & RTCOSC_SOSC & DSWDTOSC_SOSC & DSWDTPS_DSWDTPSF) //DSWDT SOSC = LPRC

    ou ça :
    Code:
    _CONFIG1(FWDTEN_OFF & ICS_PGx2)
    _CONFIG2(IESO_ON & FNOSC_PRI & FCKSM_CSECME & POSCMOD_HS & PLLDIV_DIV2 & IOL1WAY_OFF)
    mais cette méthode de config me parait un peu bizare ...
    c'est des fonctions ?
    merci pour l'info sur la mémoire.

  20. #19
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    je viens de trouver ça :
    2.7 Configuration of Analog and
    Digital Pins During ICSP
    Operations
    If MPLAB ICD 2, ICD 3 or REAL ICE emulator is
    selected as a debugger, it automatically initializes all of
    the A/D input pins (ANx) as “digital” pins, by setting all
    bits in the AD1PCFGL register.
    The bits in this register that correspond to the A/D pins
    that are initialized by MPLAB ICD 2, ICD 3 or the REAL
    ICE emulator, must not be cleared by the user
    application firmware; otherwise, communication errors
    will result between the debugger and the device.
    If your application needs to use certain A/D pins as
    analog input pins during the debug session, the user
    application must clear the corresponding bits in the
    AD1PCFGL register during initialization of the ADC
    module.
    When MPLAB ICD 2, ICD 3 or the REAL ICE emulator
    is used as a programmer, the user application firmware
    must correctly configure the AD1PCFGL register.
    Automatic initialization of this register is only done
    during debugger operation. Failure to correctly
    configure the register(s) will result in all A/D pins being
    recognized as analog input pins, resulting in the port
    value being read as a logic ‘0’, which may affect user
    application functionality.
    je pense que mon probleme viens de ça il faut que je teste demain.
    je vous tiens au courant.

  21. #20
    nordiste

    Re : pic24 et UART, la reception ne marche pas ??

    le problème etais bien du au ports qui sont configurés par défaut sur analogique.
    maintenant, je peut enfin travailler sur le programme.
    un grand merci pour ton aide. c'est rare de trouver des gens qui s'impliquent pour aider les autres.

Discussions similaires

  1. Problème réception UART (C8051F310)
    Par invite0282e56d dans le forum Électronique
    Réponses: 0
    Dernier message: 23/02/2010, 10h59
  2. [Blanc] pas de reception sur autoradio
    Par invite59d8d218 dans le forum Dépannage
    Réponses: 13
    Dernier message: 13/03/2009, 16h15
  3. Systèmes imbibé PIC24 / programmation en C
    Par invite57e688f7 dans le forum Électronique
    Réponses: 3
    Dernier message: 29/11/2008, 22h13
  4. probleme uart pic24
    Par djwolf dans le forum Électronique
    Réponses: 3
    Dernier message: 02/06/2008, 23h07
  5. Pas de reception ASTRA ...
    Par invitec66f4400 dans le forum Dépannage
    Réponses: 1
    Dernier message: 18/05/2006, 11h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.