Hallo,
habe ein struct Problem. ATMEGA 128, AVR Studio Optimierung 02
In meinem Programm werden Werte (Strings) auf ein Display geschrieben.
Irgendwann fiel mir auf, dass ein Wert nicht mehr aktualisiert wird.
Schaltet man die Optimierung auf 01 war der Fehler weg. Oder je nachdem
wenn man was im Programm änderte.
Nach langem suchen war erstmal klar, das die Adresse des Strings sich im
Programm auf einmal veränderte, was ja eigentlich nicht möglich ist.
Liegt ja fest auf dem RAM. Also sie sprang zwischen zwei Werten. Nach
weiterem Suchen stand fest, dass es erst auftritt sobald der erste Wert
auf der RTC gelesen wurde.
Dort ist ein struct enthalten, welches die Zeit als werte und das
gesamte Datum als String enthält.
typedef struct Zeit
{
unsigned char Sec;
unsigned char Min;
unsigned char Std;
unsigned char WTag;
unsigned char Tag;
unsigned char Monat;
unsigned int Jahr;
char Time[20];
};
struct Zeit RX4045_array;
In der Funktion wo ich die RTC auslese schreibe ich dann die Zeiten in
den struct.
RX4045_array.Sec = Sec;
RX4045_array.Min = Min;
RX4045_array.Std = Std;
RX4045_array.WTag = WTag;
RX4045_array.Tag = Tag;
RX4045_array.Monat = Monat;
RX4045_array.Jahr = Jahr;
und anschließend wandel ich das alles noch in einen String um und
schreib es in die RX4045_array.Time variable. Achtung das ist nicht die
variable wo sich die Adresse geändert hat sondern irgendeine im
Programm.
Kommentiere ich die Zuweisung vom struct der einzelnen Ziffern aus, also
alles außer dem String klappt das ganze Programm und die Adresse wird
nicht mehr verändert.
Ich bin mir nicht sicher ob ich den struct richtig definiert habe. Ich
mach das in der Header Datei der RTC, greife aber darauf auch global zu.
bei kompilieren kommt noch diese Warnmeldung:
../RX4045.h:14: warning: useless storage class specifier in empty
declaration
Welches dieser Zeile vom struct ist };
Wenn ich dort direkt dies }RX4045_array; schreibe
kommt und die Neuzuweisung weg lasse kommt an jeder stelle wo ich ins
struct schreibe diese Fehlermeldung
../RX4045.c:120: error: expected identifier or '(' before '.' token
Was mache ich falsch bzw. wie definiere ich das struct richtig?
Gruß Ralf