Hallo Jan,
ich hatte leider noch nicht so richtig die Zeit, mir den Sourcecode genauer anzusehen.
Ich habe so ein bisschen den Interrupt vom UART in Verdacht. Wenn der Bootloader wieder zur Applikation springt, schaltest du zwar die Interrupts global ab, aber eventuell ist noch ein Interruptflag gesetzt. Wenn du im Hauptprogramm Interrupt global aktivierst, wird dann sofort die Interrupt-Vektor-Tabelle angesprungen.
Falls es am Speicher liegt, schau dir mal deine beiden .hex Files von der Applikation und vom Bootloader an. Du kannst hierfür meinen AVR-Hex Viewer verwenden. Du siehst hier, wie der Speicher des AVR ausgenutzt ist und kannst kontrollieren, ob der Bootloader richtig positioniert ist.
Mehr Ideen habe ich im Moment leider nicht, ich könnte aber am Wochenende noch einmal genauer reinschauen.
Dirk
ich hatte leider noch nicht so richtig die Zeit, mir den Sourcecode genauer anzusehen.
Ich habe so ein bisschen den Interrupt vom UART in Verdacht. Wenn der Bootloader wieder zur Applikation springt, schaltest du zwar die Interrupts global ab, aber eventuell ist noch ein Interruptflag gesetzt. Wenn du im Hauptprogramm Interrupt global aktivierst, wird dann sofort die Interrupt-Vektor-Tabelle angesprungen.
Falls es am Speicher liegt, schau dir mal deine beiden .hex Files von der Applikation und vom Bootloader an. Du kannst hierfür meinen AVR-Hex Viewer verwenden. Du siehst hier, wie der Speicher des AVR ausgenutzt ist und kannst kontrollieren, ob der Bootloader richtig positioniert ist.
Mehr Ideen habe ich im Moment leider nicht, ich könnte aber am Wochenende noch einmal genauer reinschauen.
Dirk