AVR-GCC: Wie IRQ-Vektor auf reine ASM-Funktion setzen?

OP #2022409
N'abend,

hab schon mal avr-libc Doku und auch hier das AVR-GCC Tutorial 
durchstöbert, aber die Antwort auf meine Frage nicht gefunden.

Ich möchte einen Interruptvektor (Timer, TIMER0_COMPA_vect) definieren, 
der auf eine reine Assemblerfunktion zeigt.

Alles In 'C' ist ja kein Problem mit dem Makro ISR().
Reines Assembler ist auch keine Problem, da definiert man die 
Vektor-Tabelle ja selbst. Aber wie mache ich das mit dem AVR-GCC?

Ich habe eine Assemblerfunktion in einem bsp.S Assembler-Modul.
Die Funktion kümmert sich auch schon um das sichern der Register.
Wie kann ich den Vektor (die Funktion) definieren, sodaß AVR-GCC diesen 
in die Vektortabelle einträgt? So wie es ISR() für 
'C'-Interruptfunktionen macht?
Inline-Assembler in einer C-Funktion möchte ungerne verwenden.
Ich könnte natürlich eine C-Funktion mit 
ISR(TIMER0_COMPA_vect,ISR_NAKED) definieren und von dort die 
Assemblerfunktion aufrufen. Ich möchte aber diesen Call sparen. Die 
Vektortabelle selber anlegen möchte ich auch nach Möglichkeit vermeiden.

Gibt es eine Lösung? Wenn ja wie?

Danke für Euro Tips.

900ss
#2022417
> Wie kann ich den Vektor (die Funktion) definieren, sodaß AVR-GCC diesen
> in die Vektortabelle einträgt?

Indem du der Assembler-Funktion einfach den passenden Namen gibst:
1
#include <avr/io.h>
2

3
.global TIMER0_COMPA_vect
4
TIMER0_COMPA_vect:
5

6
        reti

> hab schon mal avr-libc Doku ...
> durchstöbert, aber die Antwort auf meine Frage nicht gefunden.

Dann hast du nicht genau genug geschaut:
http://www.nongnu.org/avr-libc/user-manual/assembler.html
Note [7]

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.