Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Maximum int sur PIC?



  1. #1
    Groumpif

    Maximum int sur PIC?


    ------

    Bonjour,

    Dans un de mes programmes j'utilise un int comme variable dans une boucle. Mais je ne comprends pas quelque chose.

    Voici ma boucle :

    Code:
    if(TD==0)	// Si on appuie sur le bouton descente
    	{
    	antirebond();
    	MDS=on;	// On allume le moteur de descente du store
    	            while(TD==0 && compteur2!=valeur)	// Tant que l'on laisse le bouton enclenché et que la butée basse n'est pas atteinte
    	             {
    		delay_ms(50);
    		compteur2++;
    		}
    		antirebond();
    		MDS=off;
    			if(compteur2==valeur)		// Si la butée basse est atteinte on passe en position butée basse.
    			{
    			position2=0;
    			}
    		}
    Et par exemple avec valeur = 100 sa fonctionne mais pas avec valeur = 250.

    compteur2 est un int. Sa valeur maximale est bien plus grande que 250 normalement, non?
    En tout cas avec 250 cette boucle est infini alors qu'avec 100 elle s'arrête bien quand il faut..

    Si quelqu'un voit le problème sa m'aiderait bien ! Je suis en train de me prendre la tête surement sur un truc idiot..

    Merci d'avance!

    -----

  2. Publicité
  3. #2
    Groumpif

    Re : Maximum int sur PIC?

    Je viens de voir que sa m'affiche un avertissement. Mais je comprends pas trop sa signification :

    Code:
    Warning[1] C:\Documents and Settings\a459021\Desktop\MELANGE_FINAL\MELANGE_FINAL2.c 69 : Constant is truncated
     (The default C type cast rules force significant bits in the result to be
     cleared. It is recommended to use typecast one value to make clear
     what the type (size) should be. For example '(long)100*100'. Note
     that the default int size is 8 bit)
    Sa doit être une histoire d'initilisation de constante mais je vois pas..

  4. #3
    mortaurat

    Re : Maximum int sur PIC?

    Citation Envoyé par Groumpif Voir le message
    Et par exemple avec valeur = 100 sa fonctionne mais pas avec valeur = 250.
    Normal car un INT sur un µc 8 bit va de -127 à +128, si tu veux aller jusqu'a 255 tu dois faire unsigned char.
    Si tu veux aller au dela int16 ou int32.

  5. #4
    Groumpif

    Re : Maximum int sur PIC?

    Ah ben tout simplement.. oki ben merci beaucoup ^^

  6. #5
    RISC

    Re : Maximum int sur PIC?

    Salut,
    Citation Envoyé par mortaurat Voir le message
    Normal car un INT sur un µc 8 bit va de -127 à +128, si tu veux aller jusqu'a 255 tu dois faire unsigned char.
    Si tu veux aller au dela int16 ou int32.
    Cela n'est pas correct...Pour les PIC10/12/16, les INT ont effectivement une taille de 8bits, MAIS pour les PIC18, les INT ont une taille de 16 bits...

    Il vaut mieux vérifier pour chaque compilateur car il n'y a pas de règle dans ce domaine.

    a+

  7. A voir en vidéo sur Futura
  8. #6
    ftorama

    Re : Maximum int sur PIC?

    Citation Envoyé par RISC Voir le message
    Salut,

    Cela n'est pas correct...Pour les PIC10/12/16, les INT ont effectivement une taille de 8bits, MAIS pour les PIC18, les INT ont une taille de 16 bits...

    Il vaut mieux vérifier pour chaque compilateur car il n'y a pas de règle dans ce domaine.

    a+
    Ah bon? et le C ANSI c'est quoi?

    En C ANSI, un INT c'est 16 bits signés...
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  9. Publicité
  10. #7
    mortaurat

    Re : Maximum int sur PIC?

    Citation Envoyé par RISC Voir le message
    Cela n'est pas correct...Pour les PIC10/12/16, les INT ont effectivement une taille de 8bits, MAIS pour les PIC18, les INT ont une taille de 16 bits...
    N'empêche que sur ce coup là j'avais raison, et C ANSI (c'est ainsi) !
    Et pis les PIC16 c'est de la merde quand même...

    Et pis aussi d'après wikipedia le type integer fait la taille d'un mot machine.

  11. #8
    DAUDET78

    Re : Maximum int sur PIC?

    Citation Envoyé par mortaurat Voir le message
    Et pis aussi d'après wikipedia le type integer fait la taille d'un mot machine.
    Attention, Wiki n'est pas une référence ! Comme les articles sont écris par n'importe qui, on y trouve de tout. Quand j'utilise, par fainéantise, un article de wiki en citation, je vérifie toujours son contenu pour vérifier que je suis bien d'accord avec l'auteur.
    PS : pour le C ANSI ..... je suis incompétent pour juger.
    J'aime pas le Grec

  12. #9
    vede

    Cool Re : Maximum int sur PIC?

    Salut,

    Citation Envoyé par RISC Voir le message
    (...)

    Il vaut mieux vérifier pour chaque compilateur car il n'y a pas de règle dans ce domaine.

    a+
    je plussoie, je pense que cela dépend plus du compilo C que de la cible...

    et si le compilo respecte la norme C ANSI, et ben un integer fait 16bits...
    (unsigned par défaut?)

    vede
    ;O]
    ____________
    ...

  13. #10
    vede

    Cool Re : Maximum int sur PIC?

    ps :

    après déclarer et utiliser un entier 16bits sur un µC 8bits
    c'est une "vue de l'esprit"... facilitant la programmation en C...
    car comme son nom l'indique, un µC 8 bits ne sait gérer plus
    de 8 bits simultanément... et pour gérer un 16bits, il doit utiliser
    et décomposer ses calculs sur 2*8bits...

  14. #11
    ftorama

    Re : Maximum int sur PIC?

    Citation Envoyé par vede Voir le message
    Salut,



    je plussoie, je pense que cela dépend plus du compilo C que de la cible...

    et si le compilo respecte la norme C ANSI, et ben un integer fait 16bits...
    (unsigned par défaut?)

    vede
    ;O]
    ____________
    ...
    Perso, un compilo qui me sort un int en 8 bits, je le fous à la poubelle sans autre forme de procès, que ce soit sur PIC, AVR ou autres.

    C'est déja assez la m... parfois de programmer pour ne pas avoir à se soucier de l'incompétence de certains éditeurs.
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  15. #12
    DavidDB

    Re : Maximum int sur PIC?

    Un integer, c'est la taille normal des données pour la machine...

    Ce qui est anormal, c'est de voir un integer d'une taille de 16bits pour un machine 8bits...

    Même sur Visual studio ou Java, l'integer respecte bien le processeur avec un integer de 32bits pour les processeur 32bits.

    De même, si on prend les appli PC, un char peut être d'une longueur de 16bits pour respecter les caractères Unicode...

    David.

  16. Publicité
  17. #13
    ftorama

    Re : Maximum int sur PIC?

    Citation Envoyé par DavidDB Voir le message
    Un integer, c'est la taille normal des données pour la machine...

    Ce qui est anormal, c'est de voir un integer d'une taille de 16bits pour un machine 8bits...

    Même sur Visual studio ou Java, l'integer respecte bien le processeur avec un integer de 32bits pour les processeur 32bits.

    De même, si on prend les appli PC, un char peut être d'une longueur de 16bits pour respecter les caractères Unicode...

    David.
    Tu es sur de toi là?

    Le rôle des types standards, c'est justement de s'affranchir de la machine.

    Tu as les types justement orientés hardware tels que byte (8 bits), word (16 bits),dword(32 bits), etc....

    Maintenant, si je prends l'exemple que je connais le mieux, les AVR, qui sont des 8 bits, les int font 16 bits, que ce soit sur Codevision ou sur Gcc.

    Maintenant les éditeurs font ce qu'ils veulent mais la norme ANSI a été faite justement pour faire le ménage là-dedans.
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  18. #14
    RicounetZap

    Re : Maximum int sur PIC?

    Bonjour,

    Juste pour information, Visual Studio 2008, compilateur C++ (Microsoft) indique que le type int est un 32 bits signed integer.
    Je vérifierais ce soir chez moi avec un compilateur 64bits.

    Cordialement
    N'importe quoi, for ever :-)

  19. #15
    DavidDB

    Re : Maximum int sur PIC?

    Oui, j'en suis certain...

    Le ménage à faire, est de ne plus valider l'Integer en AINSI C, vu qu'il ne respecte plus la longueur entière des données sous cette norme...

    C'est marrant de constater que la plupart des langages objet utilise un "short int" d'une longueur 16bits pour les processeur 32bits...

    Je vérifierais ce soir chez moi avec un compilateur 64bits
    En Java, pour les applis 64bits, le INT c'est ... 64bits!

    David.

Sur le même thème :

Discussions similaires

  1. estimation du maximum de vraisemblance (Maximum Likelihood)
    Par Bartolomeo dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 02/06/2009, 14h47
  2. isolation panachée int/ext : possible sur le même mur ?
    Par Tonia dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 9
    Dernier message: 22/01/2008, 18h12
  3. renseignements sur des ecoles sur CCP, TPE/EIVP, Centrale, et Telecom INT
    Par gayon kam dans le forum Orientation après le BAC
    Réponses: 28
    Dernier message: 02/08/2006, 18h49
  4. Réponses: 14
    Dernier message: 29/05/2006, 10h30
  5. INT management / Telecom INT
    Par biba dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 02/02/2005, 18h44
Découvrez nos comparatifs produits sur l'informatique et les technologies.