Gros problème micro contrôleur logiciel ou matériel?
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Gros problème micro contrôleur logiciel ou matériel?



  1. #1
    Canaillou2k5

    Gros problème micro contrôleur logiciel ou matériel?


    ------

    Bonjour, je rencontre un problème assez étrange.

    J'utilise un micro contrôleur pour envoyer une trame en caractères ASCII via l'UART, mais j'utilise cet même UART pour commander un écran LCD, lui est commander avec des suites de chiffres uniquement.

    J'ai fait un petit câblage autour d'un circuit logique composé de 4 portes NAND. J'ai donc une entrée données (UART du micro), une entrée commande (PORT du micro) et deux sortie, UART1 et UART2.

    Ca me fait une sorte d'aiguillage en fait, si ma commande est à 1, UART1=entree et UART2=1 (ligne au repos) et si ma commande est à 0 UART1=1 et UART2 a 0.

    Voilà le déroulement du programme:

    -choix de l'UART1: PORTX.X=0
    -envoi de l'entête de trame (caractères ASCII)
    -segmentation d'un octet de donnée, exemple 234 en trois variables A=2, A=3, A=4
    -envois en ASCII de A, puis B, puis C
    -choix de l'UART2: PORTX.X=1
    -fonction qui envoi les valeurs A,B,C (sans les modifiés) pour les affichés sur l'écran
    -choix de l'UART1: PORTX.X=0
    -cloture de la trame (caractères ASCII)

    Donc théoriquement j'obtient ça:

    ENTETE A B C CLOTURE

    Mais j'obtient:

    ENTETE ù'^"$ç= CLOTURE

    Si je ne lance pas la fonction d'affichage sur le LCD tout est bon.

    Pourtant mon A B et C sont envoyés dans la trame bien avant la fonction qui gère l'affichage sur le LCD. Donc c'est carrément indépendant.

    Voici mon programme:

    Code:
    void convert(int value, int ligne) // prototype de ma fonction
    //----------------------------------------
    ENVOI DE l'EN-TETE DE TRAME OK
    //----------------------------------------
    convert(234,1); // fonction qui pose problème
    //----------------------------------------
    ENVOI DE l'EN-TETE DE TRAME OK
    //----------------------------------------
    
    void convert(int value, int ligne) //préparation des données, séparation des chiffre afin de les transmettres indépendaement par l'UART, ligne pour l'affichage sur l'écran.
    {         
        
        int A,B,C; 
    
    	//----------------------------------------
    	//SEPARATION DE L'OCTET
    	//----------------------------------------  
    	
        A=(int)(value/100);
        B=(int)((value/10)-(10*A));
        C=(int)((value)-(10*B)-(100*A)); 
       
    	//----------------------------------------
    	//ENVOI DES CARACTERES DE LA TRAMME NMEA
    	//----------------------------------------
        
        TXATT(); UDR=A+48; //transmission du chiffre +48 pour convertir en ASCII  
        TXATT(); UDR=B+48; //transmission du chiffre +48 pour convertir en ASCII
        TXATT(); UDR=C+48; //transmission du chiffre +48 pour convertir en ASCII
        
    	CS^=A+48 ; CS^=B+48 ; CS^=C+48;   //ajout du CS pour la tramme NMEA
        
        //----------------------------------------
    	//AFFICHAGE SUR l'ECRAN LCD
    	//----------------------------------------
    	                       
         PORTD.0=1;	// choix TX2
        
    func_afficher(A,B,C,ligne,1,255,255); //variable a afficher 
        
         PORTD.0=0;	// choix TX1 
    }
    
    Et enfin la fonction func_afficher:
    
    void func_afficher(int chiffre1, int chiffre2, int chiffre3, int x, int y, int color_a, int color_b)
    { 
    	
        int donnees[4], i;
    
    	donnees[0]=chiffre1+48;
    	donnees[1]=chiffre2+48;
    	donnees[2]=44;
    	donnees[3]=chiffre3+48;
    	
    	for(i=0;i<=3;i++)
    	{
    		TXATT();UDR=84;
    		TXATT();UDR=donnees[i];
    		TXATT();UDR=y;
    		TXATT();UDR=x;
    		TXATT();UDR=color_a;
    		TXATT();UDR=color_b;
    		y++ ;  
    		//delay_ms(10);
    	}
    Merci de votre aide.

    .

    -----
    Dernière modification par gienas ; 04/03/2011 à 21h21. Motif: Ajouté les balises code obligatoires pour les programmes

Discussions similaires

  1. Petit problème micro controleur PIC18F4550
    Par youril dans le forum Électronique
    Réponses: 5
    Dernier message: 03/12/2010, 14h16
  2. Réponses: 11
    Dernier message: 22/11/2010, 13h33
  3. Micro Controleur
    Par invitecfc0bef7 dans le forum Électronique
    Réponses: 11
    Dernier message: 05/10/2008, 20h41
  4. GROS probleme micro dynamique non detecté
    Par inviteb70ec0fa dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 17/11/2007, 23h54
  5. micro-controleur
    Par invite103abebb dans le forum Électronique
    Réponses: 2
    Dernier message: 28/07/2007, 23h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.