mirror of
https://github.com/cfenollosa/os-tutorial.git
synced 2025-12-17 04:14:37 +03:00
lesson 21, keyboard input and shell
This commit is contained in:
23
21-shell/cpu/timer.c
Normal file
23
21-shell/cpu/timer.c
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "timer.h"
|
||||
#include "isr.h"
|
||||
|
||||
u32 tick = 0;
|
||||
|
||||
static void timer_callback(registers_t regs) {
|
||||
tick++;
|
||||
}
|
||||
|
||||
void init_timer(u32 freq) {
|
||||
/* Install the function we just wrote */
|
||||
register_interrupt_handler(IRQ0, timer_callback);
|
||||
|
||||
/* Get the PIT value: hardware clock at 1193180 Hz */
|
||||
u32 divisor = 1193180 / freq;
|
||||
u8 low = (u8)(divisor & 0xFF);
|
||||
u8 high = (u8)( (divisor >> 8) & 0xFF);
|
||||
/* Send the command */
|
||||
port_byte_out(0x43, 0x36); /* Command port */
|
||||
port_byte_out(0x40, low);
|
||||
port_byte_out(0x40, high);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user