реклама на сайте
подробности

 
 
> Счетчик на Mega128
Ojo
сообщение Jun 26 2008, 15:54
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 16-06-05
Пользователь №: 6 070



Счетчик на Mega128

Пожалуйста, подскажите, как сделать следующую вещь? Есть линия для анализа. На ней могут быть логический ноль (почти всегда) или логическая 1 (редко, небольшими импульсами различной длины от 1 мсек до 10 мсек). Задача состоит в том, чтобы подсчитывать какова длительность всех импульсов логической 1 за текущую прошедшую секунду. Частота Меги 16MHz. Точность измерений:10% устроит.

Самое очевидное решение. Повесить исследуемую линию на любую ножку прерывания Мегию. При возникновении на ней логической 1 (и как следствия прерывания) засекать время (организовав внутренний таймер), При возникновении логического 0 на ней подсчитывать время импульса и прибавлять к переменной ВСЕГО.

Данное решение не подходит. Т.к. в силу специфики прошивки устройства Мега может запретить прерывания на длительное время (до 10 мсек).

Наверняка есть возможность решить эту задачу через таймеры/счетчки.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Jun 26 2008, 16:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



На ум приходит такая вещь:

1. Необходим генератор импульсов (на таймере МК с выходом наружу или внешний)
2. Логическая единица замеряемого сигнала через вентиль пропускается на счетный вход таймера (счетчика) импульсы генератора из п.1.
3. Сам сигнал заведен также на ногу внешнего прерывания, которое (прерывание) настроено на срабатывание по перепаду из 1 в 0.
4. При возникновении внешнего прерывания считываем значение счетного регистра счетчика из п.2, число в нем - пророрционально длительности замеряемого сигнала. После считывания (и вначале программы) - не забыть бы обнулить счетчик.



Цитата(MrYuran @ Jun 26 2008, 19:27) *
Разница значений в защёлках и будет равна длительности импульса (в тактах таймера)
При таком подходе возникает задача синхронизации значений счетных регистров двух таймеров. Правда, большая точность автору вопроса не нужна, поэтому, наверное, это - тоже решение.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 01:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016