Forum: Compiler & IDEs Librarie erstellen mit Assembler / GCC und Interrupt


von Robert (Gast)


Lesenswert?

Hallo,

Ich habe eine .S Datei die verwendet wird für das Aswerten von
ein Signal am INT0 Interrupt. Daneben gibt es noch eine .c Datei.

Von diese .S und .c Dateien versucht eine Librarie zu erstellen mit
avr-ar anhand http://www.mikrocontroller.net/articles/Libraries.
Klappte.. Nur leider...

Das Interrupt wird NICHT angezeigt avr-nm und leider ist das
Intterupt (INT0) nicht in die Liste. Und es ist scheinbar auch nicht
in die Libarie drinnen, mein Program macht nicht viel..

Jemand eine Ahnung wie mann ein Interrupt doch im Librarie
drinnen bekommt?!?!

Ich habe noch versucht um über das Interrupt eine Routine
an zu rufen in das Librarie, leider wirft avr-gcc scheinbar
alle Register auf den Stack wenn ich im .lss File reinschau..

Mfg,

Robert (Niederlande)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

ISRs in einer Bibliothek sind nicht ganz einfach.  Das hängt damit
zusammen, dass die ISR ja (aus Sicht des Linkers) niemand ,,ruft'',
d. h. es gibt keine zuvor undefinierte Referenz, die durch Linken
der entsprechenden ISR aufgelöst würde.

Es müsste funktionieren, wenn man auf der Kommandozeile des Linkers
die entsprechende undefinierte Referenz mit der Hand erzeugt.  Das
geht mit der -u Option (vom Compiler aus -Wl,-u), wobei man der den
internen Namen des Vektors geben muss, also __vector_42, nicht
INT0_vect.  Welcher Name das genau ist, hängt von deinem Controller
ab.

Wäre es nicht einfacher, wenn du statt der Bibliothek lieber einfach
nur das entsprechende Objektmodul direkt auf der Linker-Kommandozeile
mit angibst?

von Ro E. (rev)


Lesenswert?

Hallo Jörg,

Danke für die Tips. Werde mahl beide Optionen Versuchen. Die zweite ist 
denke ich am einfachstem...

Robert

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.