www.mikrocontroller.net

Forum: Compiler & IDEs interruptaufruf ohne c


Autor: Tobias Krühn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Tobias Krühn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm ja.
Also die Lösung: Hab den Rechner (und damit Simulator) neu gestartet...
dann gings. Warum auch immer.
Grüße
Tobi

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr/signal.h>

in der Asm nicht vergessen.

Gruß Hagen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.