|
4х канальный счетчик импульсов |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Dec 27 2005, 10:21
|
Частый гость
 
Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688

|
Спасибо, попробую вечерком. Вот только вопрос, а что будет в моменты обработки прерываний, считать ведь перестанет? А у меня уже используется 2 прерывания, одно с частотой 1.9Гц, второе с частотой 122Гц причем по видимому будет переписано на 4000Гц. Вот как бы заюзать вход от внешнего прерывания, но на 4 канала и без мультиплекса?
|
|
|
|
|
Dec 27 2005, 10:44
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(AlexTech @ Dec 27 2005, 12:21)  Спасибо, попробую вечерком. Вот только вопрос, а что будет в моменты обработки прерываний, считать ведь перестанет? А у меня уже используется 2 прерывания, одно с частотой 1.9Гц, второе с частотой 122Гц причем по видимому будет переписано на 4000Гц. Вот как бы заюзать вход от внешнего прерывания, но на 4 канала и без мультиплекса?  В моменты прерываний перестанет считать только если, длительность обработки прерывания превысит длительность импульса... В обработчике прерывания можно счетчики сбрасывать после отправки. т.е. скажем считать кол-во оборотов в минуту  Без мультиплексора завести все 4 сигнала на внешнее прерывание не получится.. в M16 только 3 внешних источника прерывания int0, int1, int2, и int2 совпадает с входом аналогового компаратора.. можно завести один сигнал на счетный вход таймера T0 или T1, а остальные раскидать по Int'aм.
|
|
|
|
|
Dec 27 2005, 12:04
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(defunct @ Dec 27 2005, 17:44)  Без мультиплексора завести все 4 сигнала на внешнее прерывание не получится.. в M16 только 3 внешних источника прерывания int0, int1, int2, и int2 совпадает с входом аналогового компаратора.. можно завести один сигнал на счетный вход таймера T0 или T1, а остальные раскидать по Int'aм. Очень даже получится - надо всего то четыре диода и четыре свободных порта. Схема такова: анализируемые линии садим на свободные линии любых портов (лучше для программирования на один порт). Если детектируется нулевой уровень по линии то к каждой линии прицепляем по диоду катодами к каждой линии, анодами вместе на любую линию прерывания вместе. Если детектируем лог. 1, то анодами к каждой линии, а катодами на прерывание. При возникновение события прерывания анализируем подследственные линии на присутствие лог. 0 (1), если есть место данному событию, то увеличиваем счетчик (для каждой линии свой) импульсов линии. Подсчет количества импульсов в секунду (или менее) организовать не сложно для Вас, я думаю. Если есть возможность, поменяйте модель МК, есть такие, у которых присутствует вектор прерывания по изменению сигнала на любой линии порта.
--------------------
|
|
|
|
|
Dec 27 2005, 12:14
|
Частый гость
 
Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688

|
Ничего страшного не случится, я не в космос лечу +/- 50 оборотов меня устроит вполне Спасибо всем, буду пробовать. И потом разве МК не запустит вторую копию обработчика прерываний?
Сообщение отредактировал AlexTech - Dec 27 2005, 12:16
|
|
|
|
|
Dec 27 2005, 12:35
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(defunct @ Dec 27 2005, 19:11)  Считать-то он успеет, а вот от ошибок не застрахуешься при такой реализации. Представьте ситуацию, когда один тахометр вызвал прерывание, мы порт прочитали, низкий уровень еще удерживается и в этот момент приходит сигнал от другого тахометра.. и все приплыли - перывания нет, импульс пропущен. А никаких ошибок при такой частоте входных импульсов и не будет (вернее погршность будет низкая для данного типа устройства) - по любому прерыванию процессор анализирует состояния ВСЕХ линий. Итого время исполненя прерывания (при 8 МГц) - 2..5 мкс - вполне нормально. Цитата(AlexTech @ Dec 27 2005, 19:14)  И потом разве МК не запустит вторую копию обработчика прерываний? Пока МК обрабатывает текущее прерывание, ни какие копии он не запускает. После отработки прерывания, минимум через такт он сможет начать обрабатывать следующее прерывание
--------------------
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|