www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit dem Interrupts.


Autor: Dirk H. (xplod)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Ich hab ein Problem mit den PIO-Interrupts eines AT91SAM7S256:
Ich habe alles soweit konfiguriert, dass beim Betätigen einer der Taste 
sich das entsprechende Register AIC_IPR verändert. ( Wert z.B. 
0x40000005)

Der Code für den Interrupteinsprung entstammt eines Beispielprojekts ( 
crt.s von /* Author:  James P Lynch      May 12, 2007  ) und wurde von 
mir ein wenig angepasst:
AT91F_Irq_Handler:
        sub      lr, lr, #4
        stmfd    sp!, {lr}
/* Hole Addresse des Counters */
        ldr         r10,=INTERRUPTCNT
/* Hole Wert */
        ldr      r11,[r10]
/* Addiere 1 */
        add     r11,r11,#1
/ Speichere neuen Wert */
        str      r11,[r10]
/* Sollte in C INTERRUPTCNT = INTERRUPTCNT + 1 representieren */        
        mrs      r14, SPSR 
        stmfd    sp!, {r0,r14}
        ldr      r14, =AT91C_BASE_AIC
        ldr      r0 , [r14, #AIC_IVR]
        str      r14, [r14, #AIC_IVR]
        msr      CPSR_c, #ARM_MODE_SVC
        stmfd    sp!, { r1-r3, r12, r14}
        mov      r14, pc
        bx      r0
        ldmia    sp!, { r1-r3, r12, r14}
        msr      CPSR_c, #I_BIT | ARM_MODE_IRQ
        ldr      r14, =AT91C_BASE_AIC
        str      r14, [r14, #AIC_EOICR]
        ldmia    sp!, {r0,r14}
        msr      SPSR_cxsf, r14
        ldmia    sp!, {pc}^

Der Interruptcounter bleibt aber immer auf 0. Wird die Funktion 
AT91F_Irq_Handler somit garnicht angesprungen? Oder habe ich einen 
Fehler gemacht?

Ich habe die kompletten Dateien unter:
http://www.xplod.de/media/archive1/crt.s
http://www.xplod.de/media/archive1/lowlevelinit.c
http://www.xplod.de/media/archive1/main.c
http://www.xplod.de/media/archive1/makefile
abgelegt...

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.