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.