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?
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. :-)
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).
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
Das ist aber in C ich will aber den Interrupt in asm schreiben... (mir gehts auch mehr ums Prinzip als um die Soft-PWM)...
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.
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?
http://www.google.de/search?hl=de&source=hp&q=avr-gcc+attribute+naked&btnG=Google-Suche 1. Treffer bei mir. Und natürlich im GCC Manual http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.