Ich habe nochmal eine Frage zur Frequenz. Eigentlich bräuchte ich wirkliche Millisekunden, also, dass jede Millisekunde IRQ 0 ausgelöst wird. Die Begründung, warum das nicht ging, war, dass der counter 16-bit groß ist. Aber warum kann der counter nicht größer sein?
Zum Beispiel
int _sleep(int millisec) {
if (_slept != 1) {
int counter=1193182;
IRQ_install_handler(0, sleep_ret);
port_out(0x43, 0x36);
port_out(0x40, counter & 0xFF);
port_out(0x40, (counter >> 8));
port_out(0x40, (counter >> 16));
port_out(0x40, (counter >> 24));
}
while (_slept < millisec);
slept=0;
_slept=0;
return 0;
}
void sleep_ret(struct regs* null) {
slept=1;
_slept++;
}
führt bei mir dazu, dass IRQ 0 häufiger, aber irgendwie unregelmäßiger ausgelöst wird. Hat jemand einen Vorschlag?[/code]