EEprom de l'attiny84

Bonjour

je voudrais écrire et lire le contenu de l'eeprom contenue dans un ATTINY84
J'ai réalisé quelques tests pour me familliariser

TEST 1:
Dans mon setup je lis le contenu N de l'adresse 0 avec avec N=EEPROM.read(0);
et je fais clignoter N fois une led
je constate que la led clignote 255 fois (j'avoue ne pas les avoir comptés)
J'en ai conclu que dans un attiny84 neuf, les valeurs de base stockées sont 255

TEST2:
J'ai donc lancé un skech minimaliste pour écrire N=3 à l'adresse 0 de l'eeprom avec EEPROM.write(0,3);
mais lorsque je lance le sketch, la led continue à clignoter 255 fois

Question : le televersement efface-t-il l'eeprom??

Bonjour,

Le téléchargement n'efface pas l'eeprom. Ca doit fonctionner

Marche pas .... voici mes 2 sketchs
lecture :

#include <EEPROM.h>  // bibliotheque pour lire et ecrire dans Eeprom

int N = 0;

int adresse = 0;
int transistor_ledbleue = 7;  // transistor Q2 sur D3

// ========================
// Initialisation programme
// ========================
void setup() {

  pinMode(transistor_ledbleue, OUTPUT);

  N = EEPROM.read(0);
  delay(50);

  clignotements(N,800); // à la mise sons tension, rappel de la valeur de B choisie la fois précédente

}


void loop() {}

 
void clignotements(int C, unsigned long T) {
  for (int i = 1; i <= C; i++) {
    digitalWrite(transistor_ledbleue, HIGH);
  // digitalWrite(13, HIGH);
    delay(T);
    digitalWrite(transistor_ledbleue, LOW);
  //  digitalWrite(13, LOW);
    delay(T);
  }
}

Ecriture :



#include <EEPROM.h>  // bibliotheque pour lire et ecrire dans Eeprom

int N = 3;
int adresse = 0;

void setup() {
 EEPROM.write(adresse, N);
}


void loop() {
}

Je viens d'essayer tes programmes.
Ca fonctionne sans problème.

Tu utilises quel core pour gérer les attiny?
Moi j'utilise le core de Spence Konde

J'ai de nombreux cores attiny installés dont le votre ... comment savoir lequel est vraiment utilisé?`

Tu vas dans le gestionnaire de carte pour les gestionnaires de attiny installés tu cliques sur supprimer pour n'en laisser qu'un

Bizarre .... j'ai tout désinstallé excepté le AttinyCore par Spence Konde version 1.5.2 et lancé les 2 sketchs plus haut
Rien à faire j'ai toujours mes 255 flashs

C'est effectivement très bizarre.
A part un dysfonctionnement de l'attiny84 je ne vois pas d'ou ça peut venir. Ca parait quand même peu probable.

Bonjour

j'ai le même problème avec un attiny 85

le programme fonctionne mais plus moyen de le flasher ni de flasher l'eeprom ca reste désespérément a FF partout quand on essaye de lire.

enfin moi je pouvais même plus le programmer !

certains clones chinois sont connu pour ca !

Et pourtant .. mes deux exemplaires neufs font pareil

Si cela est vrai c'est inquiétant car mes 2 exemplaires attiny84 je ne les ai pas acheté en Chine mais chez FARNELL!
Cela devient grave si on ne peut même plus se fier à des grands fournisseurs professionnels européens

Et pourtant .. mes deux exemplaires neufs font pareil

Tu es sur que le téléversement du programme s'est bien passé quand tu as écrit dans l'eeprom?

Probleme résolu mais j'ai besoin d'une explication car cela devient très très mysterieux

Si je charge le sketch écriture PUIS le sketch lecture ci-dessus .... cela ne marche pas
Si je fusionne les 2 en un seul sketch comme ci-dessous cela fonctionne ...

Quelle est l'explication!??

#include <EEPROM.h>  // bibliotheque pour lire et ecrire dans Eeprom

int N = 3;

int adresse = 0;
int transistor_ledbleue = 7;  // transistor Q2 sur D3

// ========================
// Initialisation programme
// ========================
void setup() {

  pinMode(transistor_ledbleue, OUTPUT);
  EEPROM.write(adresse, N);
  N = EEPROM.read(adresse);
  delay(50);

  clignotements(N,800); // à la mise sons tension, rappel de la valeur de B choisie la fois précédente

}


void loop() {}

 
void clignotements(int C, unsigned long T) {
  for (int i = 1; i <= C; i++) {
    digitalWrite(transistor_ledbleue, HIGH);
  // digitalWrite(13, HIGH);
    delay(T);
    digitalWrite(transistor_ledbleue, LOW);
  //  digitalWrite(13, LOW);
    delay(T);
  }
}

En regardant de plus près je vois qu'il y a une configuration EEPROM retained dans le menu outils. Je n'ai jamais joué avec ça. C'est configuré comment chez toi?

Ca veut dire que l'eeprom semble fonctionner, mais qu'elle est effacée entre deux lancements de programme (voir mon post ci dessus).

D'où ma question de départ : " le televersement efface-t-il l'eeprom?

Non je n'ai pas cette ligne

Je viens d'essayer en cochant "EEPROM not retained" et ça fonctionne toujours l'eeprom n'est pas effacée.

Par contre je viens de voir que tu tu utilises optiboot alors que moi je fonctionne sans bootloader.
Si je configure avec optiboot alors l'eeprom est effacée au chargement du nouveau programme (avec le programmateur). Ca me parait complètement abhérant a moins que le début de l'eeprom soit réservé pour le fonctionnement de optiboot.