>> Wie programmierst Du den Chip?
> C mit GNU-Compiler (siehe oben)
Falsche Antwort. :-) Du programmierst ihn gar nicht, weil Du ja nur
simulierst... Sorry, mit ,,programmieren'' meinte ich hier, mit
welcher Methode die Daten in den Flash kommen.
Traue keiner Simulation, die Du nicht selbst verbrochen hast. ;-)
Könnte sein, daß Du ,,nur'' über die fehlende Initialisierung von
.data im AVR Studio in Verbindung mit avr-gcc generierten COFF-Files
stolperst. Nerve Atmel, daß sie endlich eine neue Version
rausbringen, das ist schon ewig in deren Quellen repariert. Aber
eigentlich müßte es dann mit der manuellen Zuweisung funktionieren.
Keine Ahnung, ich benutze kein AVR Studio (und kein Windows überhaupt
;-).
> "Nur" die Anzeige im Watch-Window wird nicht aktualisiert, da
dieses
> die Werte aus dem SRAM liest, aber nur das Register verändert wird
> (verfolgt man nämlich den Assemblercode und die Register, dann
> arbeitet das Programm ).
Ach so, dann ist das natürlich ganz normales Verhalten für optimierten
Code. Damit mußt Du einfach leben bzw. Dir eben in der Zwischenzeit
solange das Register mit ansehen.
> Wie kann ich nun dafür sorgen, dass die Werte aus dem Register auch
> in das SRAM geschrieben werden?
Du könntest die Optimierung abschalten, aber das willst Du nicht
wirklich. Du würdest ein Programm generieren, das Du zwar schön in
der Simulation verfolgen kannst, aber das in der Praxis nicht sinnvoll
wäre. Ob die damit erfolgte Simulation noch realitätsnah ist, bleibt
auch anzuzweifeln, da sich durch (nachträgliches) Einschalten der
Optimierung ja z. B. das Timing des Programmflusses ändern würde.
Du könntest die Variable `volatile' deklarieren und damit den
Compiler
anweisen, auf diese Variable keine Optimierung durchzuführen. Aber
wieder wie oben: warum willst Du das tun? Ist Dein Ziel eine gute
Simulation oder eine gut (und schnell) funktionierende Applikation?