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


