[Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements



  1. #1
    invitedd558ae9

    [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements


    ------

    Bonjour,

    J'utilise le compilateur C18 avec MPLAB.

    Je voudrai pouvoir mémoriser des evenements en conservant que les 4 derniers en mémoire.

    voici l'exemple de ce que je souhaite réaliser :

    l'evenement E1 arrive : je le stocke dans M1
    l'evenement E2 arrive : je le stocke dans M2
    l'evenement E3 arrive : je le stocke dans M3
    l'evenement E4 arrive : je le stocke dans M4
    l'evenement E5 arrive : je le stocke dans M1 ( on ré-écrit sur M1 )
    l'evenement E6 arrive : je le stocke dans M2

    etc ...

    ainsi M1 , M2 ,M3 , M4 contiendraient respectivement les 4 derniers évenements.

    la liste Mx ré-écrit sur elle même au fur et à mesure ...

    Pourriez vous m'indiquer comment écrirer cela en C ?
    Je vous remercie,

    -----

  2. #2
    invite5637435c

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Bonjour,

    vous ne précisez pas le type des éléments mais vous pouvez utiliser un tableau, par exemple:


    TAB_stock[x]={val_1, val_2, val_3, val_4,... val_x};

    si évènement i -> TAB_stock[i ]=even_i ;
    ........
    si évènement i+1 => i=0

  3. #3
    invitedd558ae9

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    oui, je me suis sans doute mal expliqué, désolé.

    Le but final de ma demande est d'afficher sur un LCD 4x20 les 4 dernieres heures ou un bouton poussoir à été enfoncé.

    Mon programme actuel est capable de détecter et stocker dans le buffer "current_time" l'heure à laquelle un bouton poussoir à été appuyé .

    Code:
    char current_time[20];
    Je voudrai donc constituer une liste ( tableau ) qui contiendrait E1,E2,E3,E4 est afficher le contenu de E1,E2,E3,E4 sur chaque ligne de mon LCD ( je sais faire cela )

    Mon problème se situe au niveau du stockage de la donnée "current_time" à chaque fois qu'un BP est appuyé .

    Je vous remercie de votre aide,

  4. #4
    Seb.26

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Citation Envoyé par lcoulon Voir le message
    Mon problème se situe au niveau du stockage de la donnée "current_time" à chaque fois qu'un BP est appuyé .
    Soit tu fais un buffer cylindrique (solution proposée par HULK28), soit comme tu n'as que 4 valeurs, tu décale chaque valeur vers le bas avant d'enregistrer la nouvelle :
    tab[3]=tab[2]
    tab[2]=tab[1]
    tab[1]=tab[0]
    tab[0]=nouvelle valeur

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

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

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Pourriez vous m'indiquer comment créer un tableau de 4 x 8 char avec C18 ?

    Les 4 lignes du tableau contiendraient les heures précises des 4 événement survenus : ( la longueur serait de 8 charactères pour y stocker l'heure )

    soit :
    Code:
    event_time_http1
    event_time_http2
    event_time_http3
    event_time_http4
    Pour le moment, mon programme est capable, à chaque fois qu'un événement se présente de stocker l'heure précise de celui-ci dans :
    Code:
    char event_time_http[8]
    Je voudrai, selon l'exemple de seb26 ( plus facile pour débuter ) créer un tableau qui contiendrait les 4 dernières valeurs de event_time_http pour ensuite afficher chaque ligne du tableau sur un afficheur LCD avec les commandes suivantes :

    Code:
    strcpy(&LCDBuffer[0][0], event_time_http1);
    strcpy(&LCDBuffer[1][0], event_time_http2)
    strcpy(&LCDBuffer[2][0], event_time_http3)
    strcpy(&LCDBuffer[3][0], event_time_http4)
    Pourriez vous m'aider en me proposant un extrait de code ?
    Je vous remercie,

  7. #6
    invite25df009a

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Salut !!

    Tu peux utiliser un tableau à deux dimensions :
    char tab_event_time_http[4][8];

    Dans la routine d'interruption tu peux sauvegarder à chaque fois la valeur courante dans le tableau à l'aide d'une variable que tu incrémentera. Cette variable doit être déclarer et initialiser à 0 hors de la routine d'interruption.

    tab_event_time_http[i] = event_time_http;
    i++;
    if(i==3) i=0;

    a+

  8. #7
    invitedd558ae9

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Bonjour,

    J'ai essayé de décaler chaque valeur du tableau vers le bas puis d'ajouter en position 1 le dernier évenement survenu , mais des Warning lors de la compilation pour les 3 premieres lignes, pouvez vous me dire pourquoi ?

    Warning [2054] suspicious pointer conversion

    Code:
    char tab_event_time_http[4][8] = {'x'};
    ...
    Code:
    strcpy(tab_event_time_http[4],event_time_http[3]);
    strcpy(tab_event_time_http[3],event_time_http[2]);
    strcpy(tab_event_time_http[2],event_time_http[1]);
    strcpy(tab_event_time_http[1],event_time_http);

  9. #8
    invite25df009a

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Bonjour,

    Tes warnings viennent peut être de l'indice de tes tableaux.
    Normalement quand tu déclares un tableau de 4 valeurs, les indices du tableau
    vont de 0 à 3.

  10. #9
    invitedccdd0e0

    Re : [Code en C18 pour PIC] : Liste pour mémoriser les 4 derniers evenements

    Salut,
    essaye
    char tab_event_time_http[4][8] = {"x"};
    ("x" au lieu de 'x')

Discussions similaires

  1. Programmer en C pour Pic : Détecter et mémoriser un front montant
    Par invitedd558ae9 dans le forum Électronique
    Réponses: 2
    Dernier message: 14/04/2009, 08h41
  2. Code en C pour faire clignoter une led avec un Pic
    Par invitedd558ae9 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/04/2009, 17h30
  3. [PIC] Routines pour transmission en code Manchester
    Par invite87be5ae9 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/11/2008, 01h37
  4. Solutions pour exécuter un code en mémoire externe sur PIC
    Par Toufinet dans le forum Électronique
    Réponses: 6
    Dernier message: 06/12/2007, 07h22
  5. Aide pour memoriser les 20 aminoacides
    Par invite3dd91f0a dans le forum Chimie
    Réponses: 5
    Dernier message: 01/07/2006, 15h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...