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??
#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);
}
}
#include <EEPROM.h> // bibliotheque pour lire et ecrire dans Eeprom
int N = 3;
int adresse = 0;
void setup() {
EEPROM.write(adresse, N);
}
void loop() {
}
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
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
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?
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.