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

[PIC] Sauvegarde de variable...



  1. #1
    La Praline

    [PIC] Sauvegarde de variable...


    ------

    Bonjour à tous,

    Encore une étape de plus et encore un "problème"... arf décidemment !!!

    Sans plus tarder voici ce qui m'amène...

    Toujours dans le cadre de mon projet(afficheur de rapport de boite)...
    Maintenant j'arrive à calibrer mes vitesses, les afficher lorsque le capteur est positionné sur la vitesse en question...
    Mais, bien sûr, lorsque j'éteinds mon alim et que je la rallume, toutes mes variables n'existent plus!!!

    Cela voudrait dire qu'à chaque fois que le pilote couperait le contact, il serait obligé de re-calibrer ses rapports... INCONSEVABLE !!!!!!!!!!!


    Donc j'aimerais savoir si vous connaissez un moyen de sauvegarder mes variables, même après extinction (pas avec un extincteur ^^ ... enfin pas tout le temps ) du PIC...
    Estce que des variables globales ne suffirait pas? ou alors comment implanter mes variables directement dans la ROM du PIC... enfin je dis ça, c'est ce qu'il me passe par la tête...

    Merci d'avance...

    -----
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  2. Publicité
  3. #2
    etienneh

    Re : [PIC] Sauvegarde de variable...

    je te conseille d'utiliser l'EEPROM du PIC pour sauvegarder tes variables. même après l'extinction de l'engin, les variables sont disponibles.

    je ne sais plus avec quoi tu programmes, mais tu dois trouver dans la doc de ton compilateur des macros qui te permettent de lire et écrire dedans.

    Pour info, HITECH C propose EEPROM_READ() et EEPROM_WRITE, qui rendent tout travail avec la ROM ridiculement facile...

  4. #3
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Salut,

    D'accord merci... donc je pars dans cette optique d'écrire sur la ROM... cool !

    Seulement estce qu'apres l'avoir calibré une fois il me sera possible d'effacer les valeurs de ces variables pour en mettre d'autre (changement de voiture ou autre...) ???
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  5. #4
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Bonjour bonjour,

    Arf ca fait trois heures que je planche sur les docs de mon compilateur (CC5X ) et... ben j'y arrive pas !!!!!!!!!

    Rhô ce serais vraiment dommage parce que là mon projet est fini après ça !!!



    Alors j'aurais deux cas de figures à vous proposez...

    Soit quelqu'un connait déjà le compilateur CC5X et me dépanne... cas idéal ^^

    Soit vous me conseiller un autre compilateur C compatible avec MPLab qui, de sûr, permet d'écrire, de sauvegarder, des variables dans l'EEPROM...

    Merci d'avance...
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  6. #5
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Bon... j'ai du nouveau mais... ca fait peur !!

    Alors j'ai trouvé, dans la doc de mon PIC16F819, une routine de lecture et une routine d'écriture dans mon EEPROM...

    Seulement c'est assez long, et asseza fastidieux(je trouve)... et j'ai peur qu'il faille que je le fasse à chaque fois que j'utilise une variable... au quel cas ca fait peur !!!!!

    Vous savez pas si il y a un moyen de "contourner" ces fastidieuses ligne de code ???
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

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

    Re : [PIC] Sauvegarde de variable...

    Tu peux t'écrire une macro qui remplacera toutes ces lignes fastidieuses.
    Gérard.

  9. Publicité
  10. #7
    etienneh

    Re : [PIC] Sauvegarde de variable...

    Bon, le forum m'a écrasé ma réponse, donc j'ai la flemme de tout ré-écrire, dis moi si tu as besoin de plus de précisions

    Si tu cherches un autre compilateur, je te conseille HITECH-C.

    Comme disait Gérard, soit tu utilises des macros pour te simplifier la vie (et je ne vois même aucune raison de ne pas le faire !), soit, dans le cas de HITECH, tu utilises le keyword "eeprom" lors de la déclaration de ta variable, et elle est envoyée toute seule en ROM.

    Amicalement,
    E.

  11. #8
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Bonjour à tous,

    Merci de vos réponses...
    Alors j'ai bien envie de faire ce que Gérard m'a conseillé effectivement...

    Par contre je ne sais pas comment faire... parce que ma routine de lecture/écriture est en assembleur(bon ce n'est pas très grave parce que normalement mon compilateur peut le traiter bien sûr) mais par contre je ne comprend pas tout dans ces routines !!!!

    Je n'ai pas de formation d'assembleur et il m'est vraiment difficile de les comprendre...

    Je vais vous les donner, vous allez me dire ce que vous en pensez:


    EXAMPLE 3-1: DATA EEPROM READ

    BANKSEL EEADR ; Select Bank of EEADR
    MOVF ADDR, W ;
    MOVWF EEADR ; Data Memory Address
    ; to read
    BANKSEL EECON1 ; Select Bank of EECON1
    BCF EECON1, EEPGD ; Point to Data memory
    BSF EECON1, RD ; EE Read
    BANKSEL EEDATA ; Select Bank of EEDATA
    MOVF EEDATA, W ; W = EEDATA

    et

    EXAMPLE 3-2: DATA EEPROM WRITE
    BANKSEL EECON1 ; Select Bank of
    ; EECON1
    BTFSC EECON1, WR ; Wait for write
    GOTO $-1 ; to complete
    BANKSEL EEADR ; Select Bank of
    ; EEADR
    MOVF ADDR, W ;
    MOVWF EEADR ; Data Memory
    ; Address to write
    MOVF VALUE, W ;
    MOVWF EEDATA ; Data Memory Value
    ; to write
    BANKSEL EECON1 ; Select Bank of
    ; EECON1
    BCF EECON1, EEPGD ; Point to DATA
    ; memory
    BSF EECON1, WREN ; Enable writes
    BCF INTCON, GIE ; Disable INTs.
    MOVLW 55h ;
    MOVWF EECON2 ; Write 55h
    MOVLW AAh ;
    MOVWF EECON2 ; Write AAh
    BSF EECON1, WR ; Set WR bit to
    ; begin write
    BSF INTCON, GIE ; Enable INTs.
    BCF EECON1, WREN ; Disable writes


    Voilà !

    Alors je sais que cela ne se fait pas de "vomir" des lignes de code comme ça mais là j'ai passé ma journée d'hier dessus sans en tirer quoi que ce soit !!!

    Alors si vous pouviez m'éguiller pour faire mes macros, me donner des conseils, m'inscrire dans un cours de tricot... enfin vous faites ce que vous voulez

    D'avance merci....
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  12. #9
    mictour

    Re : [PIC] Sauvegarde de variable...

    Bonjour La Praline,

    Regarde ici tu y trouveras ce que tu cherche et aussi d'autres choses.

    http://www.isk.kth.se/kursinfo/mekat...ab/include.htm

    Bon, d'accord c'est en suedois, mais les programmes sont commentés en anglais....
    Bonne prog, mictour.

  13. #10
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Salut,

    Je suis ptdr devant mon pc... le suédois c'est trop drôle à essayer de lire !!!

    Bon plus sérieusement j'utilise un PIC16F819... ils me donnent le code pour deux PICs eux... le PIC16F84 (incontournable forcément) et le PIC16F87X (assez incontournable aussi)... mais vous me conseillez de prendre les code de quel PIC ???

    J'aurais une tendance pour le 16F87X... dites moi si je me trompe

    Encore une fois merci
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  14. #11
    DavidDB

    Re : [PIC] Sauvegarde de variable...

    Salut,

    Si tu travailles en C, tu as certainement la fonction d'accès à l'EEPROM incluse dans le compilo...

    Ce n'est pas la peine de tenter de ré-inventer la roue...

    Voici une routine en cc5 pour l'accès EEPROM :

    //++++++++++++++++++++++ EEPROM SREIBEN ++++++++++++++++++++++++++++++ +++++++++++

    void EEPROMWR(char adresse,char Data)
    {
    EEADR = adresse; // Adresse in Adressregister übertragen
    EEDATA = Data; // Daten in Datenregister übertragen
    EEPGD=0; // Auswahl: Programmspeicher lesen oder EEPROM
    WREN=1; // Schreiben ins EEPROM erlauben
    GIE=0; // Interrups verbieten
    EECON2=0x55;
    EECON2=0xAA;
    WR=1; // Starten des Sreibens
    nop2(); // 2 Zyklen zum Schreiben
    GIE=1; // Interrups erlauben
    WREN=0; // Schreiben ins EEPROM verbieten
    }

    //++++++++++++++++++++++ EEPROM LESEN ++++++++++++++++++++++++++++++ +++++++++++

    char EEPROMRD(char adresse)
    {
    char antwort;
    EEADR = adresse; // Adresse in Adressregister übertragen
    EEPGD=0; // Auswahl: Programmspeicher lesen oder EEPROM
    RD=1; // Starten des Lesesn
    nop2(); // 2 Zyklen zum Speicher lesen
    antwort = EEDATA; // Daten aus Datenregister auslesen
    return antwort


    David.

  15. #12
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Bonjour à tous,

    Mictour : alors ton lien semble pas mal. Seulement c'est une chaine de caractère qu'on rentre en mémoire... moi ce sont des variables que je voudrais sauvegarder, comment faire le lien entre les deux ?


    David : Merci beaucoup pour ces routines... J'ai quand même une question à te poser: concernant les paramètres... Moi qui veut placer des variables en mémoire, que doivent être mes paramètres??? surtout pour l'adresse, dois-je entrée une adresse hexa? ou autre? et pour la donnée, si je met le nom de ma variable, cela suffit-il?


    Merci d'avance...
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  16. Publicité
  17. #13
    DavidDB

    Re : [PIC] Sauvegarde de variable...

    Tu dois faire une copie de ta variable dans "Data" pour la copier en EEPROM et ceci, à l'adresse que tu auras définit dans "adresse"

    Concernant le format de tes données, je ne sais pas ce que tu dois définir...
    A mon avis, respecte simplement le même format que les données de ton programme.

    P.S. Je ne programme qu'en Assembleur, et donc mes connaissances en C sont faibles...

    David.

  18. #14
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Salut David,

    Les variables que je dois stocker sont des "
    unsigned int"... et je ne sais pas exactement combien de "place" mémoire je dois laisser entre deux...

    Ma documentation me dit:
    "These devices have 1K or 2K words of
    program Flash, with an address range from 0000h to
    03FFh for the PIC16F818 and 0000h to 07FFh for the
    PIC16F819.
    "... donc j'ai de 0x0000 à 0x07FF de mémoire puisque j'utilise un PIC16F819... mais je ne sais pas sur combien de bit est codé un unsigned int !!! Encore moins en hexa !!!

    Quelqu'un le sait ???
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  19. #15
    DavidDB

    Re : [PIC] Sauvegarde de variable...

    Où est le problème...

    Définit simplement tes variables sous un format dont tu connais la longueur !!!!

    Pour la doc, cela n'a rien avoir avec la RAM, cela concerne la mémoire programme.

    David.

  20. #16
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Ben le problème c'est que je ne suis pas sûr de savoir quel taille a un "int" ou un "unsigned int" ou tout autre type !!!

    C'est pour cela que je demande si quelqu'un le sait... pour être sûr !
    De plus je ne sais pas combien de place mémoire prend une variable défini sur 8 bits par exemple!




    Sinon tu dis que pour ma doc ça n'a rien à voir avec ma RAM... Je sais c'est, normalement, la taille de la mémoire Flash dans laquelle je dois stocker mes variables...
    Mais là encore j'attendais une confirmation !


    Donc en bref estce que quelqu'un connait la taille d'un "int" ou d'un "unsigned int" ou autre et m'expliquer combien "d'espace" cela prend dans ma mémoire(en héxa!) ???

    Merci^^
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  21. #17
    etienneh

    Re : [PIC] Sauvegarde de variable...

    Personne ne peut te donner cette information, vu que ca dépend du compilateur, et des réglages de ce dernier.

    Pour le savoir, tu as une instruction sizeof() en C qui te donne la taille d'un objet.

    int taille = sizeof(int);

    taille contiendra la taille (en octets) du type int.

    Pour séparer les variables en char (de taille 1 octet donc), je te laisse te référer aux explications que je t'avais données dans un autre fil, concernant les masques binaires et décalages de bits... c'est la même chose.


    Amicalement,
    E.

  22. #18
    etienneh

    Re : [PIC] Sauvegarde de variable...

    Si je peux ajouter un conseil, ce serait de lire un petit tutoriel de langage C.

    Tu iras nettement plus vite si tu as bien en tête la représentation mémoire des données, et tu trouves des tutoriaux gratuits en cherchant sur google !!!


  23. Publicité
  24. #19
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Bonne idée pour le tutoriel des emplacements mémoire


    Sinon, bonne nouvelle !
    Il me semble que j'ai réussi !!!!
    Le bout du tunnel est proche !!!!!


    Bon plus sérieusement il me semble que cela fonctionne, je vais faire mes validations et je vous tiens au jus


    Encore merci
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

  25. #20
    mictour

    Re : [PIC] Sauvegarde de variable...

    ...Pour préciser regarde le fichier "remem87x.c" et les includes qui l'accompagne.Cest un bon exemple de programme en cc5x.
    Bien sur ce sont les valeurs des variables que l'on sauve dans le tableau... mais ça tu l'as déja compris!

    mictour.

  26. #21
    La Praline

    Re : [PIC] Sauvegarde de variable...

    Salut,

    Merci pour ce renseignement... il est bien fait ce fichier

    Merci à vous tous
    *~~ Faluchardement ~~*
    *~~~~ La Praline ~~~~*

Discussions similaires

  1. [PIC] PORTB,VAR ? (choisir le no du port avec une variable)
    Par Mkala dans le forum Électronique
    Réponses: 5
    Dernier message: 20/02/2010, 11h18
  2. Statistiques : lien entre variable binaire et variable continue
    Par pounette1 dans le forum Mathématiques du supérieur
    Réponses: 17
    Dernier message: 10/02/2010, 20h34
  3. Concatenation de variable pic 16F628
    Par ecma91 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/12/2006, 06h57
  4. problème variable 2octets et PIC
    Par LouR56 dans le forum Électronique
    Réponses: 8
    Dernier message: 03/06/2004, 18h45
  5. Incrémenter une variable avec un PIC
    Par 14bds75_cb dans le forum Électronique
    Réponses: 1
    Dernier message: 24/06/2003, 13h05
Découvrez nos comparatifs produits sur l'informatique et les technologies.