hallo. habe mit Eclipse (YagartoIDE) nach der anleitung (Using Open Source Tools for AT91SAM7S Cross Development, Revision C) die entwicklungsumgebung eingerichtet. flashen und linken klappt alles. jedoch mit den interrupts klappt es noch nicht. irgendwie wurde die ganze interruptgeschichte in CRT.S ausgelagert (oder verstehe ich das falsch?). habe davor IAR benutzt und da mußte man z.b mit: AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_SYS, 6, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, DBGU_irq_handler); die interruptroutine angeben und dann die routine "DBGU_irq_handler" definieren. wie läuft das jetzt mit CRT.S in Eclipse? ich habe die lib_AT91SAM7S256.h auch in das projekt eingebunden.
Die "Interruptgeschichte" wird in Jim Lynchs Tutorial durch einen Assembler-Wrapper in der crt0.s implementiert. Ist der übliche Ansatz wie auch in vielen Atmel AT91 Beispielen (auch für IAR). Im C-Code muss man dann nichts besonderes (compilerspezifisches) beachten. ISR einfach wie eine "normale" Funktion programmieren. Objekt-Datei aus crt0.s einfach anlinken. lib_at91 hat mit dem eigentlichen IRQ-Handling nichts zu tun. Beim Datanaustausch die üblichen Vorkehrungen treffen (volatiles, Zugriffe "atomic" falls erforderlich, etc.). Volatiles wurden in einigen AT91 Beispielcodes gerne vergessen, der IAR-Compiler scheint wohl etwas toleranter bei solchen Fehlern - es sind aber dennoch Fehler. Weitere Hinweise ohne genauere Beschreibung von "klappt das noch nicht" etwas schwierig.
Nachtrag. Grade nochmal etwas über den Beispielcode aus J. Lynchs Tutorial geschaut. ARM-core IRQ-Exceptions sind beim Start deaktiviert (vgl crt0.s : msr CPSR_c,#ARM_MODE_SYS|I_BIT|F_BIT). Evtl. einfach nur ein enableIRQ() in main() nachtragen (vgl. Rest des Beispielcodes).
enableIRQ() , das ist es!!!!! danke, lob und anerkennung!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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.