Chose a good frequency
This commit is contained in:
parent
09fa845774
commit
85aadeb902
|
|
@ -128,16 +128,25 @@ void pit_reload(uint8_t mode, uint16_t reload){
|
||||||
outb(PIT_DATA, reload & 0xff);
|
outb(PIT_DATA, reload & 0xff);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
void pit_init(uint32_t freq){
|
uint32_t pit_init(uint32_t freq){
|
||||||
uint32_t reload_value = 0x10000;
|
uint32_t reload_value = 0x10000;
|
||||||
if(freq <= 18){
|
if(freq <= 18){
|
||||||
pit_reload(0b100, reload_value);
|
pit_reload(0b100, reload_value);
|
||||||
|
uint32_t ms = (reload_value * 3000)/3579545;
|
||||||
|
return ms;
|
||||||
}
|
}
|
||||||
if(freq >= 1193181){
|
if(freq >= 1193181){
|
||||||
pit_reload(0b100, reload_value >> 16);
|
pit_reload(0b100, reload_value >> 16);
|
||||||
|
uint32_t ms = (reload_value * 3000)/3579545;
|
||||||
|
return ms;
|
||||||
}
|
}
|
||||||
reload_value = ((3579545 * 256)/(3 * 256))/(freq);
|
|
||||||
|
reload_value = ((3579545)/(freq));
|
||||||
|
reload_value /= 3;
|
||||||
pit_reload(0b100, reload_value);
|
pit_reload(0b100, reload_value);
|
||||||
|
printf("%d\n", reload_value);
|
||||||
|
uint32_t ms = (reload_value * 3000)/3579545;
|
||||||
|
return ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
void idt_load(){
|
void idt_load(){
|
||||||
|
|
@ -190,7 +199,8 @@ void idt_load(){
|
||||||
interrupt_handlers[i] = 0;
|
interrupt_handlers[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pit_init(1193181);
|
uint32_t hz_ms = pit_init(50000);
|
||||||
|
printf("%d\n", hz_ms);
|
||||||
// asm volatile("lidt (%0)" : : "m"(&idt_desc));
|
// asm volatile("lidt (%0)" : : "m"(&idt_desc));
|
||||||
// outb(0x20, 0x11 );
|
// outb(0x20, 0x11 );
|
||||||
// outb(0xa0, 0x11);
|
// outb(0xa0, 0x11);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue