виснет из за таймера?

Тема в разделе "WASM.OS.DEVEL", создана пользователем 0136, 15 дек 2007.

  1. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    Привет всем, вылаживаю код, проблема вот в чём, в файл taimer.inc такой код:
    ; Повышение частоты таймера
    xor ax, ax
    mov al, 00110110b ; канал 0, режим 3, вид операции 3, счёт двоичный
    out 43h, al
    ;!!!!!!!!!!!!!!!!!!!!!!!!!!!
    mov ax, 03 ; значение фиксатора ?????????????!!!!!!!!!!!!!!!!!!!!!
    ;!!!!!!!!!!!!!!!!!!!!!!!!!!!
    out 40h, al
    mov al, ah
    out 40h, al

    Когда значение фиксатора примерно 100, то всё работает, а когда 3 или 2 или ... мало, то копец, почему так? Оформил немного исключение13, так мне вот что выдаёт:
    селектор 273Bh, бит ti = 0, i = 1, ext = 1.
    Кто поможет мне больше всех! Тот получит большую конфету. Шучу ;). Помогите или обьясните пожалуйста, а то для меня это чудеса :)
     
  2. 0136

    0136 New Member

    Публикаций:
    0
    Регистрация:
    19 апр 2007
    Сообщения:
    112
    Нашёл ещё ошибку, при GP13, вывод ошибочного селектора неправильно сделан, прошу извинения.
     
  3. Chizh

    Chizh New Member

    Публикаций:
    0
    Регистрация:
    10 дек 2007
    Сообщения:
    23
    При маленьком коэффициенте деления, частота прерываний очень высокая. Частота (примерно) равна 4,77МГц / "значение фиксатора". По спецификации, минимальное значение делителя 4, поэтому 3 недопустимое число.
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Chizh
    Точно не помню, давным-давно с 8253 дела не имел, но там вроде для каждого из 6 режимов есть минимально допустимые значения делителя...