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

У меня 5 пинов PB0, PB6, PB4, PB5 и PB7 предназначены для кнопок. Т.е. анализируется, нажата ли кнопка, один контакт которой подсоединен к соответствующему пину, второй к плюсу питания.



с PB0 и PB6 все нормально.

С остальными же проблемы - то они ловят единицу, то нет (у меня на других портах, настроеных на вывод светодиоды стоят). Ну в общем похоже на то, что ловят шумы. Может быть дело в разводке платы, не знаю, но повторюсь с первыми двумя пинами все ОК. При подключении к проблемным пинам резистора 10 кОм это явление исчезает. Пытаюсь использовать внутренние подтягивающие резисторы. Может быть неправильно делаю, подскажите.

Делаю так:

DDRB=0x00;
PORTB=0x00;

Это, получается pullup отключены. Результат - PB0 и PB6 работают нормально, PB4,PB5 и PB7 - глючат.

Подключаю pullup:

DDRB=0x00;
PORTB=0xFF;


ТОгда единицы ловятся на всех пинах. Напряжение при этом на входах - менее 0,2 вольт, что подтверждаает что это именно шумы.


Может быть я не правлиьно управляю портами?

Подскажите как найти проблему? СТавить внешние подтягивающие из принципа не хочу.

Спасибо.
prottoss
Цитата(Зверюга @ Dec 24 2006, 22:36) *
Здравствуйте!

У меня 5 пинов PB0, PB6, PB4, PB5 и PB7 предназначены для кнопок. Т.е. анализируется, нажата ли кнопка, один контакт которой подсоединен к соответствующему пину, второй к плюсу питания.
Если вы намерены использовать внутренние pullup резисторы, то кнопки нужно подключать между выводом МК и "землей". Когда кнопка будет разомкнута, на выводе будет лог. 1, когда замкнута - соответственно лог. 0. Последовательно с кнопкой желательно поставить резистор 330 ... 1 кОм, для ограничения тока через вывод МК при его ошибочной конфигурации и замыкании кнопки. Конфигурировать порт надо так: DDR = 0, PORT = 1, считывать значение нужно с порта PIN
aaarrr
Цитата(Зверюга @ Dec 24 2006, 18:36) *
У меня 5 пинов PB0, PB6, PB4, PB5 и PB7 предназначены для кнопок. Т.е. анализируется, нажата ли кнопка, один контакт которой подсоединен к соответствующему пину, второй к плюсу питания.

И чем могут помочь pull-up резисторы там, где нужен pull-down?

Цитата(Зверюга @ Dec 24 2006, 18:36) *
СТавить внешние подтягивающие из принципа не хочу.

По-моему, не самый лучший подход - значение внутреннего pull-up может меняться в пределах 20-100кОм, ловить помехи будет. Тем более, что в данной ситуации без внешних резисторов никак.
bodja74
Внешние резюки однозначно от 10кОм и ниже,сами кнопки частенько дают утечку.
Мне и 10Ом попадалось в разомкнутом состоянии.
Зверюга
Поставил внешние резюки. Все ОК. Спасибо!
defunct
Цитата(bodja74 @ Dec 24 2006, 19:27) *
Внешние резюки однозначно от 10кОм и ниже,сами кнопки частенько дают утечку.
Мне и 10Ом попадалось в разомкнутом состоянии.

"В корзину" такие кнопки.
Зверюга
Господа!
Внешние резисторы ведь в итоге соединятся вместе на минусе, и кнопки влияют друг на друга. Можно конечно сделать диодные развязки, но...

Я выкинул резисторы, влкючил pullup, кнопки посадил на минус - все заработало как часы! Даже исчезла проблема, которую я в соседней теме ошибочно расценил, как дребезг контактов.
aaarrr
Цитата(Зверюга @ Dec 26 2006, 21:29) *
Внешние резисторы ведь в итоге соединятся вместе на минусе, и кнопки влияют друг на друга. Можно конечно сделать диодные развязки, но...

Как влияют??? Земля поднимается???

Цитата(Зверюга @ Dec 26 2006, 21:29) *
Я выкинул резисторы, влкючил pullup, кнопки посадил на минус - все заработало как часы! Даже исчезла проблема, которую я в соседней теме ошибочно расценил, как дребезг контактов.

Дребезг обычно никуда не исчезает. Антидребезг нужно делать всегда.
Про внутренние pull-up уже все сказали - ставьте внешние.
Зверюга
Цитата
Как влияют??? Земля поднимается???



Ставил по 12 кОм. Нарисуйте мысленно схему - если от каждого пина по одному резистору на землю, то два отдельных пина будут соединены между собой через два резистора. В результате, почему - то через 24 кОм одна кнопка оказывает влияние на все входы, с частотой примерно один к трем.

Повторюсь, сделал через внутренние pullup - все ОК.

Цитата
Дребезг обычно никуда не исчезает. Антидребезг нужно делать всегда.


Так я и не говорю, что он исчез. Исчезда другая поблема, которую я принял за дребезг.
Что касается самого дребезга - сколько я не нажимал кнопки - ни разу такого эффекта не было. И вообще, делаю для дома, так что обойдусь пока без антидребезга. Ламер-любитель я )))
aaarrr
Цитата(Зверюга @ Dec 26 2006, 21:43) *
Ставил по 12 кОм. Нарисуйте мысленно схему - если от каждого пина по одному резистору на землю, то два отдельных пина будут соединены между собой через два резистора.

А на мысленной схеме земля обладает какими-то особыми свойствами? Каждый из пинов будет соединен с землей - как они могут влиять друг на друга?
bodja74
Цитата(defunct @ Dec 25 2006, 14:07) *
"В корзину" такие кнопки.


Вот и меняю пачкамиsmile.gif

Цитата
Ставил по 12 кОм. Нарисуйте мысленно схему - если от каждого пина по одному резистору на землю,

Не смешно .

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