Moin,
ich bin seit kurzem Besitzer der Ez430 Chronos von TI und will mich
mittels IAR Kickstart in das Beispielprojekt Datenlogger einarbeiten.
Ein wichtiger Teil des Datenloggers ist die Struktur "sDatalog" wo die
Messdaten incl. des Datums in sDatalog.buffer[] hineingeschrieben
werden:
struct datalog
{
// Flags
datalog_flags flags;
// ... einige "unwichtige" Variablen
// Datalogger write buffer
u8 buffer[DATALOG_BUFFER_SIZE];
};
extern struct datalog sDatalog;
Leider wird beim debuggen nicht der tatsächliche Inhalt von
sdatalog.buffer[n] angezeigt, sondern lediglich abwechselnt die Werte 3F
und FF (s. Anhang) und können auch nicht mittels sdatalog.buffer[3] =
0x3A geändert werden. Wenn ich nun die Uhr mit dem beigelieferten
Programm auslese, erscheint aber der richtige Messwert (also nicht 3F
oder FF). Es liegt also nur am Debugger.
Dieses Problem habe ich nur bei den Strukturen und nicht bei einfachen
Variablen wie z.B. "int n".
Kann es sein das ich dieses Problem habe, weil ich die Version Kickstart
nutze (wobei diese eigendlich nur die Codegröße auf 4kB/8kB begrenzt)
oder muss man dem Programm mehr Speicher beim Debuggen zuweisen?
MfG und vielen Dank fürs Durchlesen ;-)
Matthias
Dein Debugger weiß wahrscheinlich nicht, wie er die Bytes zu interpretieren hat. Versuch ihm mal zu sagen, welches Format die Elemente deiner struct haben.
Stimmt die angezeigte Adresse denn überhaupt mit der tatsächlichen Adresse überein?
Moin, vielen Dank nochmal für die Antworten und sorry für die späte Antwort. @Rudi Sparfuchs: Die Bytes scheint der Debugger richtig zu interpretieren, ich habe zusätzlich eine Strucktur "myDatalog" angelegt, in der ich die Inhalte von myDatalog.Buffer[n] ändern und im Watch Fenster einsehen kann. @A. K.: Die Adressen scheinen auch in Ordnung zu sein. Mir ist nochwas aufgefallen: 1. Wenn ich myDatalog vor sDatalog erstelle, lässt sich der Inhalt von myDatalog nicht einsehen, aber der von sDatalog (s. Abbildung) => Es müsste eigendlich an dem Speicherblock liegen 2. Die Fehlerhafte Struktur befindet sich in einem Block aus vielen 3F FF und jede Datenstruktur die darin abgelegt wurde (wie. z.B. Uhrzeit) hat einen anderen Wert als 3F, vlt. ließt der Debugger nicht die Daten richtig 3. Im Datenblatt des CC430 (Seite 37) [[http://focus.ti.com/lit/ug/slau259b/slau259b.pdf]] steht: "On vacant memory space, the value 3FFFh is driven on the data bus." Was das nun genau bedeutet weis ich noch nicht zu deuten, aber mein Debugger zeigt ja auch immer 3F FF an 4. Mein Debugger gibt mir auch immer eine Warnung aus, das vom stack 'Stack' 80Bytes von 80Bytes belegt sind. Wenn ich den Wert von 80 nun auf z.B. 100 vergößere, ändert sich dieser aber nicht, ich bekomme also noch die gleiche Warnung mit 80Bytes: "Wed Jun 29 15:23:38 2011: The stack 'Stack' is filled to 100% (80 bytes used out of 80). The warning threshold is set to 90.%" MfG Matthias
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.

