Forum: Compiler & IDEs Array einer structure in WinAVR?


von Steffen Hausinger (Gast)


Lesenswert?

Hallo

Ich habe in WinAVR folgende structure

struct CAN_Message
{
  char Name[8];
  uint16_t SID;
  uint16_t EID;
  uint8_t Data[8];
};

deklariert. Nun möchte ich aus dieser structure ein Array anlegen:

struct CAN_Message Message[5];

Auf den ersten Blick scheint das im Simulator (AStudio) auch zu
funktionieren. Bei genauerem hinsehen musste ich allerdings
feststellen, dass jedes Array-Element die selbe Adresse besitzt (also
Message[0].SID liegt auf der gleichen Speicherzelle wie
Message[1].SID).

Woran liegt das? Wie mache ich es richtig?

Grüsse,
Steffen

von Bri (Gast)


Lesenswert?

Auf den ersten Blick kann ich keinen Fehler entdecken. Wie hast du dir
die Adresse anzeigen lassen?

von Steffen Hausinger (Gast)


Lesenswert?

Ich rufe den Code in AStudio 4.11 auf und simuliere ihn. Die Adressen
lese ich im "Watch"-Fenster ab...

Ich kann also davon ausgehen, dass mein Fehler hausgemacht ist? Also
WinAVR kann Arrays einer struct anlegen?

von Steffen Hausinger (Gast)


Lesenswert?

Hmm, Du hast mich mit Deiner Frage stutzig gemacht. Ich hab also nochmal
im Memory-Fenster nachgesehen und tatsächlich - dort werden
unterschiedliche Adressen verwendet!

Der Code funktioniert also doch! Er wird nur nicht so im Watch-Fenster
angezeigt, wie ich's erwarten würde. Bug? Oder hat das einen
bestimmten Grund?

von Peter Fleury (Gast)


Lesenswert?

>Ich rufe den Code in AStudio 4.11 auf und simuliere ihn
Wieso verwendest du nicht die aktuellste AVR Studio Version 4.12 SP2
build 472 ??

von Steffen Hausinger (Gast)


Lesenswert?

Weil ich hinter einer Modem-Verbindung sitze und 4.11 bisher problemlos
funktionierte ;-) Aber ich entnehme Deiner Antwort, dass mit etwas
Glück mein Problem in der neuen Version gelöst wurde.

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.