UL32 и таймеры |
Ответить |
Автор | |
Новичок Присоединился: 25 Апрель 2005 Категория: Russian Federation Online Status: Offline Публикации: 12 |
Опубликовано: 02 Июнь 2005 15:09 |
Кто-нибудь пробовал перепрограммировать таймер в UL32 и использовать свой обработчик? Мне нужна частота таймера 1 кГц. Перепрограммирую таймер следующим образом: void interrupt (*OldInt08)(...) = NULL;
void StartTimer(void)
{ asm cli; outportb(0x43, 0x36); outportb(0x40, 0xA9); outportb(0x40, 0x04); asm sti; OldInt08 = getvect(0x08); setvect(0x08, NewInt08); } Теперь нужно вызывать родной обработчик UL32 каждый 10-й раз как представлено ниже:
void interrupt NewInt08(...)
{ static ushort cnt = 0; cnt++; CntCycle(); // пользовательская процедура
if(cnt >= 10)
{ cnt = 0; OldInt08(); // вызов старого обработчика } else outportb(0x20, 0x20); } Но после этого все таймерные переменные начинают "тикать" быстрее. В чем может быть причина? |
|
С уважением,
Владимир, ООО НПФ "ИНТЕК" |
|
Участник Присоединился: 21 Июнь 2004 Категория: Russian Federation Online Status: Offline Публикации: 66 |
|
Может я что то не понял . Частота (родного) обработчика 18.2 герца , Вы перестраиваете таймер на 1 Кгц , значит вызывать родной обработчик нужно 1000/18.2 - через 54.945 раз , ну ни как не через 10 . Естественно время побежит .
|
|
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |