Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Тамошнее решение не единственное, мало того - не на 100% корректное, даже в "улучшенных" версиях =GM= и singlskv. Вот мой 100% корректный алгоритм с использованием ТОЛЬКО Capture Interrupt(+)

Отправлено =AVR= 30 декабря 2007 г. 12:44
В ответ на: Захват значения расширенного программно таймера отправлено Леонид Иванович 30 декабря 2007 г. 11:20

Все делается внутри Capture Interrupt. VARH:VARL = 32-битная переменная, куда надо считать значение:

- Читаем младшие (аппаратные) регистры захвата в VARL.
- Если старший бит = 1, то НЕ инкрементируем расширитель, читаем его в VARH и и выходим.
- Если старший бит = 0, то смотрим флаг TOV:
-- Если TOV = 0, то НЕ инкрементируем расширитель, читаем его в VARH и и выходим.
-- Если TOV = 1, то ИНКРЕМЕНТИРУЕМ расширитель, читаем его в VARH, чистим TOV и и выходим.

Теперь поясню:

- Выполнена главная задача - убраны проблемы с рассинхронизацией двух прерываний (TCAP и TOV), и все события обрабатываются в привязке ТОЛЬКО к моменту захвата.

- При TCAPH.7 = 1 ОЧЕВИДНО, что на момент ЗАХВАТА таймер еще не переполнился, и даже если TOV на момент ОБРАБОТКИ уже установлен, то нас он не волнует, мы его НЕ ТРОГАЕМ и не инкрементируем расширитель.

- При TCAPH.7 = 0 ВОЗМОЖНО, что на момент ЗАХВАТА таймер мог переполниться, тогда это отразилось бы в TOV. Соответственно, учитываем и манипулируем TOV и все ОК.

Почему "ВОЗМОЖНО"? Да потому, что и следующий после TOV захват, если он пришел раньше, чем через 32К тиков, тоже даст TCAPH.7 = 0. Вот тут-то и нужен TOV, а вот отдельное прерывание для него совсем не нужно, ибо вредно и вносит неизбежный раздрай


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите из двух единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru