Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

UL32 и таймеры

 Ответить Ответить
Автор
Сообщение
S_AINT Смотреть выпадающим
Новичок
Новичок


Присоединился: 25 Апрель 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - S_AINT Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: UL32 и таймеры
    Опубликовано: 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);
}
 
Но после этого все таймерные переменные начинают "тикать" быстрее. В чем может быть причина?
С уважением,
Владимир, ООО НПФ "ИНТЕК"
Наверх
ivsergey Смотреть выпадающим
Участник
Участник


Присоединился: 21 Июнь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 66
Свойства публикации Свойства публикации   Ответить, цитируя автора - ivsergey Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 02 Июнь 2005 16:20

Может я что то не понял . Частота (родного) обработчика 18.2 герца ,

Вы перестраиваете таймер на 1 Кгц , значит вызывать родной обработчик нужно 1000/18.2 - через 54.945 раз , ну ни как не через 10 . Естественно время побежит .

 

 

Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz