Aber damit bin ich immernochnicht weiter. Ich versteh einfach das verhalten von dem AVR nicht das der ein Reset macht.
Das ist recht einfach.
Du schreibst, daß Du mit Assembler angefangen bist,gut.

Also Du aktivierst einen Interrupt, und wenn der zuschlägt will der AVR in die ISR von diesem Interrupt springen.
Das ganze organisiert GCC in einer Tabelle, ich habe die aus meinem jetzigem Programm kopiert
Code:
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
   4:	0c 94 a9 00 	jmp	0x152	; 0x152 <__vector_1>
   8:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
   c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  10:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  14:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  18:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  1c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  20:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  24:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  28:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  2c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  30:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  34:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  38:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  3c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  40:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  44:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  48:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  4c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
  50:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>

00000054 <__ctors_end>:
Wenn man sich das ganze jetzt anschaut, habe ich nur einen Interrupt definiert (EXT 0), da springt er in 0x152 <__vector_1>.
Der rest ist undefiniert und wenn durch falsches Programmieren mal einer zuschlagen sollte geht es nach 0x8e <__bad_interrupt> die wiederum so aussieht:
Code:
0000008e <__bad_interrupt>:
  8e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>
Ich hoffe, Du weißt was unter jmp 0 zu verstehen ist

Und wenn Du einen Interrupt zuläßt, aber keinen Vektor definierst, tja dann geht es in __bad_interrupt, verständlicher ?

und du die Warnings ignorierst
Das ist sehr wichtig!

Alles was Lila im Ausgabefenster von PN erscheint, sollte Deine Alarmglocken läuten lassen...

Gruß Sebastian