Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Странное поведение таймера...
Klim Дата: Ср, 28.12.2011, 17:30  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Включил 2 таймера.
TMR0 настроен на частоту срабатывания 100 герц
TMR1 настроен на частоту срабатывания 1000 герц
Создал 2 переменных
Каждое срабатывание таймера инкременирую переменные, которые в основной программе выводятся на ЖКИ.
А вот теперь вопрос - почему так медленно срабатывают таймеры. И вроде как TMR0 должен срабатывать реже в 10 раз, чем TMR1? А наглядная картина выглядит совсем иначе...
Прикрепления: Comparator.dsn (82.9 Kb) · Comparator.bas (6.5 Kb) · COMPARATOR.hex (2.2 Kb)
ЯНДЕКС Дата: 28.12.2011
ivan_fd Дата: Ср, 28.12.2011, 19:16  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

В прерывании нужно также выставлять значение таймера, иначе в следующий раз он будет считать от 0 до 255.
Сообщение отредактировал ivan_fd - Ср, 28.12.2011, 19:17
Klim Дата: Ср, 28.12.2011, 22:34  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

А можно код подправить, чтоб было понятнее.
Сообщение отредактировал Klim - Ср, 28.12.2011, 22:34
retas Дата: Чт, 29.12.2011, 00:35  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

ivan_fd наверное предлогал зделать так

'-------------------------- Прерывания--------------------------

Int_Label:
Context Save '
If T0IF = 1 Then
Inc Schet2
T0IF = 0
TMR0 = $64
EndIf

If TMR1IF = 1 Then
Inc Schet1
TMR1IF = 0
TMR1L = $E7
TMR1H = $FF
EndIf
Context Restore ' Возврат из обработчика прерывания
ivan_fd Дата: Чт, 29.12.2011, 00:40  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

retas

Именно так. biggrin wink

Сообщение отредактировал ivan_fd - Чт, 29.12.2011, 00:40
Klim Дата: Чт, 29.12.2011, 09:48  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 79
Репутация: 0   ±
Замечания:   ±
На сайте с 21.12.2009

Статус: Offline

Спасибо, помогло.
  • Страница 1 из 1
  • 1
Поиск: