#include "timer.h" #include "../kernel/io.h" #include "../kernel/logger.h" // Глобальный счетчик тиков системы uint32_t system_ticks = 0; void timer_init(uint32_t frequency) { log_info(LOG_NORMAL, "Initializing PIT Timer..."); // Вычисляем делитель частоты uint32_t divisor = 1193182 / frequency; // Шлем команду: Канал 0, Режим 3 (генератор меандра), доступ по очереди Младший/Старший байт outb(0x43, 0x36); // Раскалываем 16-битный делитель на два байта и шлем в порт данных Канала 0 (0x40) outb(0x40, (uint8_t)(divisor & 0xFF)); outb(0x40, (uint8_t)((divisor >> 8) & 0xFF)); log_info(LOG_NORMAL, "Timer registered"); } void timer_handler(void) { system_ticks++; }