Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запуск таймера по событию
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Vny4ek
Ребят, я новичок, подскажите плиз. Как запустить таймер в CV по событию (прерывание по перепаду), что бы он считал по циклу и в случае перепада записать его значение в переменную я научился, а вот как сделать что бы при прерывании по перепаду, таймер начинал отсчет, не могу разобраться.
Vishv
Ну, для разнообразия, разъясните что за процессор, что за событие?
Vny4ek
Atmega8-16 событие перепад уровня сигнала из 0 в 1 (0 вольт в больше 3.6 вольт) ну или наоборот. из 1 в 0
Vishv
Цитата(Vny4ek @ Jul 27 2009, 23:51) *
Atmega8-16 событие перепад уровня сигнала из 0 в 1 (0 вольт в больше 3.6 вольт) ну или наоборот. из 1 в 0

Про перепад я понял, однако где этот перепад происходит - на выводе внешнего прерывания (например INT0) или еще где?
А вообще для таймера0 Atmega8 TCCR0=0x00 - таймер остановлен см. страницу 68 datasheet (Timer/Counter Control
Register – TCCR0). те при любой другой комбинации таймер работает.
Таким образом для того, чтобы таймер запустить по прерыванию необходимо:
1.Остановить таймер (TCCR0=0x00;)
2.Проделать что нужно с его содержимым,
3.В обработчике прерываний запустить таймер - записать TCCR0 что-либо неравное 0х00.
adc
Цитата
Ребят, я новичок, подскажите плиз.
Зачем Вы плодите темы?
Тут бы и обсуждали про таймер: Прием данных на Атмеге Складывается впечатление что Вам ну просто лень заглянуть в datasheet, и почитать про настройку таймера. maniac.gif
Если с аглицким трудности, то берите Евстифеева А.В. "Микроконтроллеры AVR семейств...." и изучайте!
Предвидя Ваш вопрос -"где его взять?"...
part1
part2
Vny4ek
Во! Спасибо понял. Да событие происходит на ножке INT0 например. Извините за плодежку темы. тут вопрос более конкретный. Тоесть оказывается можно в любом коде прерывания инициализировать таймер так как нужно? я думал это делается только один раз в коде просто. Тоесть в прерывании например я даже могу ножку проца назначить не входом (как было объявлено ранее с помощью мастера генератора кода) а сделать при прерывании на ножке INT0 что бы стала выходом да?
Vishv
Цитата(Vny4ek @ Jul 28 2009, 11:09) *
Во! Спасибо понял. Да событие происходит на ножке INT0 например. Извините за плодежку темы. тут вопрос более конкретный. Тоесть оказывается можно в любом коде прерывания инициализировать таймер так как нужно? я думал это делается только один раз в коде просто. Тоесть в прерывании например я даже могу ножку проца назначить не входом (как было объявлено ранее с помощью мастера генератора кода) а сделать при прерывании на ножке INT0 что бы стала выходом да?

Да можете..
Ну а с замечанием adc "Вам ну просто лень заглянуть в datasheet, и почитать про настройку таймера" я полностью согласен
Vny4ek
Спасибо, да не лень мне, я стараюсь черпать из даташитов все, но там вот например таймеры очень не просто описаны. Я как новичек не понял, даже переводя промтом. так что зря Вы что я не смотрел, просто теперь вот например я понял многое и читая даташиты уже будет проще понимать остальное. Спасибо!!!
MrYuran
А задача-то какая стоИт?
может, и не стоит ничего "запускать", а просто один раз проинициализировать и потом считать системные тики?
Если нужно очень точно отсчитать интервал от внешнего сигнала - нужно пользоваться захватом от компаратора.
Очень точно - с точностью до тактов таймера
Если такая точность не требуется, можно по прерываниям.
Vny4ek
Ну точность нужна 400мкс тоесть где то импульс 400мкс=1 а 800мкс=0 ну и бывает что +-30% плывут интервалы по времени. Кварц будет стоять 8Мгц. Очень большая точность как я понял для замера таких временных интервалов с целью приема информации и преобразовании в двоичный вид не нужна.
Vny4ek
Кстати подскажите пожалуйста почему у меня не происходит реакции на события прерывания INT0 any change тоесть пускаю генератор сигнала а в прерывание не попадает. Атмега8-16
Настраиваю в CV в мастере генерации кода, там выбираю этот пункт any change, но реакции на это событие не происходит
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.