Результат ADC в AVR зависит от выхода ни другом пине?! Нужен совет.

serj
Volante24:

После замены ATTINY26L в SOIC корпусе (rcopen.com/forum/f8/topic127972) появилась странная проблема: похоже, результат измерения ADC внешнего напряжения на пинах 18 и 19 [PortA Pins 1 и 2] (возможно, и на пине 20 – трудно проверить) зависит от состояния пина 11 [Port A Bit 7] (он работает на выход и управляет LED, ток не более 2.5ma).

В даташите указано черным по белому: во время измерения АЦП ноги порта АЦП не должны переключаться, от себя добавлю что и грузить этот порт нельзя. Связано со схемотехникой кристалла, как собраны входные цепи АЦП (УВХ и мультиплексор)

serg111

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

Chekhov

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

Volante24
Chekhov:

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

По-моему так. За каждые полсекунды горения или негорения LEDа происходит около 2.5 тысяч преобразований, каждый раз по другому каналу. Но если бы проблема происходила только в момент переключения LEDа, этого бы было 100% не заметить. На практике результат читается один раз в 2мс (АЦП значение по каждому каналу обновляется каждые 0.6мс).
Вероятность неправильного прочтения из-за переключения составляет 0.2мс/.5сек=1/250 (по каждому каналу). Единичное же неправильное входное значение приводит к импульсу на мотор сервы 2мс. Такой короткий пульс, если он единичный, был бы незаметен, а среднее значение 1/250 не может заставить мотор вращаться. Так что дело точно не в переключении, а в состоянии пина!

serg111:

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

Наверное, так. Но я, следуя Vad64, делаю “extended conversion”, которое занимает почти вдвое больше времени (25 циклов АЦП таймера). Наверное, оно для того и придумано, чтобы ждать нужное время? Эти 12 лишних циклов дают примерно 100мкс задержку…

serj:

В даташите указано черным по белому: во время измерения АЦП ноги порта АЦП не должны переключаться, от себя добавлю что и грузить этот порт нельзя. Связано со схемотехникой кристалла, как собраны входные цепи АЦП (УВХ и мультиплексор)

Так я это заметил, именно потому и спрашиваю людей с практическим опытом. Я не обращал на это внимания, поскольку в любом случае последняя пара битов меня здесь нисколько не волнует. Народ, вроде, это обычно игнорирует, и проблем не наблюдает… А главное, у меня собрана тестовая плата с панелькой для того же ATTINY26 в DIPе, и там все работает без фокусов. Да и у других вроде таких проблем не наблюдалось.

И вот еще: на этом же порте А еще два пина (PA5 и PA6) используются на выход, причем серьезно – переключаются (потенциально) два раза в 2 мс, если есть сигнал на серво мотор. Поскольку тут, таким образом, есть обратная связь (сигнал на этот мотор зависит от показаний АЦП), предсказать поведение затруднительно, но я думаю, был бы бардак и мотор вряд ли бы спокойно остановился, раз начав работать. А как раз с этим, похоже, в порядке…

serg111
Volante24:

А главное, у меня собрана тестовая плата с панелькой для того же ATTINY26 в DIPе, и там все работает без фокусов.

Меняй камень. Благо он 20 рупий стоит. Проверить фичу седня не получилось, завтра 100% проверю и отпишусь.

Volante24
serg111:

Меняй камень. Благо он 20 рупий стоит.

Где ж это так? Чтой-то я меньше, чем за 80, его не видел (за наличные, если меньше сотни штук!)

Да дело вообще не в сотне рублей (у меня теперь есть запасные – два мне просто подарили); проблема в их выпаивании и впаивании на плату! Это само по себе морока, плюс каждый раз при этом большой шанс повредить какую-нибудь дорожку, а вдобавок, каждый третий раз, когда эту плату берешь в руки, какой-нибудь из проводков (а их: шесть к серво потенциометрам, четыре – к серво моторам, шесть к ISP разъему, два питания, четыре на выход к двум бесколлекторным ESC, да еще антенна). Не говоря уже про вытаскивание из корпуса и втискивание обратно. С каждым обрывом при этом создается все более сильное впечатление, что процесс просто не сходится…

serg111

За нал хз по чем, по безналу брали и много. В ЭФО самые нормальные цены были.
Проверял седня ацп на порту А. Ниче криминального не заметил, ноги дергаеш ацп дрожит на 1-2 единицы счета, не дергаеш стоит мертво. камень …26-16SU + кварц на 5Мгц, на рефе тл431. Кстати, есть такой tiny261(пин в пин tiny26), у него есть аппаратное “мертвое время” и 3 канала шима, и компаратором можно рубить шим, делая тем самым защиту по току(поцикловку) с миркоскопическими задержками.

Volante24
serg111:

Проверял седня ацп на порту А. Ниче криминального не заметил, ноги дергаеш ацп дрожит на 1-2 единицы счета, не дергаеш стоит мертво.

Что ж, похоже, диагноз прорисовывается: каменная болезнь…

Так часто там по вашему опыту чипы с глюками попадаются?

Кстати, есть такой tiny261(пин в пин tiny26), у него есть аппаратное “мертвое время” и 3 канала шима, и компаратором можно рубить шим, делая тем самым защиту по току(поцикловку) с миркоскопическими задержками.

Интересные данные, буду иметь в виду… Но пока у меня лежит пара десятков ATTINY26L про запас, пока буду, в основном, на них ориентироваться.

P.S. Всех с наступившим Пятницей 13-го!😈

Volante24
serg111:

Меняй камень.

Нашел еще одну “фичу” (говоря политически корректно). Прочел все калибровочные байты, вписал нужный, на 8МГц (он на 0А меньше, чем на 1МГц) – и нифига! Сигнала как будто и в помине нет. А поставил, как сам подобрал, наоборот, на 0А больше, чем на 1МГц – и все прекрасно работает. Ну и камешек за пазуху попался!

Ну ничего, я таки его добил – со всеми перепиновками и перекалибровками верт теперь порхает (ну, так, условно говоря – пока как бы хоппит саранчей). И без выпаивания, так его разэтак! Вот только не знаю, что в следующий раз делать – полностью проверять функционирование всех AVRов перед впаиванием в схему?