[PIC]Stockage variables dans mémoires
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

[PIC]Stockage variables dans mémoires



  1. #1
    invite3c35244f

    [PIC]Stockage variables dans mémoires


    ------

    Bonjour,

    Je me retrouve devant un problème, j'utilise un PIC 18F4525, avec lequel je réalise des conversions A/N, jusque là rien de bien méchant, et j'affiche le tout sur un LCD Graphique 128x64,jusque la pas de problème non plus, mais je souhaite créer une "fenetre d'historique", qui gardera en mémoire la valeur minimum et maximum mesuré...et je me pose plusieurs question:
    - quelle mémoire utilisée? la flash ou l'EEPROM ?
    - quel est le principe pour sauvegarder?

    Et sous quel format, la variable prendra moins de place? float ou char ?

    Je vous remercie d'avance
    Bonne journée

    [EDIT]: la variable que je souhaite afficher sera de la forme xx,xx

    -----

  2. #2
    invite3c35244f

    Re : [PIC]Stockage variables dans mémoires

    Bon, j'ai cherché un peut...et voila ce que j'ai trouver, enfin, je l'ai modifié un tout petit peu..
    Il s'agit d'une routine pour enregistrer et lire sur l'EEPROM...

    Code:
    /***************************************************************
    Nom   : void WriteEEPROM (char addr, char data)
    ****************************************************************/
    void WriteEEPROM (char addr, char data)
    {
    	//static unsigned char GIE_Status;
    	EEADR = addr;      //EEPROM memory location
    	EEDATA = data;     //Data to be writen
    	EEPGD=0;           //Enable EEPROM write
    	CFGS=0;            //Enable EEPROM write
    	WREN = 1;          //Enable EEPROM write
    	//GIE_Status = INTCONbits.GIE; //Save global interrupt enable bit
    	//INTCONbits.GIE=0;    //Disable global interrupts
    	EECON2 = 0x55;     //Required sequence to start write cycle
    	EECON2 = 0xAA;     //Required sequence to start write cycle
    	WR = 1;            //Required sequence to start write cycle
    	//INTCONbits.GIE=GIE_Status;  //Restore the original global interrupt status
    	while(WR);          //Wait for completion of write sequence
    	EEIF = 0;           //Disable EEPROM write
    	WREN = 0;           //Disable EEPROM write
    }
    
    
    /***************************************************************
    Nom   : char ReadEEPROM(char addr)
    ****************************************************************/
    char ReadEEPROM(char addr)
    {
    	char data;
    	EEADR = addr;           //EEPROM memory location
    	EEPGD = 0;              //Enable read sequence
    	CFGS = 0;               //Enable read sequence
    	RD = 1;                 //Enable read sequence
    	data = EEDATA;
    	return data;
    }
    et voila le .h associé...
    Code:
    #ifndef __STOCKAGEHISTORYEEPROM_H
    
    extern char addr;
    extern char data;
    
    void WriteEEPROM (char addr, char data);
    char ReadEEPROM(char addr);
    
    #endif

    Vous en pensez quoi?
    J'ai choisi d'enregistrer une variable de type char car je me suis dit qu'elle prendrai moins de place...c'est une bêtise?

  3. #3
    mat64

    Re : [PIC]Stockage variables dans mémoires

    Citation Envoyé par jorg1n Voir le message
    Il s'agit d'une routine pour enregistrer et lire sur l'EEPROM......Vous en pensez quoi?
    attention, un des forumeurs nous as appris récemment que le nombre de cycles de lecture/écritures dans l'EEPROM peut se révéler assez réduit en pratique (ne pas se fier à ce qu'il y a écrit en première page de la datasheet). Si je retrouve le fil je mettrais un lien.

    Citation Envoyé par jorg1n Voir le message
    'ai choisi d'enregistrer une variable de type char car je me suis dit qu'elle prendrai moins de place...c'est une bêtise?
    ça c'est toi seul qui peut le savoir : ça dépends de la précision que tu souhaites. Tu mesures quoi et tu l'affiches comment ?

  4. #4
    invite3c35244f

    Re : [PIC]Stockage variables dans mémoires

    Merci pour ta réponse...

    ça c'est toi seul qui peut le savoir : ça dépends de la précision que tu souhaites. Tu mesures quoi et tu l'affiches comment ?
    je mesure une tension et je la converti en float puis lorsque je l'affiche, elle est de la forme char (ex: 13,34).

    Par contre dans mon programme de dessus, je vois que la "forme" de l'adresse est de type char, mais comment la définir?

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

    Re : [PIC]Stockage variables dans mémoires

    pour moi 13,34 c'est un float, pas un char ... je pense que tu parles plutôt de chaine de caractères : char*. Effectivement, tu peux directement stocker la chaine de caractères que tu souhaites afficher. Dans le cas 13,34 : ça t'oblige à stocker 5 octets. Tu aurais pu stocker aussi un float (4 octets) mais il faut voir si tu as les routines et le capa de calcul pour la conversion. Tu peux encore stocker le résultat de ta conversion analogique numérique (ça doit être 10 ou 12 bits) soit 2 octets. Mais 13,34 sur un char ça me parait difficile...

  7. #6
    invite03481543

    Re : [PIC]Stockage variables dans mémoires

    Salut,

    Une astuce qui permet de contourner l'emploi de float:

    stocker le valeur en entier donc faire une multiplication par 100 (selon bien sur le nombre de décimales) et on obtient bien un entier donc 2 octets (dans l'échelle de ton exemple).
    Au retour il suffit de restaurer la valeur en faisant un division par 100.

    Sur un char c'est possible si tu ne stockes que la partie intéressante de la grandeur.
    Par exemple entre 13.32 et 13.04 il n'y a que 32 et 04 qui nous intéresse, donc si on extrapole le raisonement entre 12.00 et 13.55 cela fait un char.

Discussions similaires

  1. stockage de tension dans un condo
    Par invite5c707bf0 dans le forum Électronique
    Réponses: 7
    Dernier message: 09/03/2008, 20h18
  2. variables dans mplab
    Par invitefc1671e3 dans le forum Électronique
    Réponses: 0
    Dernier message: 11/02/2008, 14h34
  3. Communication USART avec PIC et stockage dans I2c
    Par invitead8d66d4 dans le forum Électronique
    Réponses: 0
    Dernier message: 23/12/2007, 15h51
  4. Aide sur les variables d'un PIC
    Par invite83652f77 dans le forum Électronique
    Réponses: 4
    Dernier message: 12/06/2006, 18h17
  5. Du nouveau dans le stockage batterie
    Par invite9111aa5b dans le forum Environnement, développement durable et écologie
    Réponses: 5
    Dernier message: 30/03/2005, 22h22
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...