www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S + YagartoIDE Interrupts benutzen


Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.



Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
enableIRQ() , das ist es!!!!!
danke, lob und 
anerkennung!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.