Forum: Compiler & IDEs Array


von Günter (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Günter (Gast)


Lesenswert?

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

von Günter (Gast)


Lesenswert?

nachtrag:
Die eeprom_wb ist die Funktion aus GCC Lib eeprom.

von Joerg Wunsch (Gast)


Lesenswert?

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.

von Günter (Gast)


Lesenswert?

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

von Joerg Wunsch (Gast)


Lesenswert?

Hat nur einen einleuchtenderen Namen bekommen: eeprom_write_byte().

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.