Вопрос шумы на ножке прерывания.

kh2701@ukr.net
Offline
Зарегистрирован: 14.04.2016

Добрый день. Помогите пожалуйста разобраться с вопросом потому как какой-нить цельной информации найти не могу.

Задача: есть avr контроллер Attiny13 на ножке которого генерируются пачки импульсов. Этот вывод я подключаю на int 0 arduino mega. Считаю количество импульсов в секунду и вывожу на экран. И вот значения импульсов гуляют в диапазоне от 21000 до 44000. (значения округлены). Сначала грешил на Аттини. Например при приделителе 1/64  и выше ардуина импульсы вообще не обозначала, и судя по всему это проблеми АТтини, т.к. при подключении на ее вывод светодиода тот тоже на повышенные значения пределителя не реагировал.

Но потом я заметил, что int 0 "фонит" при отключенном источнике импульсов и решил притянуть вывод ардуины (2) к земле, а позже сделать RC цепочку. Значения так же меняются, но цифры уже совсем другие. Очевидно влияние на значения импульсов емкости конденсатора.

Т.е. я совершенно не могу понять на что опираться в связи с этим всем. по-идее ардуина должна біла просто считать входящие импульсы, а тут она ловит какие-то посторонние шумы. как получить достоверный результат?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

kh2701@ukr.net пишет:

Считаю количество импульсов в секунду.............. И вот значения импульсов гуляют в диапазоне от 21000 до 44000................. и судя по всему это проблеми АТтини, т.к. при подключении на ее вывод светодиода тот тоже на повышенные значения пределителя не реагировал.

Вы по светодиоду на глаз собрались определять разницу при частоте в тысячи импульсов в секунду???

kh2701@ukr.net пишет:

Но потом я заметил, что int 0 "фонит" при отключенном источнике импульсов и решил притянуть вывод ардуины (2) к земле, а позже сделать RC цепочку. Значения так же меняются, но цифры уже совсем другие. Очевидно влияние на значения импульсов емкости конденсатора.

Правильно, нужно было притянуть. Но зачем там RC-цепочка??? Каким образом притягивали к земле?

Прерывания отлавливаете по фронтам? (RISING или FALLING)

kh2701@ukr.net
Offline
Зарегистрирован: 14.04.2016

Jeka_M пишет:

Вы по светодиоду на глаз собрались определять разницу при частоте в тысячи импульсов в секунду???

Нет. Определять будет TSOP1736. Ну... по крайней меря я на это надеюсь...

Jeka_M пишет:

Правильно, нужно было притянуть. Но зачем там RC-цепочка??? Каким образом притягивали к земле?

Прерывания отлавливаете по фронтам? (RISING или FALLING)

Притянул к земле резистором 10к. Поскольку я пока малограммотен, пока искал инфу где-то увидел RC-цепочку, решил попробовать еще так.

Да, прерывание по фронтам. Конкретно сейчас - RISING.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ясно. Уберите RC-цепочку и пробуйте стягивающие к земле резисторы номиналом поменьше. Постепенно снижайте номинал вплоть до 1 кОм (или даже 680 Ом), должно помочь от помех.

kh2701@ukr.net
Offline
Зарегистрирован: 14.04.2016

а как понять, что нужно остановиться?

шум давал значения до 500 срабатываний, а счет показывает от 22000 срабатываний до 44000. Т.е. разброс такой нехилый...

Может есть другой способ более точно считать количество импульсов?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Есть такая штучка как фильтр.
Поставьте частоту среза раза в 2-4 выше вашей максимальной частоты- и будет вам счастье.

РЦ цепочка кстати тоже фильтр.
http://vt-tech.eu/articles/calculators/165-simple-rc-filters.html

http://www.radioamcalc.narod.ru/

Вам нужен фильтр нижних частот...

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ну как ножка прерывания перестанет ловить помехи (без подключенной аттини), так и остановитесь.

P.S. Да, видимо про RC-цепочку я погорячился.

 

kh2701@ukr.net
Offline
Зарегистрирован: 14.04.2016

т.е. вместо подтягивающего резистора поставить фильтр низких частот?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Ваша Attiny13 уже даёт чёткий сигнал от "0" до "1".
Это так ? Ведь там не открытый коллектор, правда?

Поэтому никаких "подтяжек" вам не надо.
Потому что этот резистор тоже войдёт в состав фильтра.

А если честно то я не понимаю что вы там ловите.
Attiny13 даёт достаточно "мощьный" сигнал чтобы никакая помеха не смогла его изменить.
Повесьте на вход 1000 пик и проверьте надёжность соединения земель

ВН
Offline
Зарегистрирован: 25.02.2016

kh2701@ukr.net пишет:

Добрый день. Помогите пожалуйста разобраться с вопросом потому как какой-нить цельной информации найти не могу.

Задача: есть avr контроллер Attiny13 на ножке которого генерируются пачки импульсов. Этот вывод я подключаю на int 0 arduino mega. 

попробовать использовать 5 таймер в СТС и его внешний вход -47

Зачем там фильтры, действительно, ..... совсем непонятно. Ошибка скорее где-то в обработке.

kh2701@ukr.net
Offline
Зарегистрирован: 14.04.2016

trembo пишет:

Ваша Attiny13 уже даёт чёткий сигнал от "0" до "1".
Это так ? Ведь там не открытый коллектор, правда?

Честно говоря, впервые пробую голый микроконтроллер. Что вы имеете в виду под коллектором? У меня в Тини13 установлен таймер в режим Normal, прерывание по переполнению и флаги изменения сигнала на ОСОА при переполнении. 

trembo пишет:

А если честно то я не понимаю что вы там ловите.
Attiny13 даёт достаточно "мощьный" сигнал чтобы никакая помеха не смогла его изменить.
Повесьте на вход 1000 пик и проверьте надёжность соединения земель

мне нужна гребенка частотой 36 кГц для ИК баръера. поскольку осциллографа нет, пытаюсь понять, что там АТтини выдает. Пробовал понизить частоту импульсов пределителем (ну, что бы разобраться), но Аттини не выдает сигнала если приделитель установлен на 1/64 и выше. Это второй вопрос, который я не пойму... По-идее ардуина должна выдавать однородные количество импульсов, но при прочих равных условиях, если сделать выкл/вкл значения могут изменяться от 22000 до 44000 и я не знаю на, что мне ориентироваться...

 

ВН пишет:

попробовать использовать 5 таймер в СТС и его внешний вход -47

Зачем там фильтры, действительно, ..... совсем непонятно. Ошибка скорее где-то в обработке.

можете поподробней объяснить?

ВН
Offline
Зарегистрирован: 25.02.2016

kh2701@ukr.net пишет:
можете поподробней объяснить? 

http://chipenable.ru/index.php/programming-avr/item/191-uchebnyy-kurs-av...

возможно твоя обработка инт0 не успевает за входными импульсами, ты же и сам не уверен сколько там реально выдается, а таймер в СТС может считать с максимально возможной для проца скоростью, формировать прерывание, и у тебя будет время на его обработку.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

kh2701@ukr.net пишет:

Добрый день. Помогите пожалуйста разобраться с вопросом потому как какой-нить цельной информации найти не могу.

Задача: есть avr контроллер Attiny13 на ножке которого генерируются пачки импульсов. Этот вывод я подключаю на int 0 arduino mega. Считаю количество импульсов в секунду и вывожу на экран. И вот значения импульсов гуляют в диапазоне от 21000 до 44000. (значения округлены). Сначала грешил на Аттини. Например при приделителе 1/64  и выше ардуина импульсы вообще не обозначала, и судя по всему это проблеми АТтини, т.к. при подключении на ее вывод светодиода тот тоже на повышенные значения пределителя не реагировал.

Но потом я заметил, что int 0 "фонит" при отключенном источнике импульсов и решил притянуть вывод ардуины (2) к земле, а позже сделать RC цепочку. Значения так же меняются, но цифры уже совсем другие. Очевидно влияние на значения импульсов емкости конденсатора.

Т.е. я совершенно не могу понять на что опираться в связи с этим всем. по-идее ардуина должна біла просто считать входящие импульсы, а тут она ловит какие-то посторонние шумы. как получить достоверный результат?

Считать ипульсы на борту тини и перелавать их количество по любому желаемому интерфейсу, например, по однопроводному, нет возможности?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Блин, опять ХШ не фурычит .. код всего этого безобразия - где? А схема подключения? :)