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


von Max (Gast)


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?

von Floh (Gast)


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.
:-)

von Max (Gast)


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).

von Floh (Gast)


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

von Max (Gast)


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)...

von Stefan B. (stefan) Benutzerseite


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.

von Max (Gast)


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?

von Stefan B. (stefan) Benutzerseite


Lesenswert?


von Max (Gast)


Lesenswert?

Ah perfekt, danke...

[solved]

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
Noch kein Account? Hier anmelden.