Gast
#2568152
Hallo zusammen. Ich bin gerade dabei einen xmega16A4 zu programmieren. Nun bin ich allerdings auf ein Problem gestoßen, für dass ihr (hoffentlich) eine Lösung wisst. Ich habe mal ein sehr abgespecktes Miniaturbeispiel angehängt. In diesem Bsp möchte ich einfach "nur" in einer Timerinterrupt-Routine alle 6,25µs (160kHz) eine Variable hoch zählen lassen. Funktioniert alles wies soll. Bei Messung der Zeiten sehe ich aber, dass für Sicherung der Rücksprungadresse genau soviel Zeit eingenommen wird, wie der eigentliche Interrupt selbst (beim zurück laden das gleiche). Wenn ich in meiner Interrupt-Routine nun noch mehr verarbeiten will, reicht meine Zykluszeit von 6,25µ nicht aus, da jeweils 1µs zum Sichern (push) und Rücksichern (pop) der Register "vergeudet" werden. Habe den Assembler-Code für den Interrupt nochmal eingefügt. Kann das irgendwie geschickter gelöst werden?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |