Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega16A не работат кнопка на PA2
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
i.cf
Здравствуйте!

Контроллер - ATmega16A в корпусе TQFP.
К ногам PA0 - PA3 подключены кнопки, выводы подтянуты к +5В через внешние 330 Ом.
При работе кнопок на PA0, PA1 и PA3 проблем нет, а вот при замыкании кнопки на PA2 резко повышается потребление схемы с 50мА до 140мА и после размыкания снижается незначительно. Иногда при повторном замыкании потребление может подняться до 170мА. Начинает греться контроллер.

Если подать питание при замкнутой кнопке на PA2 увеличения потребления не происходит - только после размыкания и повторного замыкания.

Протестировано три платы - везде одно и тоже.

Явное отключение внутренних подтягивающих резисторов ничего не дало
Код
SFIOR = SFIOR|(0x01<<2);

Глюки прошивки исключаются - при очищенном камне то же самое.

Какие есть мысли, в чем может быть проблема?
IGK
Цитата(i.cf @ Nov 4 2010, 09:53) *
Контроллер - ATmega16A в корпусе TQFP.
К ногам PA0 - PA3 подключены кнопки, выводы подтянуты к +5В через внешние 330 Ом.

Пока мыслей нет, но попробуйте включить на РА2 последовательный резистор 10..100K и проверьте, что будет. И проверьте подсоединение AVCC. Может, развести забыли.

Я уже где-то писал, но повторюсь. Как только начались перебои с поставками Атмелей, у меня иногда стали беспричнно вылетать порты, с возрастанием тока на 10..15 ма. И это на серийных устройствах, где ничего не менялось. Скорее всего, в связи с увеличеним спроса раскопали свалки, отмыли плесень с выкинутых ранее камешков и поплыли они к нам...
sensor_ua
Похоже, что либо порт на выход включен, либо подтяжка отключена (скорее по другим кнопам).
forever_student
Цитата(i.cf @ Nov 4 2010, 10:53) *
Протестировано три платы - везде одно и тоже.

На контроллерах из других партий работает? Или это первые платы? Если это первые платы - возможен глюк программы.
Если платы серийные, и на ранних партиях все работает, и программа не менялась - скорее всего битые контроллеры.
i.cf
Цитата(sensor_ua @ Nov 4 2010, 10:48) *
Похоже, что либо порт на выход включен, либо подтяжка отключена (скорее по другим кнопам).
Порт настраивается в проекте всего в 2х местах:
Код
...
DDRA = (DDRA&0xF0);
...
DDRA = (DDRA|((1<<4)|(1<<5)));
...
младшие 4 линии - входы. Внутренняя подтяжка отключена - есть внешняя.

Цитата(forever_student @ Nov 4 2010, 11:16) *
На контроллерах из других партий работает? Или это первые платы? Если это первые платы - возможен глюк программы.
Партия - всего три платы. До этого отлаживалось на макете - там другие ноги были задействованы и стояла ATmega16 (без А) в DIPе. Там все работало, правда программа была переделана с тех пор.

Цитата(IGK @ Nov 4 2010, 10:20) *
попробуйте включить на РА2 последовательный резистор 10..100K и проверьте, что будет.
Перед контроллером по всем четырем линиям кнопок поставил резисторы по 10К - проблема исчезла!
Спасибо за совет!!! a14.gif Надо было мне сразу так разводить - тем более что так правильнее.
Жаль что платы уже разведены и собраны - придется резать дорожки и заливать чем-нибудь.
Сергей Борщ
Цитата(i.cf @ Nov 4 2010, 12:19) *
Надо было мне сразу так разводить - тем более что так правильнее.
Почему правильнее?
stells
Цитата(IGK @ Nov 4 2010, 11:20) *
проверьте подсоединение AVCC. Может, развести забыли.

а Вы на это обратили внимание? может в этом причина? порт А запитывается от AVCC
i.cf
Цитата(Сергей Борщ @ Nov 4 2010, 12:18) *
Почему правильнее?
http://electronix.ru/forum/index.php?showt...mp;#entry800684

Цитата(stells @ Nov 4 2010, 12:24) *
а Вы на это обратили внимание? может в этом причина? порт А запитывается от AVCC
По схеме и печатке сверял - должно быть. Около каждой ноги питания МК стоит керамика 0.1мкФ. Промерял - есть везде.
stells
Цитата(i.cf @ Nov 4 2010, 14:48) *
По схеме и печатке сверял - должно быть. Около каждой ноги питания МК стоит керамика 0.1мкФ. Промерял - есть везде.

что значит "должно быть"? Вы подаете питание на AVCC?
i.cf
Цитата(stells @ Nov 4 2010, 14:06) *
что значит "должно быть"? Вы подаете питание на AVCC?

Вроде написал:
Цитата(i.cf @ Nov 4 2010, 13:48) *
Промерял - есть везде.

Есть на трех VCC, на AVCC и на AREF.
Сергей Борщ
Цитата(i.cf @ Nov 4 2010, 14:48) *
Там речь идет о борьбе с наводками. У вас же происходит, судя по симптомам, тиристорное защелкивание при замыкании кнопки. Природа его непонятна, ведь кнопка, если я правильно понял, находится на той же плате? Покажите разводку, если она не секретна.
P.S. Я даже стесняюсь спросить, а выводы земли все подключены?
domowoj
Цитата(i.cf @ Nov 4 2010, 14:53) *
К ногам PA0 - PA3 подключены кнопки, выводы подтянуты к +5В через внешние 330 Ом.

330 Ом не маловато ли?
А может это вообще 33 Ома. (5В/33 Ом= 150мА)

Или порты на выход настроены.
i.cf
Цитата(Сергей Борщ @ Nov 4 2010, 14:27) *
Там речь идет о борьбе с наводками. У вас же происходит, судя по симптомам, тиристорное защелкивание при замыкании кнопки. Природа его непонятна, ведь кнопка, если я правильно понял, находится на той же плате?
Кнопки болтаются на проводах длинной 20см, которые будут крепиться на лицевой панели. Плата будет эксплуатироваться рядом с источником помех (могут быть "иголки" до 1кВ) - поэтому и использованы внешние подтяжки. От кнопок на землю стоит керамика 0.1мкФ.
Сейчас, конечно, испытывается без источника наводок, на столе.

Цитата(Сергей Борщ @ Nov 4 2010, 14:27) *
Покажите разводку, если она не секретна.
Часть платы с кнопками и контроллером:
Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла
Кнопки подключаются к разъемам XR5-XR8.
Индуктивности по питанию - ферритовые бусины (на случай сбоев от помех).
Слой top залит землей, слой bottom +5В.

Цитата(Сергей Борщ @ Nov 4 2010, 14:27) *
P.S. Я даже стесняюсь спросить, а выводы земли все подключены?
Прозвонил тестером - "звенят" все четыре.

Цитата(domowoj @ Nov 4 2010, 14:55) *
330 Ом не маловато ли?
А может это вообще 33 Ома. (5В/33 Ом= 150мА)
Нет, 330 Ом. 5В/330 Ом = 15мА - сходится с показаниями амперметра при нажатии.

Цитата(domowoj @ Nov 4 2010, 14:55) *
Или порты на выход настроены.
Уже писал: порт настраивается тольк в двух местах.
Vasily_
Aref зачем запитан? у вас ацп используется? если нет тогда и будут чудеса, его надо настроить на внешнюю опору.
zhevak
По резисторам: у Вас на используются SMD резисторы. Обращаю внимание, что если на smd-резисторе написано "330" -- это 330 Ом, а 33 Ома. (300 --это 33 умноженное на 10 в степени 0 Ом.) Извините, что напомнил элементарные вещи.

Цитата(Vasily_ @ Nov 5 2010, 00:25) *
Aref зачем запитан? у вас ацп используется? если нет тогда и будут чудеса, его надо настроить на внешнюю опору.


Опора AREF как сконфигурирована? Если на внутренний источник, то подводить питание нельзя. Нужно установить только конденсатор.
Еще раз извиняюсь за элементарщину.

Тиристорное защелкивание может произойти только тогда, когда на входе присутствует напряжение превышающее напряжения питания. Говорят, такое может произойти когда выключается питание и тут же включается опять. Если на входах висят большие конденсаторы и они не успевают разрядиться за время выключения питания, то в момент нарастания Vcc вполне может окажется, что напряжение на конденсаторе больше, напряжения питания. Капкан будет обеспечен. Но практически, сколько я ни работаю с AVR-ками, я как-то ни разу не сталкивался с этим тиристорным эффектом. И, надо заметить, что это никак не объясняет отличие этой злой ноги от других точно таки же.

Найдете -- отпишитесь, пожалуйста. Становится любопытно.
i.cf
Цитата(zhevak @ Nov 4 2010, 21:45) *
По резисторам: у Вас на используются SMD резисторы. Обращаю внимание, что если на smd-резисторе написано "330" -- это 330 Ом, а 33 Ома. (300 --это 33 умноженное на 10 в степени 0 Ом.)
С резисторами все в порядке - написано "331".

Цитата(Vasily_ @ Nov 4 2010, 20:25) *
Aref зачем запитан? у вас ацп используется? если нет тогда и будут чудеса, его надо настроить на внешнюю опору.
Цитата(zhevak @ Nov 4 2010, 21:45) *
Опора AREF как сконфигурирована? Если на внутренний источник, то подводить питание нельзя. Нужно установить только конденсатор.
АЦП не используется. Повесил к питанию по привычке, на всякий случай, инициализацию периферии касающейся АЦП не проводил - это мой промах.
Завтра попробую настроить в программе AREF.

Цитата(zhevak @ Nov 4 2010, 21:45) *
Тиристорное защелкивание может произойти только тогда, когда на входе присутствует напряжение превышающее напряжения питания. Говорят, такое может произойти когда выключается питание и тут же включается опять. Если на входах висят большие конденсаторы и они не успевают разрядиться за время выключения питания, то в момент нарастания Vcc вполне может окажется, что напряжение на конденсаторе больше, напряжения питания. Капкан будет обеспечен. Но практически, сколько я ни работаю с AVR-ками, я как-то ни разу не сталкивался с этим тиристорным эффектом. И, надо заметить, что это никак не объясняет отличие этой злой ноги от других точно таки же.
На RESETе стоит супервизор MAX811 на напряжение отключения 4.63В, поэтому, думаю, если бы питание пропадало, контроллер был бы сброшен и остался в этом состоянии. По питанию на плате стоит кажется 470мкФ (платы на работе - сейчас не вспомню точно), плюс около десятка керамических 0.1мкФ.
Повышение потребления происходит именно при замыкании кнопки. После размыкания снижается незначительно (на величину тока через резистор кнопки).

Цитата(zhevak @ Nov 4 2010, 21:45) *
Найдете -- отпишитесь, пожалуйста. Становится любопытно.
Собственно после прорезки дорожек и добавления перед входами МК резисторов 10К проблема перестала возникать, вот только бросать на полпути не докопавшись до сути не хочется.
Vasily_
А не проще с aref питание откусить.
muravei
Цитата(i.cf @ Nov 4 2010, 23:25) *
На RESETе стоит супервизор MAX811 на напряжение отключения 4.63В, поэтому, думаю, если бы питание пропадало, контроллер был бы сброшен и остался в этом состоянии.

Не, супервизор никак "не повредит" smile.gif защелкиванию. Но думаю , конденсаторы на входах разрядятся раньше
(через 330), кондера по питанию. Хотя , проверьте , что у вас с питанием в момент нажатия кнопки?
i.cf
Добавил в начало программы отключение внутреннего источника опорного напряжения:
Код
ADMUX = ADMUX&(~((0x01<<6)|(0x01<<7)));
Ничего не изменилось.

Цитата(Vasily_ @ Nov 4 2010, 22:51) *
А не проще с aref питание откусить.
Поднял ногу 29 AREF, добавил керамику 0.1мкФ.
Включил внутренний опорный источник.
Код
ADMUX = ADMUX&(~(0x01<<7));
ADMUX = ADMUX|(0x01<<6);
Изменений нет.
Включал внутренний источник с внешним конденсатором
Код
ADMUX = ADMUX|(0x01<<7);
ADMUX = ADMUX|(0x01<<6);
Изменений нет.
Marian
Программно подаем на ногу единицу и тестером измеряем состояние выхода, далее подав ноль проделайте тоже самое, если уровни подозрительные, проверяйте схему.

Вы не описали за что отвечает кнопка на PA2
(например после нажатия кнопки проц дает команду подать на другой порт единицу, простое отпускание кнопки состояние порта обратно не меняет)
i.cf
Цитата(Marian @ Nov 5 2010, 21:03) *
Программно подаем на ногу единицу и тестером измеряем состояние выхода, далее подав ноль проделайте тоже самое, если уровни подозрительные, проверяйте схему.
Не совсем понял. PA2 на вход назначена и подтягивающие резисторы отключены - по идее ничего происходить не должно.

Цитата(Marian @ Nov 5 2010, 21:03) *
Вы не описали за что отвечает кнопка на PA2
(например после нажатия кнопки проц дает команду подать на другой порт единицу, простое отпускание кнопки состояние порта обратно не меняет)
К плате подключен светодиод, и на данном этапе тестирования я переделал программу, чтоб в зависимости от нажатия кнопок изменялось количество вспышек светодиода. Так что вариант, что эта кнопка включает какую-то бяку исключен.
Marian
Цитата(i.cf @ Nov 5 2010, 22:52) *
Не совсем понял. PA2 на вход назначена и подтягивающие резисторы отключены - по идее ничего происходить не должно.


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

Проще выложить схему для протеуса, исходник переделанной программки.
Если там бяк нет, смогу проверить в железе.
i.cf
Цитата(Marian @ Nov 5 2010, 22:36) *
Не должно да не обязано, включив на выход проверите не коротит куда дорожка.
Звонил тестером - ничего не коротит.

Цитата(Marian @ Nov 5 2010, 22:36) *
Проще выложить схему для протеуса, исходник переделанной программки.
На счет протеуса я и так могу сказать что там все нормально будет работать - у меня на макете с другой мегой работало.

Цитата(Marian @ Nov 5 2010, 22:36) *
Если там бяк нет, смогу проверить в железе.
Про какое железо идет речь?
Marian
Цитата(i.cf @ Nov 6 2010, 16:05) *
Про какое железо идет речь?

Имею тестовую плату атмега16
i.cf
В общем ничего нового обнаружено не было. После добавления резисторов все платы были протестированы - все ведут себя нормально.

Впереди 3 года гарантии - будем ждать новостей rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.