- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 6 von 6

Thema: eeprom_read_byte eeprom_write_byte Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    Zitat Zitat von vohopri Beitrag anzeigen
    ... Parameter ins eeprom ... schreiben und ... lesen ...
    Kleine Ergänzung. In mehreren, unterschiedlichen (www-) Quellen wird das erste EEPROM-Byte als nicht zuverlässig deklariert und ein entsprender Puffer empfohlen. Ich habs gemacht - ohne eigene Gegenprobe - und habe keinerlei Fehler feststellen können. Bei meinen nicht ununterbrochenen EEPROM-Aktivitäten. Meine Organisation sieht deshalb typisch etwa so aus:

    Code:
    // ###>>> Byte-Array, das erste Byte des EEPROMS gilt als nicht vertrauenswürdig
    uint8_t firstByteDummy EEMEM; 
    uint8_t eeBytes [12] EEMEM; // Allzweckbytes
    uint16_t eeSrvoff[12] EEMEM; // Servo-Position - Offset
    uint8_t SVdef [][6] // Die folgende Liste, Servo # 0 .. 10
    EEMEM = { " ", "Ko \003", "Kor/l", "KoNir", "KoNil", "ALdur",
    "ALdul", "- nc", "ALd o", "Au rl", "Au \003" } ;
    
    unsigned char LCD[] EEMEM = "LCD "; // LCD
    unsigned char LI01[] EEMEM = "UART-T1, LCD-T2"; // Meldetext
    unsigned char LuU[] EEMEM = "LCD und UART "; // L u U
    unsigned char ML1[] EEMEM = "Taster gedrückt!"; // Meldetext
    unsigned char ML2[] EEMEM = "Start T2 Skip T1"; // Meldetext
    Geändert von oberallgeier (08.11.2013 um 14:21 Uhr) Grund: Code-Endetag war vermurkst
    Ciao sagt der JoeamBerg

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo nochmals und danke,

    Beide Vorschläge funktionieren.
    Beim Verwenden von fixen Adressen, wie Chris das gemeint hat, habe ich nur die Definition verändern müssen in:
    // Parameterzeiger für EEPROM
    uint8_t * eeWaitTimeSteps =(uint8_t *)1;
    uint8_t * eeTrailerMode =(uint8_t *)2;
    uint8_t * eeTrailerTimeSteps =(uint8_t *)3;
    alles andere ist gleich geblieben.

    Und der Vorschlag von Markus hat genau so funktioniert, wie oben von ihm beschrieben.
    Die Erklärungen von Markus waren recht hilfreich, das Ganze auch zu verstehen.

    Der EEPROM Inhalt sieht nach letzterem Vorgehen so aus:
    :20000000020301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF7
    :20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFE0
    :20004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFC0
    :20006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFA0
    :00000001FF

    020301 sind die 3 richtig geschriebenen Parameter.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Kleine Ergänzung. In mehreren, unterschiedlichen (www-) Quellen wird das erste EEPROM-Byte als nicht zuverlässig deklariert und ein entsprender Puffer empfohlen.
    So ist also das Internet, schlimmer als der "Flurfunk". Im "ATmega103L Rev. F/G Errata Sheet" findet man
    Klicke auf die Grafik für eine größere Ansicht

Name:	Selection_041.jpg
Hits:	9
Größe:	39,8 KB
ID:	26692
    das Datum diese Dokuments ist aus dem vorigen Jahrtausend. Ich hab das zwar nicht verfolgt, gehe aber davon aus, daß Atmel diesen Bug, wie auch andere längst beseitigt hat. Trotzdem vermutet jeder, der ein Problem mit irgendeinem EEPROM hat, das dies die Ursache seines Problems ist.

    Es gab übrigens auch mal einen "floating point bug" bei Intelprozessoren, und obwohl der längst beseitigt ist, kommt trotzdem bei machen Programmen Unsinn raus.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Ähnliche Themen

  1. ATMega32 UART problem --> Problem gelöst
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.03.2010, 18:45
  2. eeprom_write_byte
    Von hacker im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 26.09.2009, 13:23
  3. Problem mit Atmega644P Erkennung (Bascom-Versions-Problem)
    Von Rohbotiker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 11.08.2008, 18:52
  4. eeprom_write_byte und bootloader
    Von baracuda im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 23.11.2005, 00:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress