Ложные срабатывания внешнего прерывания

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

Re: Ложные срабатывания внешнего прерывания

Сообщение TechMike »

dandan писал(а):
TechMike писал(а):
По питанию у МК что стоит? попробуйте заменить МК на другой, схему плс покажите.
Схемы нарисованной, к сожалению, нет. Нарисую - выложу.
По питанию сначала последовательно диод, затем параллельно 1000мкФ и 0,1мкФ, потом КР142ЕН5, после него 220мкФ и 0,1мкФ. Дома на столе питание от стаб. источника 12В.
На вход INT1 подтяжка 1кОм (начал с 10кОм, потом уменьшал, чем меньше сопротивление, тем меньше ложных срабатываний) припаян проводок 10см за второй конец беру рукой и прерывание начинает срабатывать или пинцетом касаюсь ножки, та же хрень.
МК менял уже 2 раза. В программе пробовал выкидывать все, кроме обработки прерывания.
По питания вроде все нормально.
0.1мкф керамику посадите на ногу INT0 и землю, сигнал подавайте на INT0 дополнительно через резистор 1ком.
Больше вариантов у меня нет, еще может порт МК сконфигурирован не верно...
Вот тут мой проект, принцип тот же использован http://rn3aig.ru/phpBB3/viewtopic.php?f=4&t=11
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Ложные срабатывания внешнего прерывания

Сообщение Kavka »

Какая у вас максимальная частота следования импульсов? И что именно вы регистрируете частоту или скважность (длительность логической 1 или 0)? С какой точностью вам надо измерять? Может попробовать рассчитать соответствующий RC-фильтр, а лучше LC-фильтр, чтобы не сильно ухудшал временнЫе характеристики сигнала?

Подключена ли ножка AVCC контроллера к питанию? (Иногда бывают глюки, да же тут, на форуме, уже где-то было)
Стоит ли блокировочный конденсатор (около 0,1мкФ) в непосредственной близости от ножек питания контроллера?

Попробуйте поставить поставить индуктивность по питанию.
dandan писал(а): Еще интересный момент. Замкнул входы INT1 и T0, в программе одновременно считаю импульсы счетчиком и в прерывании. В результате при касании рукой счетчик не считает вообще, а в прерывании получается 210 импульсов в секунду на 4Мгц тактовой, причем количество насчитанных импульсов зависит напрямую от тактовой частоты, на 1МГц насчитывает 55 импульсов. Вот такая хрень.
Абсолютно ничего интересного и никакой хрени!!! :kill: Читайте спецификацию на контроллер, раздел про таймеры, подзаголовок "External Clock Source". Извините за иронию, но там даже картинка есть. :) На картинке нарисовано то что есть у T0 и чего нет у INT1. Надеюсь, это объяснит наблюдаемое вами поведение контроллера. AFAIK, это имеет место для всег МЕГ и ТИНЕК.

Вы писали, что подтягиваете сигналчик к питанию. Попробуйте задать биты конфигурации прерывания ISC01 ISC00 равными 0 0 (The low level of INT0 generates an interrupt request).
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Re: Ложные срабатывания внешнего прерывания

Сообщение dandan »

Kavka писал(а):Какая у вас максимальная частота следования импульсов? И что именно вы регистрируете частоту или скважность (длительность логической 1 или 0)? С какой точностью вам надо измерять? Может попробовать рассчитать соответствующий RC-фильтр, а лучше LC-фильтр, чтобы не сильно ухудшал временнЫе характеристики сигнала?
Я измеряю период следования сигнала, т.е. время между срабатывания прерывания по переходу из 0 в 1. Макс. частота примерно 180 Гц. Но позже мне нужно будет с помощью другого прерывания измерить время длительности лог. 0 для другого сигнала, там длительность нуля будет от 0,2мкс.
Kavka писал(а): Подключена ли ножка AVCC контроллера к питанию? (Иногда бывают глюки, да же тут, на форуме, уже где-то было)
Стоит ли блокировочный конденсатор (около 0,1мкФ) в непосредственной близости от ножек питания контроллера?
AVCC подключена к +5, конденсатор 0,1мкФ припаян к ножкам.
Kavka писал(а): Абсолютно ничего интересного и никакой хрени!!! :kill: Читайте спецификацию на контроллер, раздел про таймеры, подзаголовок "External Clock Source". Извините за иронию, но там даже картинка есть. :) На картинке нарисовано то что есть у T0 и чего нет у INT1. Надеюсь, это объяснит наблюдаемое вами поведение контроллера. AFAIK, это имеет место для всег МЕГ и ТИНЕК.
Вот! Изначально вопрос и был про различие в этих входах.
Я правильно понимаю, что для T0 длина импульса должна быть больше периода внутренней синхронизации, чтобы этот импульс регистрировался? Объясните, пожалуйста, а то в английском не силен.
Kavka писал(а): Вы писали, что подтягиваете сигналчик к питанию. Попробуйте задать биты конфигурации прерывания ISC01 ISC00 равными 0 0 (The low level of INT0 generates an interrupt request).
[/quote]
Попробую, но мне такой режим не подходит.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Ложные срабатывания внешнего прерывания

Сообщение Kavka »

dandan писал(а): Вот! Изначально вопрос и был про различие в этих входах.
Я правильно понимаю, что для T0 длина импульса должна быть больше периода внутренней синхронизации, чтобы этот импульс регистрировался? Объясните, пожалуйста, а то в английском не силен.
Да, именно так. На картинке нарисован простейший цифровой фильтр устраняющий регистрацию импульсов малой (относительно тактового сигнала) длительности и проявления, так называемых, метастабильных состояний вызванных медленным нарастанием/спадом сигналов на входе.
Можете попробовать поставить триггер Шмитта перед контроллером на этот сигнальчик, или собрать схемку аналогичную картинке из спецификации на 74HC74 (два D-триггера).
В любом случае надо фильтровать этот сигнал, аналоговым или цифровым фильтром - на ваше усмотрение.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Эиком - электронные компоненты и радиодетали
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Re: Ложные срабатывания внешнего прерывания

Сообщение dandan »

Kavka писал(а): Да, именно так. На картинке нарисован простейший цифровой фильтр устраняющий регистрацию импульсов малой (относительно тактового сигнала) длительности и проявления, так называемых, метастабильных состояний вызванных медленным нарастанием/спадом сигналов на входе.
Можете попробовать поставить триггер Шмитта перед контроллером на этот сигнальчик, или собрать схемку аналогичную картинке из спецификации на 74HC74 (два D-триггера).
В любом случае надо фильтровать этот сигнал, аналоговым или цифровым фильтром - на ваше усмотрение.
В Меге на входах триггера есть, получается, что при подключении входа к прерыванию триггер отключается? И возможна ли такая ситуация когда прерывание сработало по перепаду 0-1, а при опросе порта сразу в обработчике прерывания будет 0?

И насколько я понимаю изменение логического уровня детектируется двумя выборками, разнесенными по времени, в принципе как и на Т0.
И еще, неужели в проводе длинной 10см, замкнутом одним концом на массу, на другом конце могут возникать напряжения до 3-5 вольт? Как то не верится в это.
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Ложные срабатывания внешнего прерывания

Сообщение Kavka »

dandan писал(а): В Меге на входах триггера есть, получается, что при подключении входа к прерыванию триггер отключается? И возможна ли такая ситуация когда прерывание сработало по перепаду 0-1, а при опросе порта сразу в обработчике прерывания будет 0? И насколько я понимаю изменение логического уровня детектируется двумя выборками, разнесенными по времени, в принципе как и на Т0.
Тригер Шмитта не отключается, но вот про отсутствие 2-х D-тригеров на INT0 - память меня подвела. Извиняюсь за дезинформацию. Как написано в спецификации, например, на мегу16 в разделе альтернативных функций портов - синхронизатор (synchronizer) не используется только если ножка используется как тактовый вход. На некоторых мегах есть внешнее прерывание на ножке вместе с аналоговым компаратором, вот у него что-то по другому со входом.
То что вы написали про срабатывание прерывания по нарастающему фронту и чтение pin-а из обработчика со значением "0" - запросто. Значение pin-а не "защёлкивается", а вход в прерывание длиться некоторое количество тактов. Завершение текущей инструкции (макс. 4 такта) + вход в прерывание по адресу (4 такта) + по адресу обычно стоит jmp/rjmp (2-3 такта) выходит от 6 до 11 тактов до реального кода обработчика. Плюс преамбула с сохранением регистров в стек. За это время состояние сигнала может поменяться уже не один раз, особенно в случае импульсной помехи.
dandan писал(а): И еще, неужели в проводе длинной 10см, замкнутом одним концом на массу, на другом конце могут возникать напряжения до 3-5 вольт? Как то не верится в это.
Помехи вещь страшная - лезут куда не попадя. :) Рассчитайте фильтр, он задерживает фронты, но не изменяет частоту.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Re: Ложные срабатывания внешнего прерывания

Сообщение dandan »

Поставил RC фильтр 10nF 1kOm на входе прерывания и оно заработало!
Всем спасибо.

Еще вопросик, при расчете RC фильтра нужно брать R в Омах, а С в фарадах ?
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6319
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Ложные срабатывания внешнего прерывания

Сообщение Jack_A »

Конечно, тогда tau получишь в секундах, если кОм, нФ - то в микросекундах и т.д.
Аватара пользователя
Aaantonnn15
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт авг 20, 2010 18:31:05
Контактная информация:

Re: Ложные срабатывания внешнего прерывания

Сообщение Aaantonnn15 »

dandan писал(а):Поставил RC фильтр 10nF 1kOm на входе прерывания и оно заработало!
Всем спасибо.

Еще вопросик, при расчете RC фильтра нужно брать R в Омах, а С в фарадах ?

Посмотри как будет время. http://eewiki.ru/wiki/Помехоустойчивые_устройства.
http://easyelectronics.ru/kovarnye-vch-cepi.html.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»