dost0011 schrieb:
> Hallo,
>
> also ich habe die Version 4.14 vom AVR Studio runtergeladen und versuche
> gerade GCC zu Debuggen.
> Das meiste funktioniert für den ATTINY 85 ziemlich gut, es gibt aber ein
> paar Sachen, die überhaupt nicht funktionieren:
>
> - nicht für jede Variable, die berechnet wurde wird ein Wert ausgegeben,
> wenn man mit dem Cursor drüber geht. Manchmal gehts, manchmal nicht -
> keine Ahnung...
>
> - Wenn ich in einer Routine z.B. OCR0A=20; schreibe, dann finde ich
> rechts im I/O View zwar den Timer_Counter_0 mit dem Register OCR0A, da
> steht aber dauerhaft 0 drin, obwohl ich gerade 20 reingeschrieben
> habe...
Beides ist wohl auf die gleiche Ursache zurückzuführen.
Dein Optimizer hat den Code umgestellt bzw. redundante Variablen
elimniniert.
-> Jagt man optimierten Code in den Debugger, muss man damit rechnen,
dass die Dinge nicht immer genau so ablaufen, wie man sie programmiert
hat. Der Optimizer darf den Code umstellen, sofern der Sinn erhalten
bleibt.
-> Berücksichtigt man das, kann man auch optimierten Code debuggen. Will
man jedoch haben, dass der Code genau so abläuft, wie man ihn
geschrieben hat, muss der Optimizer abgeschaltet werden. Damit hat man
aber das Problem, das man dann wieder nicht exakt den Code debuggt, der
dann letzten Endes tatsächlich am µC ablaufen wird.
-> Irgendeinen Tod musst du sterben.
> - Wenn ich eine Warteschleife von 5s simuliere, dann dauert das ca. 3
> Minuten...
Das liegt daran, dass der Debugger zur Simulation des AVR in allen
seinen Einzelheiten mehr Zeit braucht als der reale Prozessor. Siehst du
dir im Simulator die Simulationszeit an, dann ist die tatsächlich nur um
5 Sekunden angewachsen.
-> Im Debugger sind Warteschleifen mittels _delay_ms meistens sowieso
nicht sinnvoll. Den Debugger/Simulator kannst du einsetzen um die
grundsätzliche Funktionalität zu überprüfen, wenn es aber um Timing in
der Realzeit geht, hilft nur eines: ab auf den realen Prozessor damit.