Gast
#1593180
Hallo Zusammen! Habe ein dickes Problem bei ATmega168 20AU ab bestimmten Datecode mit dem EEPROM. Bis Datecode 0810 lief alles perfekt! Alles was nun neuer ist, hat folgendes phänomen: bei 8 MHz internen RC-Oszillator werden sporadisch die Werte selbstständig geändert, nach dem 3ten bis 5ten mal neuen einschalten der Hardware. Nach Informationen des Verkäufers der ATmega168 soll es Probleme ab bzw. bis bestimmte Datecodes geben, die mit folgenden Maßnahmen korrigiert werden können: Adresse 0 vom EEPROM nicht benutzten, RC-Oszillator kalibrieren. Beides habe ich getan, ohne Erfolg. Hat jemand auch diese Erfahrung machen müssen und eine Lösung gefunden? Seltsam ist nur, dass bei 1 MHz internen RC-Oszillator das Problem nicht (bisher noch nicht) auftritt. Ich benötige aber leider 8 MHz! Es muss doch möglich sein, das EEPROM-Problem zu umgehen! Kurze Zusammenfassung / Ausschnitte, Ich arbeite mit AVRStudio4 und WinAVR: unter Memory Setting habe ich folgenden Eintrag: Memory Type Eeprom; Name .eeprom; Adresse 0x1 (0x01) Damit wird erst ab Adresse 1 beschreiben. Habe es auch im MAP-File nachvollziehen können #include <inttypes.h> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include <stdio.h> #define BAUD_RATE 38400 #define F_CPU 8000000UL // RC-Oscillator with 8.000 Mhz OSCCAL = 0x91; // RC-Oszillator kalibrieren (Wert über Advanced / oscillator calibration byte ausgelesen!) Variable: uint8_t EEMEM PNEUee = 1; Speichern ins EEPROM: eeprom_write_byte(&PNEUee, 100); //Wert wird nicht bei jedem Programmstart abgespeichert, da ich per if das nur einmal am Anfang mache! auslesen: PNEU = eeprom_read_byte(&PNEUee); // wieder auslesen nach Power an Ausgabe des Wertes über UART printf("\nWert: %d\n\n",PNEU); // Wert sollte immer 100 sein! Wird aber nach einige male Power an plötlich zB. 38, -201 oder sonstiges! Ich habe insgesamt 15 EEPROM-Werte. Dieses Probleme tritt bei allen Werten sporadisch und nicht gleichmäßig auf! Die meisten Werte werden nur einmal abgeschrieben und dann nur noch gelesen und ausgegeben. Bin für jeden Tipp dankbar!