IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

EEPROM, quel est l'intérêt pour Arduino ?


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Par défaut EEPROM, quel est l'intérêt pour Arduino ?
    Bjr,
    J'ai mis au point un petit logiciel pour l'Arduino.
    J'ai lu sur la doc, sans plus de précisions, qu'il était possible de graver un programme dans une EEPROM.
    Est-ce intéressant pour la fiabilité du logiciel ?
    Il y a-t-il besoin d'un matériel spécifique ?

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 279
    Par défaut
    Bonjour Frédéric

    Réponse pour les Arduino à base d'ATMega. Non valable pour les autres!

    L'EEPROM ce n'est pas pour le programme mais pour les données qui doivent être modifiées par le programme et sauvegardée lors de l’interruption d'alimentation.
    Quand tu téléverses un programme Arduino, il est d'office sauvegardé en mémoire non volatile: la flash. Donc ce que tu demandes c'est le cas d'office et c'est la seule possibilité.

    La différence entre la flash et l'EEPROM c'est:
    - l'EEPROM s'efface byte par byte et est accessible en lecture / écriture par le programme.
    - la flash s'efface en bloc, en l’occurrence deux, la partie principale et le bootloader. Le bootloader peut y écrire mais le programme ne peut y accéder qu'en lecture (utile pour récupérer des constantes, par exemple des chaines de caractère à émettre).
    Le code ne peut être exécuté que depuis la flash (contrairement à beaucoup d'architectures plus avancées où le code doit être mis en RAM avant exécution).

    Les deux peuvent se programmer par un programmateur ISP et les autres. C'est d’ailleurs la méthode pour recharger le bootloader Arduino.

    Précise ta question!

    Delias

  3. #3
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    Citation Envoyé par Delias Voir le message
    L'EEPROM ce n'est pas pour le programme mais pour les données qui doivent être modifiées par le programme et sauvegardée lors de l’interruption d'alimentation.
    Est-ce possible si on coupe l’alimentation d'une manière abrupte!?!
    Ce serait cool!

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 279
    Par défaut
    Bonjour

    Cela garde ce qu'on y a sauvegardé (à la manière d'une mémoire 24Cxxx ou d'une carte SD externe).
    Et sur ATMega l'arrêt est généralement brutal, il n'y a pas beaucoup d'autres méthodes.

    Pour la suite c'est déjà en partie ici: Garder une variable en mémoire après coupure d'alimentation
    La limitation du nombres d'écritures, la durée d'écriture, bien des embuches... . Pour sauvegarder à la coupure il faut planifier l'arrêt (matériellement et logiciellement).

    Delias

  5. #5
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Par défaut Ce n'est pas ce que je pensais
    Je croyais que l'EEPROM permettait d'écrire le code logiciel de manière définitive, ce qui n'est absolument pas le cas.
    Bon, dans dans ce cas, pour sauvegarder des variables d'un reboot à un autre, pourquoi ne pas utiliser un shield micro-sd ?
    Je dis une bêtise ou quoi ?

  6. #6
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour frederic13870
    Citation Envoyé par frederic13870 Voir le message
    Bon, dans dans ce cas, pour sauvegarder des variables d'un reboot à un autre, pourquoi ne pas utiliser un shield micro-sd ?
    Je dis une bêtise ou quoi ?
    Non, ce n'est pas une bêtise, c'est une autre option. L'usage de l'EEPROM, pour quelques variables dans un programme à sauver est plus facile à mettre en oeuvre et se trouve "sous la main", la micro SD est plus justifiée quand les quantités deviennent plus importantes.
    Dans la plus part de mes programmes, les paramètres de fonctionnement peuvent être modifiés par des ordres à la console et sont sauvés en EEPROM.

    Cordialement
    jpbbricole

  7. #7
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    Citation Envoyé par frederic13870 Voir le message
    Je croyais que l'EEPROM permettait d'écrire le code logiciel de manière définitive, ce qui n'est absolument pas le cas.
    Non, pas ici.

    Citation Envoyé par frederic13870 Voir le message
    Bon, dans dans ce cas, pour sauvegarder des variables d'un reboot à un autre, pourquoi ne pas utiliser un shield micro-sd ?
    Je dis une bêtise ou quoi ?
    Non, ce n'est pas une bêtise du tout et on aurait vraiment de la place!
    Oui, mais c'est très cher (côté marketing pour un produit ).
    Et je retape sur le clou: un ESP32 ou mieux un ESP8266 fera l'affaire!

    Un EEPROM c'est petit, juste pour quelques données et très rarement écrites à cause de sa durée de vie.
    Un Arduino avec WiFi ou un ESP peut aller chercher ou écrire des données à l'extérieur.

    Cordialement

  8. #8
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    Citation Envoyé par boijea Voir le message
    Est-ce possible si on coupe l’alimentation d'une manière abrupte!?!
    Ce serait cool!
    Pardon, je croyais au père Noël et je faisais plusieurs choses en même temps!

    Dans ma tête, je m'imaginais que lorsqu'on coupait l'alimentation, une procédure particulière, style de watchdog hardware, forçait l'exécution d'un morceau de code pour sauvegarder deux trois variables en EEPROM.
    Ce serait similaire à un

    except KeyboardInterrupt: # Interruption avec 'Ctrl+C'
    GPIO.cleanup() # Ressources libérées
    en Python (ici pour un Raspberry Pi) où un Ctrl-C au clavier va forcer un cleanup().
    Les watchdogs hardware sont en principe des cartes extérieurs avec timers.

    Mais si on revient à la phrase peut-être pas trop bien formulée en fait:

    Citation Envoyé par Delias Voir le message
    L'EEPROM ce n'est pas pour le programme mais pour les données qui doivent être modifiées par le programme et sauvegardée lors de l’interruption d'alimentation.
    on ne peut pas sauvegarder des données lors de l'interruption d'alimentation ... mais bien avant!
    Delias devrait reconnaître que cette phrase ne passerait pas dans un article publié ici (et j'en écris un en ce moment ).

  9. #9
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    (Envoyé sans avoir vu la réponse de Delias préparée entre temps)

    L'Arduino possède un petite mémoire morte qu'il est possible d'utiliser pour stocker des "données".

    Si tu veux conserver des valeurs de variables, c'est cet espace de stockage qu'il faudra utiliser.
    Typiquement si ton programme lit une température et conserve le minimum et le maximum, c'est en EEPROM qu'il faudra les conserver.
    Sinon, ces deux températures seront perdues au prochain démarrage.

    Un autre cas: un Web serveur sur ton Arduino sur lequel tu lui donnes par un POST ou autres, une valeur, comme celle de générer une alarme ou des leds couleurs en fonction d'une limite de température que tu changeras régulièrement, et sans mettre à jour ton sketch après recompilation dans l'IDE de l'Arduino.
    Tu pourrais alors conserver cet valeur en EEPROM.

    Il faudrait se limiter d'utiliser l'EEPROM à cause du nombre limité de cycle de lecture: je ne l'ai jamais utilisé!

    Il y a sans doute plein d'autres exemples que d'autres ici se feront le plaisir de te donner.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/10/2017, 16h11
  2. Réponses: 3
    Dernier message: 07/09/2015, 12h55
  3. Réponses: 3
    Dernier message: 16/01/2006, 19h53
  4. Mais quel est l'intérêt de XML ?
    Par darkbauer dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 01/06/2004, 18h03
  5. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo