| Zeile 1: | Zeile 1: | ||
| + | {{Tutorial | ||
| + | |Titel=PIC | ||
| + | |Schwierigkeit=⚫⚪⚪⚪⚪ | ||
| + | |Vorwissen=([[PIC]]), [[Interrupt]] | ||
| + | }} | ||
Dieses Tutorial soll auf die wichtigsten Aspekte der Programmierung des PICs eingehen. Ich empfehle dennoch, auch [[PIC|diesen Aritkel]] zu lesen, da dieser alle Aspekte erläutert. | Dieses Tutorial soll auf die wichtigsten Aspekte der Programmierung des PICs eingehen. Ich empfehle dennoch, auch [[PIC|diesen Aritkel]] zu lesen, da dieser alle Aspekte erläutert. | ||
| Zeile 30: | Zeile 35: | ||
void pic_remap(int interrupt_num) | void pic_remap(int interrupt_num) | ||
{ | { | ||
| − | outb( | + | outb(PIC_MASTER_COMMAND, 0x11); |
| − | outb( | + | outb(PIC_MASTER_COMMAND, 0x11); |
</c> | </c> | ||
0x11 bedeutet: Wir senden auch ICW4, es gibt zwei PICs und wir wollen Initialisieren. | 0x11 bedeutet: Wir senden auch ICW4, es gibt zwei PICs und wir wollen Initialisieren. | ||
| Zeile 82: | Zeile 87: | ||
void pic_send_eoi(int irq_num) | void pic_send_eoi(int irq_num) | ||
{ | { | ||
| − | outb( | + | outb(PIC_MASTER_COMMAND, EOI); |
if (irq_num>7) | if (irq_num>7) | ||
| − | outb( | + | outb(PIC_SLAVE_COMMAND, EOI); |
} | } | ||
</c> | </c> | ||
| Zeile 102: | Zeile 107: | ||
void pic_remap(int interrupt_num) | void pic_remap(int interrupt_num) | ||
{ | { | ||
| − | outb( | + | outb(PIC_MASTER_COMMAND, 0x11); |
| − | outb( | + | outb(PIC_MASTER_COMMAND, 0x11); |
outb(PIC_MASTER_DATA, interrupt_num); | outb(PIC_MASTER_DATA, interrupt_num); | ||
outb(PIC_SLAVE_DATA, interrupt_num+8); | outb(PIC_SLAVE_DATA, interrupt_num+8); | ||
| Zeile 120: | Zeile 125: | ||
void pic_send_eoi(int irq_num) | void pic_send_eoi(int irq_num) | ||
{ | { | ||
| − | outb( | + | outb(PIC_MASTER_COMMAND, EOI); |
if (irq_num>7) | if (irq_num>7) | ||
| − | outb( | + | outb(PIC_SLAVE_COMMAND, EOI); |
} | } | ||
</c> | </c> | ||
[[Kategorie:Hardware]] | [[Kategorie:Hardware]] | ||
[[Kategorie:Tutorials]] | [[Kategorie:Tutorials]] | ||