Знакомства с помехами на AVR
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Знакомства с помехами на AVR
Я сразу извиняюсь, если перепутал раздел или тема уже была.
Вот небольшая история:
Начал я ковыряться с энкодером. Всё, вроде бы не плохо, понял и разобрался.
Работал с привычным трёх разрядным семисегментным индикатором.
Программа должна была выводить на разряд сотен число от 0 до 9. На два младших разряда она выводила состояние "кнопок" энкодера. То есть горит сегмент, на опрашиваем ноге порта 1, не горит 0. Ничего сложного.
Алгоритм примерно такой:
-Заносим PINC в C
-Цикл динамической индикации
-Если C!=PINC, то увеличить число в разряде сотен
-Опрос порта C, чтобы получить данные о ногах энкодера.
Но число на сотенном разряде хаотично менялось само собой. То замирало. То быстро менялось, то медленно. Я долго перечитывал программу, пытаясь найти ошибку там. Я не думал на наводки, потому что младшие разряды не дёргались. Осциллограф так же не показывал никаких изменений на ножках. Я думал, раз PINC не меняется, дело в программе.
Но тут я поводил пальцем по контроллеру и увидел, что он реагирует на это. Так же он реагировал на палец вблизи порта C.
Вывод: помехи.
Стоит Мега32, с 16 МГц кварцем.
Резюмируя всё это, я хотел спросить вот что: чтобы избавиться от этих помех, стоит сделать печатную плату, у котрой между дорожками не будет возникать ёмкость. Или ещё что-то можно придумать?
Питание на плату приходит через стабилизатор КР142ЕН5, с конденсаторами, как опложено по его даташиту. Кварц тоже имеет кондеи по 22 пФ, как сказано в учебнике.
Вот небольшая история:
Начал я ковыряться с энкодером. Всё, вроде бы не плохо, понял и разобрался.
Работал с привычным трёх разрядным семисегментным индикатором.
Программа должна была выводить на разряд сотен число от 0 до 9. На два младших разряда она выводила состояние "кнопок" энкодера. То есть горит сегмент, на опрашиваем ноге порта 1, не горит 0. Ничего сложного.
Алгоритм примерно такой:
-Заносим PINC в C
-Цикл динамической индикации
-Если C!=PINC, то увеличить число в разряде сотен
-Опрос порта C, чтобы получить данные о ногах энкодера.
Но число на сотенном разряде хаотично менялось само собой. То замирало. То быстро менялось, то медленно. Я долго перечитывал программу, пытаясь найти ошибку там. Я не думал на наводки, потому что младшие разряды не дёргались. Осциллограф так же не показывал никаких изменений на ножках. Я думал, раз PINC не меняется, дело в программе.
Но тут я поводил пальцем по контроллеру и увидел, что он реагирует на это. Так же он реагировал на палец вблизи порта C.
Вывод: помехи.
Стоит Мега32, с 16 МГц кварцем.
Резюмируя всё это, я хотел спросить вот что: чтобы избавиться от этих помех, стоит сделать печатную плату, у котрой между дорожками не будет возникать ёмкость. Или ещё что-то можно придумать?
Питание на плату приходит через стабилизатор КР142ЕН5, с конденсаторами, как опложено по его даташиту. Кварц тоже имеет кондеи по 22 пФ, как сказано в учебнике.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Все цифровые входы должны быть подтянуты к известному потенциалу если есть вероятность того, что они могут остаться висеть в воздухе (т.е., быть неподключенными никуда). Например, можно соединить их резисторами с шиной питания. Можно использовать встроенную подтяжку (см. даташит).
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Спасибо за совет! Про встроенную подтяжку я в курсе, но везде пишут, что она не айс, лучше я сделаю внешнюю через 10 кОм. Что-то я про неподключенные выводы не подумал. А вообще для начала буду проверять не весь порт, а два нужных пина. Это сразу даст понять, поможет ли здесь подтяжка...
Скажите ещё вот что. А можно ли осциллографом увидеть такие помехи? Я смотрел при дискретизации (надеюсь, не перепутал слово) 20 мс на клетку. Осциллограф.
Скажите ещё вот что. А можно ли осциллографом увидеть такие помехи? Я смотрел при дискретизации (надеюсь, не перепутал слово) 20 мс на клетку. Осциллограф.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Подтяжка категорически нужна. 10кОм нормально.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
А можно ли подтягивать все не используемые ноги через один резистор?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Что делать с НЕиспользуемыми ногами - это отдельный разговор. В общем, крайне не желательно соединять их вместе, также как и соединять с минусом или плюсом питания. Один из вариантов - все неиспользуемые выводы сделать выходами.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Кстати, экономичный вариант
А неиспользуемые ноги могут давать значительные помехи на используемые входы? Это я к тому, что в программе я накосячил. Полностью забыв по дребезг неподключенных ног я опрашивал весь порт и ждал, что изменение будет именно на первых двух, которые подключены. Что-то мне кажется, всё заработает сразу после того, как я почищу по маске биты неиспользуемых ног... 
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Замечание относительно "висящих в небытие" выводов действительно только для конструкций основанных на "рассыпухе".
При использовании МК данная методика неприемлема - для МК следует внимательно изучить исходный даташит на сам кристалл и на порождающее семейство.
Основные источники проблем - "кривые программы" и неверная топология монтажа.

При использовании МК данная методика неприемлема - для МК следует внимательно изучить исходный даташит на сам кристалл и на порождающее семейство.
Основные источники проблем - "кривые программы" и неверная топология монтажа.

- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Но я видел на серийных платах не подключенные выводы МК, всё-таки иногда на них забивают
У меня всё заработало. Как и подумал вчера - нужно было опрашивать не весь порт, а два нужных пина. Спасибо за советы 
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
Но я видел на серийных платах не подключенные выводы МК
Это нормально. При этом они настроены на выход, и всегда имеют устойчивое состояние. Или на вход с подтяжкой, что аналогично.
Re: Знакомства с помехами на AVR
Если на выход, то они ещё и ток не потребляют в отличии от подтяжки. Технология КМОП ведь 
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Знакомства с помехами на AVR
Да там ток-то... в большинстве случаев не критично. 
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
ну ток подтяжки при питании 5В (внутреннюю подтяжку возьмем 50кОм), будет 100мкА. Это если вывод один. А если несколько сразу... Лучше подтяжку отключить.
Ставим плюсы: )
Re: Знакомства с помехами на AVR
Почему через подтяжку будет ток? С учетом того, что вход КМОП имеет бесконечное входное сопротивление.
Другое дело, что внутренняя подтяжка может быть слишком высокоомна для четкой фиксации состояния входа, особенно, если к нему подключен какой-то провод.
Другое дело, что внутренняя подтяжка может быть слишком высокоомна для четкой фиксации состояния входа, особенно, если к нему подключен какой-то провод.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
ну так про это и говорю. подтягивать нужно зачем? чтобы наведенное напряжение не перетянуло вход из одного состояния в другое. следовательно через нее будет течь наведенный ток.
Добавлено: хм... а этот ток разве будет влиять на потребление? кто тут гуру наноамперов, поясните)))
Добавлено: хм... а этот ток разве будет влиять на потребление? кто тут гуру наноамперов, поясните)))
Ставим плюсы: )
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
А как вы избавляетесь от дребезга энкодера?
Я вот шутки ради вставлял задержки, но когда у тебя тут работает динамическая индикация, не трудно догадаться, что происходит. Да и на отклике энкодера это сказывается... Ставить крошечные кондеи? 
P.S. Это не жутко важный в данный момент вопрос, т.к. энкодер ко мне в руки попал случайно и программировал я под него исключительно для получения опыта в Си
Это я к тому, что гневно в поиск не посылайте, плз))
P.S. Это не жутко важный в данный момент вопрос, т.к. энкодер ко мне в руки попал случайно и программировал я под него исключительно для получения опыта в Си
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.
Re: Знакомства с помехами на AVR
хм... а этот ток разве будет влиять на потребление? кто тут гуру наноамперов, поясните)))
Стоп. Что внутренняя, что внешняя, грубо говоря, тупо подтягивает к шине затвор полевика. Никакого тока там не будет. Во всяком случае такого, что как-то может повлиять на характеристики изделия.
Через несмытый флюс на плате на порядки больше утечёт
Re: Знакомства с помехами на AVR
Это никогда не повредит, и даже очень полезно, вот по такой схеме, как в этом даташите, например:Мikа писал(а):Ставить крошечные кондеи?
http://www.fulcrum.ru/LineCard/Switches ... pe_E37.pdf
Но полностью это не решит проблему дребезга (хотя заметно уменьшит). Чтобы полностью, это надо программно, и не задержками, а последовательным анализом состояний. Были тут темы...
Re: Знакомства с помехами на AVR
И код был.
Кондёры плохо справляются даже с кнопками, лично убедился.
Кондёры плохо справляются даже с кнопками, лично убедился.
- Мikа
- Потрогал лапой паяльник
- Сообщения: 343
- Зарегистрирован: Пн апр 01, 2013 15:13:40
- Откуда: Москва
Re: Знакомства с помехами на AVR
Про последовательные проверки состояния - это я тоже видел, надо будет поковырять 
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Потому что хочу научиться.