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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

В Мега8 у меня был реализован счетчик авто-одометра на таймере 0. Таймер увеличивал свой счетчик на 1 при ниспадающем фронте сигнала (точную форму сигнала не знаю, но этот же сигнал идет на микросхему штатного одометра, уровень меняется в диапазоне 0-4,9В). Счетчик считал правильно и стабильно.
Сейчас я реализовал счетчик на прерывании. При ниспадающем сигнале срабатывает прерывание и я программно увеличиваю на 1 определенную переменную.
Беда в том, что счетчик на прерывании стал работать не стабильно, иногда он начинает очень быстро считать сам по себе. В железе ничего не менялось, только поменял вход сигнала с Т0 на INT1.
Как такое возможно, понять не могу. Есть ли в железе какое-то отличие во входах Т0 и INT1?
Последний раз редактировалось dandan Пн фев 21, 2011 12:02:21, всего редактировалось 3 раза.
Реклама
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: Счетчик аппаратный и программный на перерывании

Сообщение Vov123 »

Вывод INT к питанию подтянут?
Реклама
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Re: Счетчик аппаратный и программный на перерывании

Сообщение dandan »

Vov123 писал(а):Вывод INT к питанию подтянут?
Нет, но входящий сигнал имеет 0 и +4.9В, и T0 работал без подтяжки. Я его беру со входа штатной микросхемы, которая считает пробег.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Счетчик аппаратный и программный на перерывании

Сообщение Engineer_Keen »

Вы на 100% исключаете программный косяк при переделке с таймера на прерывание?
Реклама
Эиком - электронные компоненты и радиодетали
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Re: Счетчик аппаратный и программный на перерывании

Сообщение dandan »

Engineer_Keen писал(а):Вы на 100% исключаете программный косяк при переделке с таймера на прерывание?
Если в электрической части разницы между входами INT1 и T0 нет, то получается программный косяк. Я его ищу уже долго но не нахожу. В Протеусе все нормально работает, в железе на столе - тоже. Ставлю в авто - не работает.
Реклама
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: Счетчик аппаратный и программный на перерывании

Сообщение Vov123 »

Значит подтягивайте к земле.Попробуйте дотронутся пальцем - будут ложные срабатывания,потому как болтается в воздухе.
Реклама
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

Re: Счетчик аппаратный и программный на перерывании

Сообщение dandan »

Vov123 писал(а):Значит подтягивайте к земле.Попробуйте дотронутся пальцем - будут ложные срабатывания,потому как болтается в воздухе.
Блин, ничего не понимаю. Подтягиваю к земле или к питанию 1кОм резистор, дотрагиваюсь рукой идут ложные срабатывания. Рядом вход на кнопке, подтянутый 10кОм, дотрагиваюсь рукой никаких ложных срабатываний нет. Уже контроллер поменял на другой, та-же хрень. Что делать не пойму.

Еще пробовал без подтяжки, проводок от ножки 10см, замыкаю на массу, дотрагиваюсь пинцетом к ножке и идут ложные срабатывания. Такое впечатление, что прерывание срабатывает не от смены лог. уровня, а от любых незначительных колебаний напряжения на ножке. Как это возможно? Что делать? Может есть еще какие-то "хитрые" настройки этих прерываний?
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

Неужели никто с таким не сталкивался?

Вопрос простой: могут ли наводки менять логический уровень на входе INT1, тем самым вызывая прерывание, если он притянут к +5В резистором 1кОм? И что делать если такое происходит?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Во первых, это может быть программный глюк (напримр неправильно настроен вход внешнего прерывания, этим иногда страдает визард CVAVR)
Во вторых это может быть аппаратное срабатывание - ставьте RC цепочку (см простейший НЧ-фильтр).Внутренняя подтяжка иил внешняя (что лучше внутренней) должна быть обязательна ибо во время работы мотора, формируются достаточно сильные уровни помех
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

Meteor писал(а):Во первых, это может быть программный глюк (напримр неправильно настроен вход внешнего прерывания, этим иногда страдает визард CVAVR)
Программа написана в AVR Studio
Настройка портов:
LDI R16,0b11100010
OUT DDRD,R16
SBI PORTD,3
Настройка прерывания такая:
LDI R16,0b00001000
OUT MCUCR,R16
LDI R16,0b10000000
OUT GICR,R16
Meteor писал(а): Во вторых это может быть аппаратное срабатывание - ставьте RC цепочку (см простейший НЧ-фильтр).Внутренняя подтяжка иил внешняя (что лучше внутренней) должна быть обязательна ибо во время работы мотора, формируются достаточно сильные уровни помех
Ну не знаю, прерывание срабатывает дома на столе, от прикосновения рукой, подтяжка к "+" 1кОм. Рядом вход от кнопки с подтяжкой 10кОм не реагирует на прикосновение. Хрень какая-то, просто опускаются руки. :(
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

А есть чем "померить" состояние входа? Может где непропаяно? И еще, попробуйте вместо SBI PORTD,3 написать
ldi r16, 0x08
out protd,r16
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

Meteor писал(а):А есть чем "померить" состояние входа? Может где непропаяно? И еще, попробуйте вместо SBI PORTD,3 написать
ldi r16, 0x08
out protd,r16
Есть только тестер, на нем стабильно 4,99В и когда дотрагиваюсь напряжение не меняется.
Пробовал на INT0 - тоже самое.

А может Reset на это влиять, он у меня не притянут ничем? Я уже не знаю, что придумать.

Пробовал в обработчике прерывания опрашивать порт, в итоге на нем всегда "1".
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Опрашиать как?
in r16, portd?
или
in r16, pind?
Сброс надо подтягивать обязательно
Попробуйте параллельно входу, поставить конденсатор, емкостью 0,01...0,5 мкф
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

Meteor писал(а):Опрашиать как?
in r16, portd?
или
in r16, pind?
in r16, pind
Meteor писал(а): Сброс надо подтягивать обязательно
Попробуйте параллельно входу, поставить конденсатор, емкостью 0,01...0,5 мкф
Сброс вчера пробовал на +5 замыкать, разницы нет.
Конденсатор 10nF помогает, но в автомобиле пока не проверял. Но конденсатор заваливает фронты, а мне нужно измерить длину импульса.
Еще интересный момент. Замкнул входы INT1 и T0, в программе одновременно считаю импульсы счетчиком и в прерывании. В результате при касании рукой счетчик не считает вообще, а в прерывании получается 210 импульсов в секунду на 4Мгц тактовой, причем количество насчитанных импульсов зависит напрямую от тактовой частоты, на 1МГц насчитывает 55 импульсов. Вот такая хрень.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Схему и весь код выкладывайте - а то гадание беспредметное получается
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

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

Сообщение TechMike »

Была похожая ситуация, в авто постоянно срабатывало прерывание по INT0 (открытие двери), особенно при запуске двигателя.
Решилось установкой на ногу МК керамики 0.1мкф и стабилитрона в качестве защиты, до этого делитель резистивный.
И само собой проводники до делителя и после к МК надо покороче делать и подальше от источников помех или силовой части схемы.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

вся проблема в том, что бортовая сеть авто это совсем не просто питание +12В, там есть очень хитрые импульсы, которые генерирует катушка зажигания в момент формирования искры, их амплитуда может достигать -/+250В, при этом на самом входе меги, если цепь чисто резистивная, получаются колебания в такт с искрообразованием от -0,5В до +5,6В (смотрел осцилом), т.е. возникновение условия "прерывания INT0 по спаду".
я такие цепи подключаю через диод в прямом направлении и если позволяют временные характеристики сигнала - то и фильтрующий конденсатор 0.1 мкф.
Чем дальше, тем больше становлюсь занудой...
Изображение
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

GP1 писал(а):вся проблема в том, что бортовая сеть авто это совсем не просто питание +12В, там есть очень хитрые импульсы, которые генерирует катушка зажигания в момент формирования искры, их амплитуда может достигать -/+250В, при этом на самом входе меги, если цепь чисто резистивная, получаются колебания в такт с искрообразованием от -0,5В до +5,6В (смотрел осцилом), т.е. возникновение условия "прерывания INT0 по спаду".
я такие цепи подключаю через диод в прямом направлении и если позволяют временные характеристики сигнала - то и фильтрующий конденсатор 0.1 мкф.
Да это все понятно, только оно не работает как надо дома на столе, со стабилизированным источником питания.
И самое главное, что пробег нормально считался счетчиком T0, схема подключения не менялась, только входы поменял Т0 на INT1.
TechMike
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow
Контактная информация:

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

Сообщение TechMike »

dandan писал(а):
GP1 писал(а):вся проблема в том, что бортовая сеть авто это совсем не просто питание +12В, там есть очень хитрые импульсы, которые генерирует катушка зажигания в момент формирования искры, их амплитуда может достигать -/+250В, при этом на самом входе меги, если цепь чисто резистивная, получаются колебания в такт с искрообразованием от -0,5В до +5,6В (смотрел осцилом), т.е. возникновение условия "прерывания INT0 по спаду".
я такие цепи подключаю через диод в прямом направлении и если позволяют временные характеристики сигнала - то и фильтрующий конденсатор 0.1 мкф.
Да это все понятно, только оно не работает как надо дома на столе, со стабилизированным источником питания.
И самое главное, что пробег нормально считался счетчиком T0, схема подключения не менялась, только входы поменял Т0 на INT1.
По питанию у МК что стоит? попробуйте заменить МК на другой, схему плс покажите.
dandan
Нашел транзистор. Понюхал.
Сообщения: 180
Зарегистрирован: Ср дек 22, 2010 12:40:17

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

Сообщение dandan »

TechMike писал(а):
По питанию у МК что стоит? попробуйте заменить МК на другой, схему плс покажите.
Схемы нарисованной, к сожалению, нет. Нарисую - выложу.
По питанию сначала последовательно диод, затем параллельно 1000мкФ и 0,1мкФ, потом КР142ЕН5, после него 220мкФ и 0,1мкФ. Дома на столе питание от стаб. источника 12В.
На вход INT1 подтяжка 1кОм (начал с 10кОм, потом уменьшал, чем меньше сопротивление, тем меньше ложных срабатываний) припаян проводок 10см за второй конец беру рукой и прерывание начинает срабатывать или пинцетом касаюсь ножки, та же хрень.
МК менял уже 2 раза. В программе пробовал выкидывать все, кроме обработки прерывания.
Закрыто

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