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

langage C pour pic32MX795



  1. #1
    davidif

    langage C pour pic32MX795


    ------

    Bonjours

    Je suis en train de programmer un pic32MX795, je suis proche de mon objectif d'apprentissage dessus, seulement, je ne comprend pas une chose qui me paraissai simple a la base : faire une boucle "for" que j'ai codé sur mon micro mais elle ne fonctionne pas.

    En fait, je cherche a convertir un tableau en int

    Code:
    volatile char essai[4];
    volatile int intessai;
    
    essai[0]=0x67;
    essai[1]=0x06;
    essai[2]=0xFD;
    essai[3]=0x32;
    
    
    int arraytoint(char tab[],char nbr_byte)
    {
    int ret=0;
    char i;
    
    	for(i=0; i>4; i++)
    	{
    
    	ret=ret | tab[i];
    	if (i < nbr_byte) ret<<8;
    
    	}
    
    return ret;
    }
    et dans mon main j'ai mis

    intessai=arraytoint(essai,4);

    le problème est que la fonction reste à zéro et ne me retourne rien d'autre

    Merci pour votre aide

    -----

  2. Publicité
  3. #2
    ftorama

    Re : langage C pour pic32MX795

    Ton for s'exécute tant que la condition (le second argument) est vrai.

    Là, il est faux d'entrée, la boucle n'est pas exécutée. En faisant tourner ton programme en pas à pas, tu t'en serais rendu compte immédiatement
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  4. #3
    whoami

    Re : langage C pour pic32MX795

    Bonjour,

    Ta boucle for est fausse, il faut écrire
    Code:
    	for(i=0; i < 4; i++)

  5. #4
    davidif

    Re : langage C pour pic32MX795

    ha bah oui !! effectivement j'mes trompé je me suis focalisé ailleurs

    Merci

  6. #5
    davidif

    Re : langage C pour pic32MX795

    J'ai encore un problème avec ce "for" ici présent

    Code:
    int arraytoint(char tab[],BYTE nbr_byte)
    {
    int ret=0;
    char i;
    
    
    	for(i=0; i<nbr_byte;i++)
    	{
    	ret=ret | tab[i];
    	if (i < nbr_byte-1) ret=ret<<8;
    
    	}
    
    return ret;
    }
    En faite, ça a l'aire de plutôt bien fonctionner avec

    Code:
    essai[0]=0x78;
    essai[1]=0x77;
    essai[2]=0x09;
    essai[3]=0x46;
    avec dans le main ret_intessai=arraytoint(essai, 4);

    et donc ret_intessai=78770946 sans problème, seulement ce que je ne comprend pas c'est que quand une valeur de mon tableau passe au dessus de 7F, par exemple esssai[2]=80, ret_intessai=FFFF8046.

    Si esssai[3]=80 j'obtient ret_intessai=FFFFFF80.

    S'est comme si il y avait une retenu qui intervient pourtant je ne fais pas d'opération, seulement un ou bit à bit ?

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

    Re : langage C pour pic32MX795

    On dirait avoir affaire à une extension de signe. EN toute logique, il faudrait travailler avec des unsigned int pour ce que tu veux faire,et pas des int. Tu as déjà essayé?

    A+

  9. Publicité
  10. #7
    ftorama

    Re : langage C pour pic32MX795

    Normal, ton tab[] est déclaré en char donc des valeurs entre -128 et +127. Tu devrais sincèrement songer à ouvrir un bouquin de C et à étudier un peu la théorie avant de mettre les mains dans le cambouis.

    C'est pas très long, mais ça t'évitera de poser des questions qui trouvent réponse dans n'importe quel bouquin ou cours en ligne
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  11. #8
    davidif

    Re : langage C pour pic32MX795

    Merci Jack, c'est bien ça le problème

    Code:
    int arraytoint(unsigned char tab[],BYTE nbr_byte)
    {
    int ret=0;
    char i;
    
    
    	for(i=0; i<nbr_byte;i++)
    	{
    
    	ret=ret | tab[i];
    	if (i < nbr_byte-1) ret=ret<<8;
    	
    	}
    
    return ret;
    }
    ce qui explique qu'à 127 ça commençait, je comprend mieux maintenant

  12. #9
    davidif

    Re : langage C pour pic32MX795

    Une chose aussi que je n'ai pas compris, quand j'ai voulu mettre des valeurs dans mon tableau pour essayer ma fonction, j'ai fais comme ça dans ma fonction d'initialisation de variable
    Code:
    essai[]={0x32,0x67,0x06,0xFD};
    et j'ai tel erreur
    source\main.c: In function 'init_variable':
    source\main.c:169:7: error: expected expression before ']' token
    c'est pour ça que j'ai fini par faire quelque chose qui fonctionne du style
    Code:
    essai[0] = 0x32;
    essai[1] = 0x67;
    essai[2] = 0x06;
    essai[3] = 0xFD;
    Comment fait-on pour remplir un tableau en ligne ?

    Merci

  13. #10
    Jack

    Re : langage C pour pic32MX795

    Citation Envoyé par ftorama Voir le message
    Normal, ton tab[] est déclaré en char donc des valeurs entre -128 et +127. Tu devrais sincèrement songer à ouvrir un bouquin de C et à étudier un peu la théorie avant de mettre les mains dans le cambouis.

    C'est pas très long, mais ça t'évitera de poser des questions qui trouvent réponse dans n'importe quel bouquin ou cours en ligne
    T'es dur. Le problème est n'évident que lorsqu'on a déjà eu affaire à lui.

  14. #11
    Jack

    Re : langage C pour pic32MX795

    source\main.c: In function 'init_variable':
    source\main.c:169:7: error: expected expression before ']' token
    D'après ce message d'erreur, il apparaît que le tableau est initialisé dans une fonction. On pourrait voir le code exact?

  15. #12
    davidif

    Re : langage C pour pic32MX795

    Je déclare mon tableau dans un fichier definition.h , fichier dans lequel je met toutes mes variables

    volatile char essai[4];

    puis dans mon fichier principal main.c j'ai ma fonction d'initialisation de variables

    Code:
    void init_variable(void)
    {
    nbr_led=1;
    ID_VAL=0;
    
    idx=0;
    val_buff=0;
    Data=0;
    
    //valeur1=0xB2D38721;
    //valeur2=0x775649FC;
    //valeur3=0x3C4F487A;
    
    essai[]	={0x32,0x67,0x06,0xFD};
    
    //essai[0] = 0x32;
    //essai[1] = 0x67;
    //essai[2] = 0x06;
    //essai[3] = 0xFD;
    
    
    ms=0;
    sw=0;
    
    memset(&ANA[0],0,sizeof(ANA));
    
    BP.SW1=0;
    BP.SW2=0;
    BP.SW3=0;
    BP.SW4=0;
    BP.SW5=0;
    BP.SW6=0;
    BP.SW7=0;
    
    BP_OLD.SW1=0;
    BP_OLD.SW2=0;
    BP_OLD.SW3=0;
    BP_OLD.SW4=0;
    BP_OLD.SW5=0;
    BP_OLD.SW6=0;
    BP_OLD.SW7=0;
    
    }
    Laquel je fais appel à l'init de mon main.

    Pour répondre à ftorama, je reprend la programmation de micro après 3 ans d'inactivité dans le domaine, j'ai donc perdu quelques réflexe de réflexion et effectivement avant de poser la question dans les forum j'ai cherché ailleurs et fait des essais.
    Mais après un certains temps je poserai plus ces questions si simple.

  16. Publicité
  17. #13
    Jack

    Re : langage C pour pic32MX795

    Code:
    essai[]	={0x32,0x67,0x06,0xFD};
    est impossible en C:
    tu peux déclarer un tableau en l'initialisant:
    Code:
    unsigned char essai[]	={0x32,0x67,0x06,0xFD};
    mais tu ne peux pas le définir comme tu l'a fait.

  18. #14
    whoami

    Re : langage C pour pic32MX795

    Bonjour,

    Je plussois sur ftorama : il faut quand même apprendre un peu le langage avant de vouloir écrire du code.

    Au final, ça évite de perdre beaucoup de temps sur des problèmes basiques.

  19. #15
    Jack

    Re : langage C pour pic32MX795

    Il me semble qu'on a eu à répondre à des problèmes bien plus basiques sans qu'on ait eu besoin de renvoyer le demandeur à ses chères études.

  20. #16
    whoami

    Re : langage C pour pic32MX795

    Bonjour,

    C'est ça, encourage-le, ça lui fera du bien pour ses connaissances, du coup, il saura tour par intuition.

    Mais je constate quand même que ses problèmes sont dus à une méconnaissance des bases du langage, et on en revient donc à l'éternel :

    Il ne faut pas vouloir courir avant de savoir marcher !


  21. #17
    Jack

    Re : langage C pour pic32MX795

    je ne comprends pas ta réaction:
    je ne l'encourage pas à ne pas travailler, je trouve juste que répondre en gros "reviens nous voir quand tu seras moins nul" est un peu dur.

    Lorsque je vois que quelqu'un demande de l'aide alors qu'il n'a manifestement rien foutu, je comprends qu'on ne réponde pas ou qu'on lui demande de bosser un minimum. Ce problème de signe est sûrement trivial pour qui manie bien le C, mais je peux comprendre que le problème ne sois pas évident pour un débutant.

    Ce n'est que mon impression.

  22. #18
    davidif

    Re : langage C pour pic32MX795

    Je connais le langage c, j'ai bossé pendant quelque années à programmer du pic, seulement ça fait trois ans que j'en ai pas fait et comme je le dis sur un précédant post j'ai perdu un peu certain réflexe ce qui explique malheureusement que je calle sur effectivement des problèmes qui vous paraissent basic, maintenant dans mon projet professionnel il y a une notion de délais que je dois prendre en compte, je bosse tout seul et l'aide que vous apportez dans les forum me sont plutôt nécessaire pour le moment même si j'essaie de me documenter ailleurs et je passe par une réflexion personnel avant de vous solliciter.

    Mais comme dit jack si justement certaines problèmes sont parfois acquis seulement quand on y a été confronté, ça s'appelle l'expérience.

    Merci pour l'aide

  23. Publicité
  24. #19
    davidif

    Re : langage C pour pic32MX795

    Et rassurez vous l'objectif de mon projet est d'apprendre à maîtrisé un nouveau pic, notamment le pic32mx795, et d'être surtout autonome par la suite, je n'ai pas rien foutu et je n'attend pas que d'autre fasse mon boulot , ça fait 1mois et demis que je bosse sur la programmation de ce pic également sur l'interface Pc sous visual C++

  25. #20
    ftorama

    Re : langage C pour pic32MX795

    Citation Envoyé par Jack Voir le message
    je ne comprends pas ta réaction:
    je ne l'encourage pas à ne pas travailler, je trouve juste que répondre en gros "reviens nous voir quand tu seras moins nul" est un peu dur.

    Lorsque je vois que quelqu'un demande de l'aide alors qu'il n'a manifestement rien foutu, je comprends qu'on ne réponde pas ou qu'on lui demande de bosser un minimum. Ce problème de signe est sûrement trivial pour qui manie bien le C, mais je peux comprendre que le problème ne sois pas évident pour un débutant.

    Ce n'est que mon impression.
    Pour ma part, c'était plus pour dire "tu vas gagner du temps à refaire un peu de théorie plutôt que de demander toutes les 5 minutes sur un forum".
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  26. #21
    Jack

    Re : langage C pour pic32MX795

    Sur ce point on est d'accord.

Sur le même thème :

Discussions similaires

  1. bootloader sur pic32MX795
    Par davidif dans le forum Électronique
    Réponses: 2
    Dernier message: 24/10/2013, 19h22
  2. Apprendre le langage C pour les PIC ?
    Par laofibonacci dans le forum Électronique
    Réponses: 24
    Dernier message: 20/06/2011, 13h11
  3. langage c pour clavier
    Par khalid76 dans le forum Électronique
    Réponses: 15
    Dernier message: 22/02/2010, 01h10
  4. quel langage pour pic ?
    Par spilz dans le forum Électronique
    Réponses: 12
    Dernier message: 01/08/2006, 14h40
Découvrez nos comparatifs produits sur l'informatique et les technologies.