Autor Thema: Probleme mit Interrupts  (Gelesen 4595 mal)

Thalhammer

  • Beiträge: 8
    • Profil anzeigen
Gespeichert
« am: 22. August 2013, 15:12 »
Hallo,
Ich habe ein Problem mit den Interrupts.
Ich versuche eine ISR durch den Timer aufrufen zu lassen, was jedoch nicht so funktionierd wie es soll.
Aber erstmal ein wenig Code:
outb(0x20, 0x11); // Init PIC1
outb(0x21, 0x20); // IRQ 0 --> INTx20
outb(0x21, 0x04); // Slave PIC is IRQ2
outb(0x21, 0x01); // END INIT

outb(0xA0, 0x11); // Init PIC2
outb(0xA1, 0x28); // IRQ 8 --> INTx28
outb(0xA1, 0x02); // Slave PIC is IRQ2
outb(0xA1, 0x01); // END INIT

outb(0x21, 0x00); // Enable all Master IRQ's
outb(0xA1, 0x00); // Enable all Slave IRQ's
        asm volatile("sti"); // Enable HW Interrupts

Ich habe auf Interrupt 0x20 einen Handler gelegt und das ganze in Qemu ausprobiert.
Nun zum Problem:
Der Interrupt wird nur einmal ausgeführt.
Das erste mal funktioniert perfekt, allerdings nur einmal.
Meine Vermutung ist, das es ein Problem mit dem Senden des End Of Interrupt an den PIC gibt und daher kein weiterer Interrupt ausgeführt wird.
Allerdings sollte das eigentlich klappen:
outb(0x20,0x20); // EndofInterruptIch habe auch schon versucht alle anderen INterrupts zu maskieren und das EOI an beide PIC's zu senden, es hat sich nichts geändert.

Weis jemand eine Lösung ?
« Letzte Änderung: 22. August 2013, 15:17 von Thalhammer »

Thalhammer

  • Beiträge: 8
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 22. August 2013, 17:57 »
Hat sich erledigt, habs hinbekommen

 

Einloggen