INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Attempt to write outside of EEPROM memory
11.02.2016, 14:54
Beitrag #1
Attempt to write outside of EEPROM memory
Grüß euch,
Ich bekomme folgende Fehlermeldung!

Attempt to write outside of EEPROM memory

Sowohl auf einem Uno als auch auf einem Nano Board.

Ich dachte ein ATMega 328P hat ein 1024Byte großes EEPROM?
bin ich da schon drüber ?
Ich dachte ich habe erst 22 Byte verbraucht.
Oder liege ich da ganz daneben.
Ich gehe davon aus, das ich einen ganz blöden Denkfehler habe.
Wenn einer von euch eine Idee dazu hätte, wäre ich sehr dankbar.


Das Problem habe ich mit der Variable ImpulsHallgeber
Keine Ahnung was ich da falsch mache Huh


Meine Variablen
Code:
// Deffinieren der Taster
#define BUTTON_Regen 7
#define BUTTON_Entluften 4
#define ON_OFF 5

// Instantiate a Bounce object
Bounce Regen = Bounce();
Bounce Entluften = Bounce();
Bounce SpannungON_OFF = Bounce();

const byte HallsensorPin = 2;        // Pin 2 ist HallsensorPin für Sensor
int ImpulsHallgeber = 0;             // Zählt die Impulse vom Hallsensor


// Variabe für Jason - serielle Kommunikation
float Raddurchmesser = 0;       // in m Raddurchmesser in m
int StreckeOelen = 0 ;          // in m  nach welcher gefahrenen Strecke soll geschmiert werden
byte AnzMagnete = 0 ;          // Wie viele Magnete/Impulse je Radumdrehung)
byte Pumpstoesse = 0;           // Anzahl der Pumpvorgänge bei einem Ölvorgang


// Pumpe
const byte PumpePin = 13;        // Da ist die Pumpe angeschlossen
float MultiplikatorRegen = 0;   // Anzahl AnzahlImpOelen wird damit multipliziert um das Schmierintervall zu ändern, bei Regen Schlamm usw.
int pumpean = 0;               // default = 245 ms für das einschalten der Pumpe soll einen funktionierenden Pumpenhub ermöglichen
int pumpeoff = 0;               // default = 125 ms die sicherstellen sollen, das die Pumpe wieder in die Grundstellung komme Ausgeschaltet
int AnzPumpBeh = 0;           // Anzahl der Pumphübe, bis Behälter leer ist == konfigurierbar
int ZaelerAnzPumpBeh = 0;      // Zählt mit zum Vergleich mit AnzPumpBeh


// Batterie als Spannungsquelle zuschalten Ansteuerung FET über Optokoppler
byte BattPin = 8;         // Da ist der Optokopler - FET Angeschlossen
int StatusBattPin = LOW;  // Staus des Ausaganges für den FET - Anschluss Batterie

// LED PIN für den Taster
const byte GRUEN = A0;
const byte GELB = A1;
const byte ROT = A2;

// Berechnet
float AnzahlImpOelen = 0;         // Anzahl der Impulse vom Hallsensor bei der Erreichung, ein Ölintervall beginnt
float def_Impulse = 0;            // Anzahl der Impulse Standartmäßig, bei der Erreichung, ein Ölintervall beginnt
float regen_Impulse = 0;          // Anzahl der Impulse bei Regen/Offroad usw., bei der Erreichung, ein Ölintervall beginnt

// Speicheradressen der Variablen für EEPROMx

int addrPumpstoesse = 1; // Byte
int addrAnzMagnete = 2;  //Byte
int addrStreckeOelen = 3; //Int
int addrRaddurchmesser = 7; // Float
int addrMultiplikatorRegen = 11; // Float
int addrPumpean = 15; // int
int addrPumpeoff = 17; // int
int addrAnzPumpBeh = 21; // int
int addrZaelerAnzPumpBeh = 23; //int
int addrImpulsHallgeber = 25; //int



// Funktionen
bool entluft = false;   // Schalter um entlüften ein oder auszuschalten
bool regenen = false;   // Schalter zum verkürzen des Schmierintervall
byte a = 0; // Hilfsvariable für den Taster Regenmodus

Einlesen
Code:
// Einlesen der Variablen aus dem EEPROM
waitUntilReady();
Raddurchmesser = EEPROM.readFloat(addrRaddurchmesser);      
waitUntilReady();
StreckeOelen = EEPROM.readInt(addrStreckeOelen);        
waitUntilReady();
AnzMagnete = EEPROM.readByte(addrAnzMagnete);                
waitUntilReady();
Pumpstoesse = EEPROM.readByte(addrPumpstoesse);
waitUntilReady();
MultiplikatorRegen = EEPROM.readFloat(addrMultiplikatorRegen);
waitUntilReady();
pumpean = EEPROM.readInt(addrPumpean);
waitUntilReady();
pumpeoff = EEPROM.readInt(addrPumpeoff);
waitUntilReady();
ImpulsHallgeber = EEPROM.readInt(addrImpulsHallgeber);
waitUntilReady();
AnzPumpBeh = EEPROM.readInt(addrAnzPumpBeh);
waitUntilReady();
ZaelerAnzPumpBeh = EEPROM.readInt(addrZaelerAnzPumpBeh);
Serial.print(" ZaelerAnzPumpBeh   ");
Serial.println(ZaelerAnzPumpBeh);


Schreiben

Code:
// Maßnahmen beim Ausschalten der Zündung, Speichern + Ausschalten-------------
    if ( Status_Zundung == HIGH && StatusBattPin == HIGH) {  
         Serial.println("Zündung ist Ausgeschaltet speichern und auschalten ");
         detachInterrupt(digitalPinToInterrupt(HallsensorPin));        // Interrupt ausschalten
         waitUntilReady();
          EEPROM.updateInt(ImpulsHallgeber, addrImpulsHallgeber);
          ImpulsHallgeber = EEPROM.readInt(addrImpulsHallgeber);
          Serial.print("ImpulsHallgeber    ");
          Serial.println(ImpulsHallgeber);
           waitUntilReady();
          EEPROM.updateInt(addrZaelerAnzPumpBeh, ZaelerAnzPumpBeh);
          ZaelerAnzPumpBeh = 0;
          waitUntilReady();
          ZaelerAnzPumpBeh = EEPROM.readInt(addrZaelerAnzPumpBeh);
          waitUntilReady();
          Serial.print("ZaelerAnzPumpBeh    ");
          Serial.println(ZaelerAnzPumpBeh);
          digitalWrite(BattPin, LOW);   // der Letzte schaltet das Licht ab ;-)
          
          }
Oder
Code:
else if (command.equals("setzaeler"))
    {
      // Beispiel: {"command":"setzaeler","ZaelerAnzPumpBeh":3333, "zhallgeber":5555}
        
        if (root.containsKey("ZaelerAnzPumpBeh") && root["ZaelerAnzPumpBeh"].is<int>()) {
        ZaelerAnzPumpBeh = root["ZaelerAnzPumpBeh"];
        waitUntilReady();
        EEPROM.updateInt(addrZaelerAnzPumpBeh, ZaelerAnzPumpBeh);
        waitUntilReady();
        ZaelerAnzPumpBeh = EEPROM.readInt(addrZaelerAnzPumpBeh);
      
        Serial.print("Setze ZaelerAnzPumpBeh: ");
        Serial.println(ZaelerAnzPumpBeh);
           }
        if (root.containsKey("zhallgeber") && root["zhallgeber"].is<int>()) {
        ImpulsHallgeber = root["zhallgeber"];
        waitUntilReady();
        EEPROM.updateInt(ImpulsHallgeber, addrImpulsHallgeber);
        waitUntilReady();
        ImpulsHallgeber = EEPROM.readInt(addrImpulsHallgeber);
        Serial.print("Setze ImpulsHallgeber: ");
        Serial.println(ImpulsHallgeber);
           }
    
      }
lg
Andi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.02.2016, 11:06
Beitrag #2
RE: Attempt to write outside of EEPROM memory
Mein Fehler !!
EEPROM.updateInt(ImpulsHallgeber, addrImpulsHallgeber)
Richtig lauten sollte es
EEPROM.updateInt(addrImpulsHallgeber, ImpulsHallgeber)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 222 16.09.2016 20:36
Letzter Beitrag: Datatom
  Serial.write Mathias 6 377 29.07.2016 17:06
Letzter Beitrag: Mathias
  String in EEPROM Speichern BennIY 2 405 27.06.2016 10:23
Letzter Beitrag: BennIY
  Grundlagenfrage EEPROM Tobias1984 3 491 14.04.2016 10:43
Letzter Beitrag: Bitklopfer
  Ins eeprom schreiben/lesen anwo 10 1.782 07.02.2016 20:05
Letzter Beitrag: rpt007
  Suche Konzept für ein Inhaltsverzeichnis eines EEPROM avoid 0 311 27.01.2016 10:49
Letzter Beitrag: avoid
  float in eeprom goldfisch 4 667 28.12.2015 18:54
Letzter Beitrag: Bitklopfer
  Auf externen EEPROM schreiben diode1990 5 962 08.11.2015 22:57
Letzter Beitrag: diode1990
  stm32f103c8t6 EEPROM löschen opa michi 9 1.259 29.10.2015 20:57
Letzter Beitrag: Klaus(i)
  ESP8266 EEPROM Probleme Pf@nne 5 2.431 09.10.2015 18:00
Letzter Beitrag: Pf@nne

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste