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)
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.