Hallo,
ich weiß ich nicht mehr weiter, ich habe ein relativ fertiges Projekt, 
welches mit dem gcc 3.4.3 auch sehr gut läuft. Nur mit dem gcc 4.2.1 
läuft es nicht. Also habe ich versucht den Fehler immer weiter 
einzugrenzen indem ich das "drumherum" weggelassen habe, bis das Projekt 
herauskam welches im Anhang ist. Mit dem gcc 3.4.1 übersetzt lässt das 
Programm an Pin 2 des PORTD eine LED mit 2 Hz blinken und gibt per RS232 
(9600 Baud) eine Zeichenfolge aus. (Das Programm verwendet einen 
kooperativen Scheduler). Mit dem gcc 4.2.1 scheint das Programm 
teilweise ins Nirvana zu laufen. Ich habe versucht den Ablauf des 
Quellcodes im AVR Studio 3.x zu simulieren, zumindest Stack-Überläufe 
erkenne ich dort keine.
Das Verhalten der LED verändert sich beim gcc 4.2.1 wenn ich in der 
Datei clock.c
| 1 | void waitms_sched(u08 delay) {
 | 
| 2 | u32 waituntil = get_msecs();
 | 
| 3 | //u08 t[7];
 | 
| 4 | waituntil += delay;
 | 
| 5 | //wordtostr(t, get_msecs(), 5, 0);
 | 
| 6 | //t[5] = '\n';
 | 
| 7 | //t[6] = '\0';
 | 
| 8 | //rs232_print_atomic(t);
 | 
| 9 | rs232_print_atomic("C\n");
 | 
| 10 | while (waituntil > get_msecs()) {
 | 
| 11 |   rs232_print_atomic("D\n");
 | 
| 12 |   sched();
 | 
| 13 | }
 | 
| 14 | }
 | 
die auskommentierten Zeilen Einbaue, hingegen wird das Verhalten der LED 
beim gcc 3.4.3 dadurch nicht beeinflusst.
Es wäre wirklich schön, wenn hier jemand eine Idee hätte.