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

 
 
> Счетчик на 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
Ответов
Ojo
сообщение Jun 26 2008, 16:56
Сообщение #2


Участник
*

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



Спасибо за ответы. Жалко что у меги нет возможности в таймере по одному фронту записать значение счетчика в один регист, а по второму во второй. Т.к. оба предложенных решения требуют задействования 2-х ножек Мега.

Сообщение отредактировал Ojo - Jun 26 2008, 16:56
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 27 2008, 09:49
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Ojo @ Jun 26 2008, 19:56) *
Спасибо за ответы. Жалко что у меги нет возможности в таймере по одному фронту записать значение счетчика в один регист, а по второму во второй. Т.к. оба предложенных решения требуют задействования 2-х ножек Мега.

Можно выбрать, по какому фронту захват делать. А после первого захвата перенастроить на другой фронт.


Цитата(Maik-vs @ Jun 27 2008, 12:23) *
Таймер даёт прерывания через, например 1 миллисекунду. Точность 0.1%, всё синхронно

читаем задание:
Цитата
редко, небольшими импульсами различной длины от 1 мсек до 10 мсек

ну и где, спрашивается, "Точность 0.1%, всё синхронно"?
в лучшем случае 10%, а то и вообще импульс мимо пролетит.
не забываем ещё, что
Цитата
в силу специфики прошивки устройства Мега может запретить прерывания на длительное время (до 10 мсек)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 27 2008, 09:57
Сообщение #4


Гуру
******

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



Цитата(Maik-vs @ Jun 27 2008, 12:23) *
Есть такая возможность! Подаёте свой сигнал на вход прерывания, настраиваете реакцию на оба фронта. В обработчике первым делом ветвитесь по уровню сигнала - какой фронт. И вперёд.


Цитата(MrYuran @ Jun 27 2008, 12:43) *
Можно выбрать, по какому фронту захват делать. А после первого захвата перенастроить на другой фронт.
Отвечающие, по-моему, забывают, что проблема в том, что прерывания могут быть запрещены на время бОльшее, чем длительность импульса...

Цитата(Ojo @ Jun 26 2008, 19:56) *
оба предложенных решения требуют задействования 2-х ножек Мега.
Наверное, на МК много чего подключено, раз двух ножек жалко. Тогда, может быть, поручить эту задачу отдельному МК (tiny) и подцепить его к m128 каким-нибудь уже используемым интерфейсом, позволяющим работать с несколькими устройствами (например, SPI)?
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jun 27 2008, 13:37
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(Палыч @ Jun 27 2008, 13:57) *
Отвечающие, по-моему, забывают, что проблема в том, что прерывания могут быть запрещены на время бОльшее, чем длительность импульса...

Да, пардон, невнимательно прочитал. Просто не могу себе представить, зачем при такой частоте процессора запрещать прерывания на целых 10 мсек. Тут затык - переделывать надо.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 11:30
Рейтинг@Mail.ru


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