Gast
#39888
Hallo zusammen,
kann mir jemand helfen warum das nicht geht?
void dateischreiben (unsigned int Datei)
{
eeprom_wb((unsigned char)&eepromval[(0+Datei)],Parameter.Closingdir);
}
Günter
|
Anzeige
|
Array
Gast
#39888
Hallo zusammen,
kann mir jemand helfen warum das nicht geht?
void dateischreiben (unsigned int Datei)
{
eeprom_wb((unsigned char)&eepromval[(0+Datei)],Parameter.Closingdir);
}
Günter
Die Frage ist ein Witz oder ? Anhand der Variablennamen kann man gerade mal vermuten, daß da irgendein OS mit Dateiverwaltung mit im Spiele ist. Also CPU, Compiler, Target-OS, Deine Funktionsprototypen und Deine Source der nichtfunktionierenden eeprom_wb() must Du schon uns Nicht-Hellsehern mitteilen. Peter
Gast
#39890
Sorry,
da war ich wohl absolut neben der Kappe vorhin.
Also, geht um GCC mit ATmega103.
Problem ist, Compiler meckert mit:
Cast from pointer to integer of different size
Cast to pointer from integer of different size
Das Problem liegt wohl an der Berechnung des Zugriffsindex (1+Datei).
Ohne "+Datei geht es.
Source:
static unsigned char eepromval[600]__attribute__((section(".eeprom")));
void dateischreiben (unsigned int Datei)
{
eeprom_wb((unsigned char)&eepromval[(0+Datei)],Parameter.Closingdir);
}
Protype:
void dateischreiben (unsigned int Datei);
Gruss Günter
Gast
#39891
nachtrag: Die eeprom_wb ist die Funktion aus GCC Lib eeprom.
Gast
#39892
eeprom_wb() gibt's nicht mehr. ;-) Anyway, warum castest Du denn die EEPROM-Adresse auf unsigned char? Laß sie, wie sie ist, und es sollte gehen, oder caste auf unsigned char * (was etwas sehr Verschiedenes ist). Das alles ganz besonders angesichts der Tatsache, daß Deine EEPROM-Variable mehr als 256 Elemente enthält... Das muß dann schiefgehen.
Gast
#39893
Hallo Jörg, Danke für die schnelle Hilfe. eeprom_wb() gibts nicht mehr? Gibt es einen Ersatz dafür in der neuesten version? Günter
Gast
#39894
Hat nur einen einleuchtenderen Namen bekommen: eeprom_write_byte(). Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|