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

OP #2022409
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
> 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

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.

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.