microcontroleur PIC et tableaux
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

microcontroleur PIC et tableaux



  1. #1
    invite50cc55df

    Question microcontroleur PIC et tableaux


    ------

    Bonjour à tous,

    J'ai une question vraiment bête mais je sèche lamentablement!
    J'ai fais un programme en C sous CC5X pour mon PIC 16f628a.

    Le but c'est d'envoyer une chaine de caractère via la fonction usart. J'ai un tableau qu'on va appeler T[10], j'ai une méthode qu'on ma donné qui permet d'envoyer caractère par caractère. ça marche très bien!

    Le problème est: comment remplir mon tableau? jusque là je fais T[0]='h';
    T[1]='e';
    T[2]...

    C'est vraiment pas très pratique!

    Comment faire?

    Merci

    -----

  2. #2
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    Bonjour!

    Je n'ai pas utilisé CCS mais d'habitude on fait:
    char tab[5] = {'e','d','f','g','h'};

  3. #3
    invite50cc55df

    Re : microcontroleur PIC et tableaux

    Oui mais là tu initialise la variable!
    En C j'avais l'habitude d'initialiser la variable comme ça:

    /*initialisation*/
    char T[5];
    /*remplissage*/
    strcpy(T,"Hello");

    Sauf que mon compilateur ne connait pas strcpy et que je n'ai pas de librairie du genre stdio.h :s

  4. #4
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    Y'a un truc qui m'échappe là...

    Citation Envoyé par mmarc2007 Voir le message
    Oui mais là tu initialise la variable!
    Ok...

    Citation Envoyé par mmarc2007 Voir le message
    En C j'avais l'habitude d'initialiser la variable comme ça:
    /*initialisation*/
    char T[5];
    /*remplissage*/
    strcpy(T,"Hello");

    Sauf que mon compilateur ne connait pas strcpy et que je n'ai pas de librairie du genre stdio.h :s
    Ben tu le dis toi même:
    "En C j'avais l'habitude d'initialiser la variable"

    Tu veut faire quoi???
    Je présume que ton Hello il va pas changer. Si ton tableau est fixe je ne vois pas le problème.

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

    Re : microcontroleur PIC et tableaux

    erf ! j'aurai du préciser que le "Hello" va changer. Si tu veux le but c'est d'envoyer des chaines de caractere via la ligne RS232 et j'ai donc un tableau déclaré de façon global. J'ai deux méthodes:
    -une qui lis les données de mon tableau et les envois
    -une qui lis les données de la ligne RS232 et les place dans mon tableau.

    Donc le but c'est de changer la valeur de mon tableau dynamiquement

    Merci de ton aide

  7. #6
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    Citation Envoyé par mmarc2007 Voir le message
    Le but c'est d'envoyer une chaine de caractère via la fonction usart. J'ai un tableau qu'on va appeler T[10], j'ai une méthode qu'on ma donné qui permet d'envoyer caractère par caractère. ça marche très bien!
    Il n'était pas question de placer les caractères reçus dans un tableau...

    Je ne vois qu'une boucle comme réponse: a chaque caractères reçu on incrémente i et après T[i]...

  8. #7
    invite50cc55df

    Re : microcontroleur PIC et tableaux

    Attend on c'est pas compris!

    les deux methodes sont implémentés. Je suis capable de recevoir caracteres après caracteres sans problèmes et je les palces dans un tableau c'est pour ça que je n'en ai pas parlé.

    Ce qui me pose problème c'est de placer une chaine de caractere dans un tableau, cela ne pouvant pas se faire par une initialisation car mon tableau est global et dynamique

    Par exemple, mon Pic reçoit une suite de caractere, je les place dans un tableau avec une boucle (comme tu l'as dis). Je regarde le contenu et si c'est valable, je lui répond un petit mot doux du genre "bravo mon petit pic t'es le plus fort ". Je pense refaire moi même la méthode strcpy n'ayant pas la librairie. Tu as des pistes?

    Je suis clair?

  9. #8
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    Désolé mais je ne comprends pas tout a fait le truc!
    Si le but est d'envoyer et de recevoir des chaine de caractères, ok.
    1) tu envois "blablabla"
    2) tu reçois "truc truc truc"
    3) tu envois "j'ai bien reçu"

    Mais pourquoi vouloir faire une chaine de caractères?
    Puisque il suffit de lire le tab pour y voir les infos??

  10. #9
    invite50cc55df

    Re : microcontroleur PIC et tableaux

    Citation Envoyé par maximilien Voir le message
    Désolé mais je ne comprends pas tout a fait le truc!
    Si le but est d'envoyer et de recevoir des chaine de caractères, ok.
    1) tu envois "blablabla"
    2) tu reçois "truc truc truc"
    3) tu envois "j'ai bien reçu"

    Mais pourquoi vouloir faire une chaine de caractères?
    Puisque il suffit de lire le tab pour y voir les infos??
    "j'ai bien reçu" c'est une chaine de caractere ok? ba je veux justement placer "j'ai bien reçu" dans mon tableau!

  11. #10
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    Citation Envoyé par mmarc2007 Voir le message
    je veux justement placer "j'ai bien reçu" dans mon tableau!
    Initialisation. (c'est un message fixe donc?)

    D'autre part une chaine de caractères n'est en fait qu'un tableau...

    Précise ton système pour voir ce qu'il y a derrière.

  12. #11
    invite50cc55df

    Re : microcontroleur PIC et tableaux

    Citation Envoyé par maximilien Voir le message
    Initialisation. (c'est un message fixe donc?)
    Hors propos... L'initialisation n'a aucun rapport avec le fait que ce soit fixe ou non, et je voi pas pourquoi tu te focalise dessu?!


    Citation Envoyé par maximilien Voir le message
    D'autre part une chaine de caractères n'est en fait qu'un tableau...
    Super merci!

    Désolé je suis agressif mais j'ai l'impression de me répéter, j'ai grater un peu sur d'autres forums, j'ai fais cette petite méthode qui semble répondre à mon problème, j'ai plus qu'a tester, bonne continuation!

    Code:
    void remplirChaine(const char * chaine){
    char i=0;
    while(1){
    	char u = *chaine++;
    	if (!u) break;
    	T[i]=u;
    	i++;
    	}
    }
    y a plus qu'a faire remplirChaine("Hello world!");
    Je retrouve ma chaine dans mon tableau T.

    Marc.

  13. #12
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    Citation Envoyé par mmarc2007 Voir le message
    L'initialisation n'a aucun rapport avec le fait que ce soit fixe ou non, et je voi pas pourquoi tu te focalise dessu?!
    Tout comme tu reste focalisé sur ta chaine de caractères...

    Car si le but est d'envoyer ce que t'as dans ton tableau puis de mettre dans ce même tableau ce que tu reçois alors perso je ferais ça:

    tab="toto"
    envoi(tab[i]) //envoi de 't'
    envoi(tab[i+1]) //envoi de 'o'
    envoi(tab[i]) //envoi de 't'
    envoi(tab[i+1]) //envoi de 'o'

    tab[i]= reçois() //tab[i] = caractère reçu
    tab[i+1]= reçois() //tab[i+1] = caractère reçu
    ...
    là pas besoin de ta chaine de caractères... après j'ai peut être mal compris! Mais faut dire ta pas été très clair non plus!!!!!

  14. #13
    invite50cc55df

    Thumbs up Re : microcontroleur PIC et tableaux

    Citation Envoyé par maximilien Voir le message
    tab="toto"
    c'est justement ça que je veut faire, foutre "toto" dans tab!

    Envoyer mon tableau ou recevoir des donner je sais faire, mais je suis incapable de mettre "toto" dans tab!! Relis ce que j'ai ecris je vois pas comment faire plus clair?!

    Ma méthode fonctionne donc merci quand même de ton aide.

  15. #14
    invite2de7076a

    Re : microcontroleur PIC et tableaux

    D'où viennent des données a part de la liaison RS232?
    tab=toto c'est pour mettre la première fois quelque chose dans tab.
    Je croyait qu'après tu mettais dans ton tab ce que tu reçois de ta liaison RS232...

    mon Pic reçoit une suite de caractere, je les place dans un tableau
    Bref ça marche ton truc donc voila...

    Mais pour comprendre faudrai que tu décrive un peu plus ton système! Comment savoir d'ou viennent tes chaines de caractères et ce que t'en fait et c'est pour quoi!
    On n'est pas devin!!!!!

  16. #15
    invite50cc55df

    Re : microcontroleur PIC et tableaux

    Je suis rentré trop dans les details et je t'ai embrouillé, méacoulpa!

    Mais je pensais etre clair lorsque je disais: "comment mettre une chaine de caractere dans un tableau" car bien evidamment tab="toto" n'est pas possible! sauf si mon tableau est un char * et ici ce n'est pas le cas!

    Je n'ai pas testé ma méthode, faut que je flash mon Pic ce soir.

    Bye!

  17. #16
    mictour

    Re : microcontroleur PIC et tableaux

    Bonsoir mmarc2007,

    CC5X a (tout arrive !) une fonction intégrée pour ce genre de problème :
    skip(). Un 'tit exemple, du site suédois ?

    /* String to write */
    char text1( char x)
    {
    skip(x);
    #pragma return[] = "hello, world!" '\0'
    }

    Bonne soirée, mictour.

  18. #17
    invite50cc55df

    Re : microcontroleur PIC et tableaux

    Citation Envoyé par mictour Voir le message
    Bonsoir mmarc2007,

    CC5X a (tout arrive !) une fonction intégrée pour ce genre de problème :
    skip(). Un 'tit exemple, du site suédois ?

    /* String to write */
    char text1( char x)
    {
    skip(x);
    #pragma return[] = "hello, world!" '\0'
    }

    Bonne soirée, mictour.

    Salut mictour,
    Oui j'ai deja vu ce code, d'ailleur il me semble que c'est toi qui me l'a donné il y a quelques semaines pour une autre question. Le problème avec cette méthode c'est que le text est placé dans une méthode et je peux pas le modifier dynamiquement (ex: une réponse qui contient une partie de la question). Je me trompe?

  19. #18
    mictour

    Re : microcontroleur PIC et tableaux

    Bonjour mmarc2007,

    Non tu ne te trompes pas !! Les données de la fonction skip sont enregistrées dan la mémoire programme. (Donc constantes).
    Pour modifier en "dynamique" il te faut en effet un tableau.
    Regarde ceci :

    /* stringIO.c string serial input and output */
    /* Include serialF84.c or seriF87x.c in main program */
    /* Declare global string s[11] in main program */
    /* Function prototypes is in "stringIO.h" */
    void string_in( void ) /* get input to global string s[] */
    {
    char charCount, c;
    for( charCount = 0; ; charCount++ )
    {
    c = getchar( ); /* input 1 character */
    s[charCount] = c; /* store the character */
    putchar( c ); /* echo the character */
    if( (charCount == 10)||(c=='\r' )) /* end of input */
    {
    s[charCount] = '\0'; /* add "end of string" */
    return;
    }
    }
    }
    void string_out( void ) /* serial output of global string s[] */
    {
    char i;
    for( i = 0; putchar( s[i] ); i++);
    }

    Est-ce que ceci t'inspires ?

    Bonne prog, mictour.

Discussions similaires

  1. Microcontroleur PIC 16F883
    Par invite53dd3979 dans le forum Électronique
    Réponses: 1
    Dernier message: 29/01/2009, 14h04
  2. MicroControleur PIC
    Par invitef63fdf10 dans le forum Électronique
    Réponses: 9
    Dernier message: 01/10/2008, 19h15
  3. Microcontroleur Pic(entrée sortie)
    Par invitee2a2ed9a dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 06/10/2007, 10h56
  4. microcontroleur PIC??
    Par invite03934d84 dans le forum Électronique
    Réponses: 5
    Dernier message: 20/07/2006, 19h15
  5. Recherche de microcontrôleur pic
    Par invite3c59dc04 dans le forum Électronique
    Réponses: 10
    Dernier message: 15/03/2006, 22h56
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...