Hallo miteinander,
Ich bin neu bei euch und muss mich gleich mit einer Frage an euch wenden, die mir derzeit ziemlich auf den Nägeln brennt.
Ich versuche, ein komplexeres Programm für einen ATMega im AVR Studio in c++ zu schreiben. Leider erzählt mir mein JTAGICE3 beim Debuggen nicht, welche Variablenwerte ein Teil meines Programms enthält.
Zum Vorgehen: Ich habe ein enum deklariert, in dem der Status eines Dialogs gespeichert wird:
[CCODE] enum Dialog_state_enum //Sets the dialog that is currently displayed
{
_NO_DIALOG,
_MAINMENU,
_GET_TIME_YEAR,
_GET_TIME_MONTHDAY,
_GET_TIME_HOURMIN,
_SELECT_CONTROLMODE,
_GET_HEATING_DAY,
_GET_HEATING_TIME,
_DIALOG_ABORT
};[/CCODE]
Dieses enum verwende ich in einem globalen Struct namens settings, welches alle Einstellungen speichert:
[CCODE] struct
{
...
volatile Dialog_state_enum dialog_state=_DIALOG_ABORT; //Internal variable that sets the dialog that is currently displayed
...
} settings;
[/CCODE]
Im Hauptprogramm in einer anderen Datei weise ich dann schließlich der Variablen die Zustände zu:
[CCODE] ...
settings.dialog_state=_GET_HEATING_TIME;
break;[/CCODE]
Wenn ich nun den Debug-Modus starte und auf dem break-Statement einen Breakpoint setze, wird mir im Watch-Fenster immer der Wert 0 angezeigt, unabhängig davon, welcher Wert tatsächlich im Controller gesetzt ist.
Wisst ihr was ich da falsch mache?
Ein Versuch von mir war, die "neuen" "Strongly typed enumerations" aus c++11-Formate zu nutzen:
[CCODE] enum class Dialog_state_enum //Sets the dialog that is currently displayed
{
_NO_DIALOG,
_MAINMENU,
_GET_TIME_YEAR,
_GET_TIME_MONTHDAY,
_GET_TIME_HOURMIN,
_SELECT_CONTROLMODE,
_GET_HEATING_DAY,
_GET_HEATING_TIME,
_DIALOG_ABORT
};[/CCODE]
[CCODE]
struct
{
...
volatile Dialog_state_enum dialog_state=Dialog_state_enum:_DIALOG_ABORT; //Internal variable that sets the dialog that is currently displayed
...
}settings;
[/CCODE]
Im Hauptprogramm:
[CCODE]settings.dialog_state=Dialog_state_enum::_GET_HEATING_TIME;[/CCODE]
Das Kompilieren lieferte hier aber den Fehler: "Expected a class or namespace" ...
Ich bin neu bei euch und muss mich gleich mit einer Frage an euch wenden, die mir derzeit ziemlich auf den Nägeln brennt.
Ich versuche, ein komplexeres Programm für einen ATMega im AVR Studio in c++ zu schreiben. Leider erzählt mir mein JTAGICE3 beim Debuggen nicht, welche Variablenwerte ein Teil meines Programms enthält.
Zum Vorgehen: Ich habe ein enum deklariert, in dem der Status eines Dialogs gespeichert wird:
[CCODE] enum Dialog_state_enum //Sets the dialog that is currently displayed
{
_NO_DIALOG,
_MAINMENU,
_GET_TIME_YEAR,
_GET_TIME_MONTHDAY,
_GET_TIME_HOURMIN,
_SELECT_CONTROLMODE,
_GET_HEATING_DAY,
_GET_HEATING_TIME,
_DIALOG_ABORT
};[/CCODE]
Dieses enum verwende ich in einem globalen Struct namens settings, welches alle Einstellungen speichert:
[CCODE] struct
{
...
volatile Dialog_state_enum dialog_state=_DIALOG_ABORT; //Internal variable that sets the dialog that is currently displayed
...
} settings;
[/CCODE]
Im Hauptprogramm in einer anderen Datei weise ich dann schließlich der Variablen die Zustände zu:
[CCODE] ...
settings.dialog_state=_GET_HEATING_TIME;
break;[/CCODE]
Wenn ich nun den Debug-Modus starte und auf dem break-Statement einen Breakpoint setze, wird mir im Watch-Fenster immer der Wert 0 angezeigt, unabhängig davon, welcher Wert tatsächlich im Controller gesetzt ist.
Wisst ihr was ich da falsch mache?
Ein Versuch von mir war, die "neuen" "Strongly typed enumerations" aus c++11-Formate zu nutzen:
[CCODE] enum class Dialog_state_enum //Sets the dialog that is currently displayed
{
_NO_DIALOG,
_MAINMENU,
_GET_TIME_YEAR,
_GET_TIME_MONTHDAY,
_GET_TIME_HOURMIN,
_SELECT_CONTROLMODE,
_GET_HEATING_DAY,
_GET_HEATING_TIME,
_DIALOG_ABORT
};[/CCODE]
[CCODE]
struct
{
...
volatile Dialog_state_enum dialog_state=Dialog_state_enum:_DIALOG_ABORT; //Internal variable that sets the dialog that is currently displayed
...
}settings;
[/CCODE]
Im Hauptprogramm:
[CCODE]settings.dialog_state=Dialog_state_enum::_GET_HEATING_TIME;[/CCODE]
Das Kompilieren lieferte hier aber den Fehler: "Expected a class or namespace" ...