mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik [AVR ]Wie komplett in Assembler geschreibener Interrupt im C-Projetk


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man in einem C-Projekt einen Teil in Assembler schreiben will dann 
nimmt man normalerweise asm (volatile) ...; .
Aber: Wenn ich jetz eine ultraschnelle Intrrruptroutine brauch ist das 
nicht zu gebrauchen, der Compiler pusht nämlich erstmal die Register und 
führt dann erst den Code aus -> Zeitverlust...
Wie sag ich jetzt dem Compiler, dass er die Finger von dem Interrupt 
lassen soll?

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:
> Aber: Wenn ich jetz eine ultraschnelle Intrrruptroutine brauch ist das

Definiere ultraschnell.
Für die meisten Sachen reicht die C-Implementation vollkommen aus, für 
die anderen Fälle kann man sich überlegen, das Programm komplett in 
Assembler zu schreiben.
:-)

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soft-PWM für viele Kanäle und mich würde mal interessieren, wieviele ich 
kriegen kann (und dann das evtl. in ein späteres Projekt einbinden).

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:
> Soft-PWM für viele Kanäle und mich würde mal interessieren, wieviele ich
> kriegen kann (und dann das evtl. in ein späteres Projekt einbinden).

Du bist nicht der Erste, der das fragt. Spätestens nach dem 1000. 
Fragesteller gabs das hier:

http://www.mikrocontroller.net/articles/Soft-PWM

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist aber in C ich will aber den Interrupt in asm schreiben... (mir 
gehts auch mehr ums Prinzip als um die Soft-PWM)...

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:

> der Compiler pusht nämlich erstmal die Register und
> führt dann erst den Code aus -> Zeitverlust...

Warum macht der das? I.d.R. damit dein Nicht-Interrupt-Programmteil 
fehlerfrei läuft.

Wenn du das nicht brauchst oder meinst es nicht zu brauchen, kannst du 
ihm sagen, dass du keinen Prolog/Epilog möchtest. Befasse dich dann mit 
dem __attribute__((naked)) im Funktionsheader.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss, dass das pushen Sinn macht, aber wenn ich selber die Register 
pushen tu, dann muss ich nur die pushen die auch veränder...
wo gibts erklärungen zu dem naked headerinhalt?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah perfekt, danke...

[solved]

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.