GCC-ling schrieb:
> Debugger: 'Break at line default\c:\program
> files\winavr\avr\include\util\delay_basic.h:21' has been disabled.
> Unable to bind line 21 in file "default\c:\program
> files\winavr\avr\include\util\delay_basic.h" to a program memory
> address.
>
>
> Was könnte da das Problem sein.
Das sieht alles noch einem altbekannten 'Problem' aus.
Die delay Funktionen funktionieren nur dann richtig, wenn sie sich der
Optimizer vornimmt und so gut wie alles davon wegoptimiert (konstante
Ausdrücke ausrechnet und darauf basierend fällt dann das meiste aus den
delay Funktionen raus). Das ist auch gewollt so und die delay Routinen
sind so gebaut, dass das so sein muss, damit am Ende die richtigen
Zeiten rauskommen.
Nur: Wie soll der Debugger einen Breakpoint auf Code setzen, der gar
nicht vorhanden ist, weil ihn der Optimizer rausgeschmissen hat?
Schaltet man aber den Optimizer aus, damit der Debugger korrekt arbeiten
kann, dann stimmen die delay Zeiten hinten und vorne nicht mehr.
Es ist daher relativ sinnlos, die delays im Debugger kontrollieren zu
wollen. Du musst einfach daran glauben, dass die Zeiten in der Realität
schon stimmen werden, wenn die angegebene F_CPU korrekt ist. Glauben ist
vielleicht etwas zu pessimistisch ausgedrückt. Solange F_CPU die
Realität wiederspiegelt, stimmen die Zeiten auch. Nicht unbedingt auf
die Nanosekunde genau, aber genau genug für die meisten Zwecke in denen
man delays einsetzt.