Hi Leute :)
Ich versuche gerade verzweifelt eine Interruptroutine in C
einzubinden.
Ich habe ein kleines c Programm und nun soll ein Interrupt ausgelöst
werden. Die Interruptroutine ist in ASM geschrieben.
Die Lösung
SIGNAL(SIG_OUTPUT_COMPARE1A )
{
synchro();
}
(synchro() ist die in asm geschriebene Funktion)
ist wenig brauchbar, da zu langsam.
Die Datei synchro.S sieht im Moment ca. folgendermaßen aus:
.global synchro
.func synchro
synchro:
...
ret
.endfunc
Nun würde ich gerne den Compiler dazu bringen beim Auslösen des
Interrupts direkt meine Routinge anzuspringen.
Ich habe folgenden Tip bekommen:
Ich soll die Datei so umbauen:
#include <avr/io.h>
.global SIG_OUTPUT_COMPARE1A
SIG_OUTPUT_COMPARE1A:
...
reti
Leider funktionierts nicht. Wie dann ?
Die erste Variante funktioniert, also habe ich den Interrupt korrekt
freigeschaltet.
Muss die Datei einen bestimmten Namen haben (ausser .S) ?
Muss ich etwas in die .c Datei includieren ?
Noch mehr Ideen ?
Danke schonmal
Grüße
Tobi
Was funktioniert denn nicht? Das Prinzip ist schon richtig. Für den reinen Assemblerfall (AT90S1200) hab' ich auch in der Doku was geschrieben. Die ISR unterscheidet sich nicht von der, die mit einem C-Programm zu verlinken wäre.
Hm ja. Also die Lösung: Hab den Rechner (und damit Simulator) neu gestartet... dann gings. Warum auch immer. Grüße Tobi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.