Gast
#362985
Hallo da draußen,
ich will eine große Anzahl von Werten (Geräteeinstellung) ins EEPROM
eines ATMega128 schreiben (WINAVR, Studio4) und natürlich wieder
auslesen. Die Werte sind alle Arrays unterschiedlicher Länge, die über
den I2C-Bus div. chips initialisieren. Die I2C-Bus-Steuerung und die
Init. der chips läuft.
Meine Fragen zu dem folgenden Code:
1. Definiere / deklariere ich die struct korrekt ?
2. Warum stehen nach dem eeprom_write() die Werte nicht im EEPROM ?
Danke für eure Tips uns Hilfe
...der Code:
/**** eeprom_handling.c begonnen 5.3.06 OR ****
#include <stdint.h>
#include <stdio.h>
#include <avr/eeprom.h>
#ifndef EEPROM
#define EEPROM _attribute_ ((section (".eeprom")))
#endif
/* Definition der struct und Füllen mit Werten */
struct
{ uint8_t format_delay_control [ 3 ] ;
uint8_t chroma_gain_control [ 3 ];
uint8_t chroma_control [ 3 ];
} eeprom_data = {{0x11, 0x22,0x33}, /*format_delay_control*/
{0x44, 0x55, 0x66 }, /* chroma_gain_control*/
{0x77, 0x88, 0xFF }}; /* chroma_control*/
void eeprom_write ( void )
{
eeprom_write_block ( &eeprom_data , 0, sizeof (eeprom_data)) ;
}
void eeprom_read ( void )
{
eeprom_read_block (&eeprom_data, 0 , sizeof (eeprom_data)) ;
/* Ausgabe zum Test */
for (uint8_t i=0; i < sizeof ( eeprom_data.format_delay_control );
i++) printf("%X",eeprom_data.format_delay_control[i]) ;
for (uint8_t i=0; i < sizeof ( eeprom_data.chroma_gain_control );
i++) printf("%X",eeprom_data.chroma_gain_control[i]) ;
for (uint8_t i=0; i < sizeof ( eeprom_data.chroma_control ); i++)
printf("%X",eeprom_data.chroma_control[i]) ;
}