Simon Küppers wrote:
> Besser vorher in die Doku schauen *kratz. Ist der Default-Vektor
> eigentlich was neues? Hab den bisher noch nie irgendwo gesehen.
Nö, den gibt's schon viele Jahre lang. Ist aber nicht wirklich so
nützlich, wie Peter dich glauben machen will, außer dass man bei
schlampiger Programmierung einen Brechpunkt im Debugger draufsetzen
kann. Aber das wesentliche Feature, was ihm fehlt, ist dass es
keine "COME FROM"-Anweisung gibt... naja, nicht ganz, aber du merkst
sicher, worauf das hinaus läuft: wenn er triggert, weißt du zwar,
dass du einen nicht zugewiesenen Interrupt hattest, aber das hättest
du natürlich genauso gemerkt, wenn du den Breakpoint auf die Adresse
0 gesetzt hättest und diese ohne einen Reset erreicht worden ist.
Nur, wer ihn getriggert hat, bekommst du nicht so ohne weiteres
raus, und das ist es, was dich eigentlich interessiert.
Wenn ich wirklich in das Dilemma laufe, dann generiere ich mir
üblicherweise mit einem Einzeiler-Perlscript (gleich auf der
Kommandozeile) sowas wie:
1 | uint8_t irq_number;
|
2 |
|
3 | ISR(__vector_1)
|
4 | {
|
5 | irq_number = 1;
|
6 | exit();
|
7 | }
|
8 |
|
9 | ISR(__vector_2)
|
10 | {
|
11 | irq_number = 2;
|
12 | exit();
|
13 | }
|
14 |
|
15 | ISR(__vector_3)
|
16 | {
|
17 | irq_number = 3;
|
18 | exit();
|
19 | }
|
20 | /* ... */
|
Die wirklich benutzten Vektoren werden dann ausgespart, und man setzt
im Debugger den Breakpoint auf exit().