13.02.2010, 09:59
общий
это ответ
Здравствуйте, Деда Дима.
Краткое тех задание на основе Ваших комментариев. Есть сигналы:
1. Датчик №1
2. Датчик №2
3. Строб, сигнал проведения измерений
4. Кнопка сброс
Определить нужно следующее:
1. Период сигнала строба
2. Направление вращения
3. Количество импульсов с датчика.
Для наиболее точных измерений нужна наиболее быстрая реакция контроллера на внешние сигналы. Поэтому их нужно завести на входы внешних прерываний INT0 и INT1.
На первый вход заведем сигнал №3 (строб). Сконфигурировать прерывание надо по перепадам уровня сигнала. В обработчике этого события сначала проверяем уровень сигнала на входе, если активный, то обнулим переменные для счета импульсов. Установим переменную – флаг разрешения счета. Обнулим и запустим таймер-счетчик, который будет считать длительность строба.
Если сигнал не активный, то выводим на индикацию посчитанные данные. Сбрасываем флаг разрешения счета.
На второй вход внешнего прерывания заводим сигнал №1 (от первого датчика). Прерывание конфигурируем по фронту. В обработчике проверяем флаг разрешения счета. Если он установлен, то производим счет в переменных для подсчета импульсов.
Для определения направления вращения можно просто проверять состояние датчика №2, если уровень высокий, то одно направление, если низкий, то другое. Эту проверку можно производить в каждом прерывании и выводить на индикацию постоянно. Второй датчик можно подключить к любому свободному входу контроллера.
Про резонаторы не имею информации в их различии, кроме размеров корпуса и цены, маленькие продавали дороже больших, но они более удобны для миниатюрных устройств, там, где есть ограничение по размерам. Рекомендую найти техническую документацию и сравнить характеристики на конкретные модели резонаторов. Некоторую информацию можно посмотреть в этом файле http://lib.chipdip.ru/051/DOC000051109.pdf
Ответить на Ваш вопрос, учтя все нюансы в одном ответе сложно. Задавайте дополнительные более маленькие и конкретные вопросы в процессе их появления.
5
Спасибо большое! Определили с направлением, куда двигаться при разработке, как организовать чтение и обработку сигналов. Я понимаю, что вопрос емкий и так сразу исчерпывающий ответ дать нереально. К слову, исходные данные тоже несколько меняются. Я об этом узнаю в процессе разработки.
Как появятся новые вопросы, буду спрашивать! Спасибо за поддержку!