while(TIFR & (1<<OCF1A)); //!!!Und das funktioniert nicht ich weiß nicht wie ich das Register /speziell das FLAG- Bit abfrage???
Die Abfrage an sich sollte korrekt sein, und falls du das #include <avr/io.h> nicht vergessen hast sollte der Compiler nicht meckern...


Aber was passieren könnte ist, daß er die Schleife komplett wegoptimiert weil er denkt "Da drin passiert nichts, also brauche ich das auch nicht kompilieren". Wenn das der Fall ist, könntest du dein Programm so anpassen:

Code:
while(TIFR & (1<<OCF1A))
   asm volatile("nop;");
Dann denkt der Compiler es gäbe etwas wahnsinnig Wichtiges in der Schleife von dem er aber nichts weiß.


PS.: Code ist hier im Forum besser lesbar, wenn du Code-Tags benutzt (also so: [code]Hier kommt dein Code rein[/code])

edit:
wo wir gerade bei besser lesbar sind... das do{ habe ich komplett übersehen.
In diesem Fall könnte es helfen n als volatile zu deklarieren (aber auch so wie der Code jetzt ist dürfte der Compiler eigentlich nichts wegoptimieren)