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

 
 
> Таймеры и прерывания
AiDream
сообщение Jan 24 2012, 09:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 8-09-11
Пользователь №: 67 064



Здравствуйте!
В программировании микроконтроллеров новичок, поэтому прошу не ругать сразу)
Встала задача:
На вход микроконтроллера постоянно поступают импульсы. Необходимо замерять временной интервал между ними, запоминать эти значения и проводить над ними простые математические операции.
Длительность импульсов - 5 мс, амплитуда - 12 В.
Пока что продумываю алгоритм.
Как я понимаю, надо настроить один из таймеров на запуск по входному нарастающему импульсу. Тут вопрос - остановится ли таймер по приходу следующего импульса, чтобы можно было считать накопленное им значение?
Заранее благодарю за помощь.

Цитата(AiDream @ Jan 24 2012, 11:47) *
Здравствуйте!
В программировании микроконтроллеров новичок, поэтому прошу не ругать сразу)
Встала задача:
На вход микроконтроллера постоянно поступают импульсы. Необходимо замерять временной интервал между ними, запоминать эти значения и проводить над ними простые математические операции.
Длительность импульсов - 5 мс, амплитуда - 12 В.
Пока что продумываю алгоритм.
Как я понимаю, надо настроить один из таймеров на запуск по входному нарастающему импульсу. Тут вопрос - остановится ли таймер по приходу следующего импульса, чтобы можно было считать накопленное им значение?
Заранее благодарю за помощь.

Расстояние между импульсами от 10 до 200 мс.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
birden
сообщение Jan 25 2012, 03:49
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 28-10-06
Из: Новосибирск
Пользователь №: 21 743



Могу посоветовать "средство" - Winavr, или его нынешнее развитие - AVR Toolchain. Это компилятор, IDE к нему каждый выбирает по себе. Я, например, использую CodeBlocks.
Еще одно необходимое "средство" - документация (datasheet) на используемый МК. Если Вы планируете и дальше заниматьсся решением подобных задач, то это должно стать вашей "настольной книгой" первое время.
По поводу примера программы: любую задачу можно попробовать начать решать с составления алгоритма. В данном случае, это можно представить так:
1. Настройка захвата - выбор типа фронта, вкл. или выкл. шумоподавителя, прерываний (если нужно)
2. Настройка соответствующего таймера (выбор режима и т.д.)
3. Сброс флага захвата
4. Включение захвата
5. Ожидание флага захвата, старт таймера.
6. Сброс флага захвата
7. Ожидание флага захвата, чтение результата.
Это примерный алгоритм, для начала. В качестве оптимизации можно добавить некоторые моменты: старт таймера перед включением захвата, чтобы по приходу первого фронта знать содержимое таймера; организация что-то вроде конечного автомата для измерения некоторого числа периодов (для усреднения) и т.д.
Go to the top of the page
 
+Quote Post



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

 


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


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