Probleme de variable de type int PIC18F4620
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Probleme de variable de type int PIC18F4620



  1. #1
    invite52e85ae4

    Probleme de variable de type int PIC18F4620


    ------

    Bonjour,
    voila mon probleme est assez simple à expliquer. j'essaye de stocker la valeur du PORTD dans une variable de type int pour l'envoyer avec l'usart.
    Voila mon code :
    Code:
    	int i;
    	unsigned int x[54];
    	for(i=0;i<53;i++)
    		{ 	
    		x[i]=PORTD; 		
    		putcUSART(x[i])	;	 
    		while(BusyUSART());
    	}

    le probleme est que lors du debugage x[i] est egale a 177 quelque soit la valeur du PORTD.

    quelqu'un peut m'aider s'il vous plait?

    a +

    -----
    Dernière modification par gienas ; 20/07/2010 à 16h41. Motif: Ajouté balise code

  2. #2
    Seb.26

    Re : Probleme de variable de type int PIC18F4620

    Quelle taille fait un int dans ton compilo ?

    Quelle taille fait PORTD ?

    Pourquoi gaspiller 1 int dans ton tableau x[] ?

    Tu es sûr que PORTD vaut bien autre chose que 177 ?

    Vu d'ici, ton code semble OK (même s'il serait plus lisible dans une balise CODE)

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    gienas
    Modérateur

    Re : Probleme de variable de type int PIC18F4620

    Citation Envoyé par Seb.26 Voir le message
    ...
    Tu es sûr que PORTD vaut bien autre chose que 177 ? ...
    Bonjour à tous

    Aux questions de Seb.26 j'ai "envie" d'en rajouter une autre. Es-tu bien sûr qu'entre deux itérations, la variable PORTD est effectivement et correctement rafraîchie?

  4. #4
    invite7a49d0d5

    Cool Re : Probleme de variable de type int PIC18F4620

    Salut,

    peut-être un problème de latch...
    tentes en remplaçant
    x[i]=PORTD;
    par
    x[i]=LATD;

    vede
    ;O]
    ___________
    ...

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

    Re : Probleme de variable de type int PIC18F4620

    Salut Vede,
    Citation Envoyé par vede Voir le message
    Salut,

    peut-être un problème de latch...
    tentes en remplaçant
    x[i]=PORTD;
    par
    x[i]=LATD;
    surtout...pas LATD en mode ENTREE car tu vas lire...le LATCH interne et pas du tout les broches d'entrées!!!!
    Il faut toujours utiliser LATx sur les broches en SORTIE et jamais sur les broches en entrée
    ============================== ==========
    Betty,

    Il faut que tu nous montres le code d'initialisation du PORTD (initialisation de TRISD) car je crains que ton PB cela vienne plutôt de là...

    a+

  7. #6
    invite52e85ae4

    Re : Probleme de variable de type int PIC18F4620

    Merci à tous pour vos réponses. oui effectivement j'ai bien verifié que le PORTD est rafraichie entre deux itérations en debuguant en simulation avec isis.

    pour le code d'initialisation j'ai mis
    //PORTD en entrée
    TRISD= 0b11111111;

    et pour la taille de l'unsigned int c'est 8bits et de meme pour le PORTD

    a +

  8. #7
    RISC

    Re : Probleme de variable de type int PIC18F4620

    salut,
    Citation Envoyé par betty77 Voir le message
    et pour la taille de l'unsigned int c'est 8bits et de meme pour le PORTD
    Quel compilateur C utilises-tu ?
    Sur le compilateur C18, les int ont une taille de 16 bits (signed ou unsigned) ==> voir User Guide ici : C:\MCC18\doc\hlpC18ug.chm

    a+

  9. #8
    invite52e85ae4

    Re : Probleme de variable de type int PIC18F4620

    Oui autant pour moi. c'est bien sur 16 bits. j'ai pas fait attention.
    Le probleme c'est que j'ai essayé d'utiliser un unsigned char à la place et ca ne fonctionne tjr pas (sachant que le unsigned char est codé sur 8 bits) .
    Code :
    int i;
    unsigned char x;

    for(i=0;i<220*nT;i++)
    {

    x=PORTD;

    }

  10. #9
    RicounetZap

    Re : Probleme de variable de type int PIC18F4620

    Bonjour,

    Il peut y avoir plusieurs problèmes :
    Configuration du port D. Est il bien configuré en Input, pas d'utilisation du PWM et pas d'utilisation du PSP.
    As tu moyen de recopier l'entrée du port D sur un autre port pour controle dans le cas ou ce soit la communication série qui soit en cause ?
    x = PORTD;
    LATB = x;
    Quel est la valeur maximale de nT, afin d'éviter tout débordement ?

    Cordialement
    N'importe quoi, for ever :-)

  11. #10
    invite52e85ae4

    Re : Probleme de variable de type int PIC18F4620

    Merci infiniment pour votre reponse. effectivement j'avais mis le bit4 du registre TRISE (PSP mode) à 1, ce qui empechais la lecture du PORTD.


Discussions similaires

  1. Réponses: 4
    Dernier message: 08/07/2010, 13h59
  2. PIC18F4620 Simulation?
    Par invitefedf3f33 dans le forum Électronique
    Réponses: 3
    Dernier message: 18/04/2010, 17h31
  3. C++ variable int
    Par invitefb0f71f3 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 11/12/2009, 10h18
  4. INT management / Telecom INT
    Par invitefaf40fa4 dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 02/02/2005, 17h44
  5. Conversion de type de variable en C++
    Par invite588da7a7 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 03/07/2004, 15h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...