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
Lesezeichen