программирование микроконтроллеров AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 3
Зарегистрирован: Вс май 17, 2009 12:51:42

Сообщение balagurov07 »

я запустил внешнее прерывание по восходящему фронту сигнала, теперь как мне узнать время между 2 внешними прерываниями ввиде переменной, желательно чтобы все это было в командах cvavr, все это для чайника.
Последний раз редактировалось balagurov07 Вс май 17, 2009 14:33:47, всего редактировалось 1 раз.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк

Сообщение sachok »

При одном прерывании запускаем таймер при следующем останавливаем. Можно играться с счетными регистрами, а можно просто завести переменную и допустим таймер настроить что бы было прерывание по переполнению и в обработчике прерываний инкрементировать эту переменную.
Я не Сашок!!!
Контактная информация:
Реклама
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

balagurov07 писал(а):я запустил внешнее прерывание по восходящему фронту сигнала, теперь как мне узнать время между 2 внешними прерываниями ввиде переменной, желательно чтобы все это было в командах cvavr, все это для чайника.
Во-первых нужно как можно скорее переставать быть чайником :).
Для этого нужно в даташит посмотреть и прочитать про модуль захвата (Input Capture Unit) - это модуль, который по сигналу со специальной ноги заносит в регистр захвата текущее значение таймера. Программная реализация проста:
1 Настраиваем ногу захвата на захват по фронту
2 Организовываем в прерываниях по переполнению таймера счетчик нужной разрядности T
3 В прерываниях по захвату организуем сохранение переменных t1 и t2 (можно и больше), о которых ниже.
4 Разрешаем прерывания
5 При первом захвате сохраняем вот такое заначение в переменную t1 = T<<n + ICR, где T - значение программного счетчика, огранизованного в прерывании по переполнению таймера, n - разрядность таймера, ICR- содержание регистра захвата.
6 При втором захвате сохраняем вот такое заначение в переменную t2 = T<<n + ICR, где T - значение программного счетчика, огранизованного в прерывании по переполнению таймера, n - разрядность таймера, ICR- содержание регистра захвата.
7 А время между захватами - т. е. время между двумая прерываниями в вашей задаче - это разность t2-t1.
Замечание: если частота появления прерываний достаточно высока (менше частоты переполнения таймера), то переменную T можно не организовывать, в этом случае разность t2-t1 должна быть беззнаковой.
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Это скорее в "Мелкие вопросы" + поиск по форуму.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»