Hallo,
ich bin ein wenig ratlos bei diesem Phänomen. Im EEprom des ATmega128
habe ich Stellwerte gespeichert und wenn ich die Schaltung einschalte,
sprich 5V anlege, wird nicht der Wert 666 gelesen, sondern FFF. Ich habe
das Flash nicht neu geschrieben und das Fusebit EESave ist gesetzt.
Reset gibt dann den richtigen Wert zurück. Ich habe zuerst die
Defninition eeprom_busy_wait() und dann meine ...mega128 probiert, in
der Hoffnung, das hier nicht auf ready EEprom gewartet wird --
#define eeprom_busy_wait() do {} while (!eeprom_is_ready())
#define eeprom_busy_wait_mega128() do {} while (EECR & (1<<EEWE));
unsigned int DAC_value_U_NT2_EE[1] EEMEM, DAC_value_U_NT1_EE[1]
EEMEM, DAC_value_I_NT2_EE[1] EEMEM, DAC_NT2_U_Mult_EE[1] EEMEM;
void EEprom_value_ini() //(unsigned int *) == Adresse Pointer set
{
eeprom_busy_wait_mega128();
DAC_value_U_NT2 = eeprom_read_word((unsigned int
*)DAC_value_U_NT2_EE[1]);
DAC_value_U_NT2 &= 0x0fff; // 16(12) bit Wert aus EEprom lesen und
oberes Nibble entfernen
sprintf(buffer,"U%4x\t",DAC_value_U_NT2);
UART_0_Text_Ram(buffer);
eeprom_busy_wait_mega128();
DAC_value_I_NT2 = eeprom_read_word((unsigned int
*)DAC_value_I_NT2_EE[1]);
DAC_value_I_NT2 &= 0x0fff; // 16(12) bit Wert aus EEprom lesen und
oberes Nibble entfernen. Wichtig da U und I addiert werden für Ausgabe
24 bit DAC
sprintf(buffer,"I%4x\t",DAC_value_I_NT2);
UART_0_Text_Ram(buffer);
}
funktionieren leider beide gleich. Tool AVR Studio 5. Was mache ich
falsch.
Danke schon mal für Eure Hilfe und Gruß Bernhard
> DAC_value_U_NT2 = eeprom_read_word((unsigned int *)DAC_value_U_NT2_EE[1]);
Dass du da den cast brauchst oder benutzt sollte dir zu denken geben.
unsigned int DAC_value_U_NT2_EE[1] EEMEM;
Ist ein Feld aus unsigned int mit einem ([1]) Element im EEPROM.
Ansprechen kannst du das erste (und einzige Element) mit:
DAC_value_U_NT2 = eeprom_read_word(&DAC_value_U_NT2_EE[0]);
oder
DAC_value_U_NT2 = eeprom_read_word(DAC_value_U_NT2_EE);
Aber nicht mit deiner Variante. Die liest irgendwas.
Hast du die fuse für den BrownOutDetector gesetzt? Ich hab mal so ein ähnliches problem gehabt, bei dem nur das einschalten des BOD geholfen hat. julian
Hallo Helfer und Julian,
danke für Eure Hilfe. Ich habe es mit & und mit BOD 2V7 getestet und
Tata - es funktioniert. Nur jetzt habe ich diese Meldung erhalten.
Target "PostBuildEvent" skipped, due to false condition;
('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Diese Meldung verschwindet, wenn (unsigned int*)... verwendet wird. So
wurde es hier Forum beschrieben. Sorry, ich habe noch nicht alles
verstanden, da ich erst seit kurzem in C programmiere.
Gruß Bernhard
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.