Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: непонятные наводки
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
JimBaton
Столкнулся с какими-то странностями.Питаю контроллер от УСБ.Контроллер выдаёт на PB0 логическую 1.При нажатии кнопки 1, порт C должен светить всеми 8 светодиодами, при нажатии второи кнопки соответственно не светить.Так вот когда подносишь палец к кнопке появляются левые наводки и загораются в хаотичном порядке диоды а не то что должно.Кнопки шунтированы через 470 Ом а диоды через 330 Ом.В чем причина?
VDG
чушь какая-то... зачем такой изврат с кнопками? нормально сделать религия не позволяет?
шунтировали кнопки зачем?? и надеюсь светодиоды не шунтировали-то(?)

а походу программа не выполняется, идет постоянный сброс с непредсказуемым поведением. запитайте от нормального блока питания, а не от USB (произносится Ю-ЭС-БИ, а не УСБ), тогда будет понятно виновато ли USB.
МП41
От USB много раз приходилось питать микроконтроллеры, никогда не было ничего подобного. USB=УПШ smile.gif. А зачем шунтировали диоды?
TechMike
Цитата(JimBaton @ Nov 25 2008, 00:00) *
Столкнулся с какими-то странностями.Питаю контроллер от УСБ.Контроллер выдаёт на PB0 логическую 1.При нажатии кнопки 1, порт C должен светить всеми 8 светодиодами, при нажатии второи кнопки соответственно не светить.Так вот когда подносишь палец к кнопке появляются левые наводки и загораются в хаотичном порядке диоды а не то что должно.Кнопки шунтированы через 470 Ом а диоды через 330 Ом.В чем причина?


От USB не питал пока, но когда делал схему на монтажке и силовая часть была на этой же плате, то обязательно подпирал на +питания каждый вход с датчиками или кнопками. Иначе контроллер сбрасывался периодически, при включении нагрузки.
sysel
Может быть JTAG не отключен ?
Чем тактируется микроконтроллер ?
nick-l
Резисторы необходимо ставить не шунтирующие а токоограничивающие (то есть последовательные) и не забыли ли подключть VCC (10 pin) к +5, CND (11 pin, 31pin). От USB макетки питал, все работало нормально. На схеме то основного, питания и включения резисторов нет, а согласно словесного описания они включены неверно.
JimBaton
Да какая разница как УСБ произносится.Всем же понятно что это такое.У нас тут не американцы, а русские люди.Шунтировал диод и кнопки потому что так говорится во многих источниках что надо шунтировать чтобы не шел слишком большой ток.JTAG отключен.Контроллер тактируется от внцтреннего источника 8 Мгц.Я уже пробовал и напрямую без шунтирования.Вот только пока что нет возможности использовать обычный 5 вольтовый источник питания, нет под рукои.Когда заливаешь програмку типа бегущих огнеи то все нормально работает, а когда подключаю кнопки и делаю простеишую программу чтобы по нажатии кнопки загорался диод то ничего не работает.Работает но криво.Тоесть логическии ноль становится нифига не ноль а что-то среднее между нулём и единицей, тоесть диод еле светится а не должен так.

TechMike
подьясните что вы имеете ввиду под словом подпирал?

Agnd и Gnd к минусовои клемме, Avcc и Vcc к плюсовои.На схеме просто не нарисовал резисторы.Резисторы идут от каждой ножки контроллера последовательно с диодом или кнопкои.Похоже я не правильно выразился словом шунтирующие, подтягивающие вроде будет правильно.
МП41
Шутнтирование - это соединение в параллель, для ограничения тока обычно последовательно соединяют. Лучше покажите полную схему со всеми деталями. Вы её много раз видели и хорошо помните, людям же надо посмотреть и как можно быстро понять, что и как на ней.
JimBaton
Схема


На схеме еще должен быть резистор на 10КОм на ресете.Забыл нарисовать.
МП41
На PB0 надо лог. 0 подать, а на PA0, PA1 включить внутренние подтягивающие резисторы.
bbill
Фактически входы А0,А1 у Вас висят в воздухе. Если они подтянуты внутренними резисторами к питанию, то, что нажата кнопка, что нет-все едино. Вам нужно входы А0,А1 притянуть через резисторы к общему проводу и контролировать появление "1" на входах.
Stanislav_S
Цитата(JimBaton @ Nov 25 2008, 15:43) *
Схема
На схеме еще должен быть резистор на 10КОм на ресете.Забыл нарисовать.

Странная схема, а как по вашему она дожна работать? Не майтесь ерундой, посадите кнопки одной ногой на землю, а вторую ногу на порт. Порт сконфигурируйте на вход и включите подтягивающие резисторы и будет вам счастье.
МП41
Цитата(bbill @ Nov 25 2008, 12:53) *
Фактически входы А0,А1 у Вас висят в воздухе. Если они подтянуты внутренними резисторами к питанию, то, что нажата кнопка, что нет-все едино. Вам нужно входы А0,А1 притянуть через резисторы к общему проводу и контролировать появление "1" на входах.

Но так как внутренних поддягивающих к земле резисторов нету, то это нехороший вариант. А PB0 имеет смысл использовать, если на кнопки ещё что-то нужно повесить и обрабатывать по очереди.
JimBaton
PB0 служит для генерации логической 1 которая подается через кнопки на А0,А1.Тоесть если я нажму одну из кнопок то на соответствующей ножке порта должна появиться логическая 1 и должно произоити определенное действие заложеное внутреннеи программои контроллера.На Протеусе все без проблем работает.
МП41
Цитата(JimBaton @ Nov 25 2008, 13:28) *
PB0 служит для генерации логической 1 которая подается через кнопки на А0,А1.Тоесть если я нажму одну из кнопок то на соответствующей ножке порта должна появиться логическая 1 и должно произоити определенное действие заложеное внутреннеи программои контроллера.На Протеусе все без проблем работает.

А питанием сгенерировать лог. 1 нельзя никак?
В протеусе нет помех и наводок. Вобщем, кнопки так обычно не делают. Обычно кнопка коротит на землю подтягивающий к питанию резистор, а факт "приземления" регистрируется портом.
nick-l
Эта схема должна работать если на PB0 выставлять НОЛЬ о на входах проверять ноль при включенных подтягивающих резисторах, без резисторов когда поднести палец к кнопке на входе может быть все что угодно (за счет наводки)
МП41
Теоретически на PB0 можно генерировать меандр, а на PA0 или PA1 измерять частоту и тем самым определять нажатие, но согласитесь, это не самый оптимальный и надёжный путь. Есть проверенное и логичное решение, просто воспользуйтесь им.
JimBaton
Значит схема будет такой?PortA=&b11111111, с включеными подтягивающими резисторами.При нажатии кнопки я должен регистрировать на PA0 или PA1 логическии 0?Тоесть если включены подтягивающие резисторы то на всем порте соответственно держится логическая 1.Кнопки заземлены.Как только нажимаю кнопку логическая 1 идущая с порта А встречается с землёй и получается коротыш?.Или подтягивающие резисторы и включаются для того чтобы не было коротышей?
nick-l
Так как выводы PA0 и PA1 еще при инициализзации должны быть сконфигурированы на вход, то никакого коротыша не получается, а подтягивающий резистор то и нужен, для того чтобы на входе небыло непонятного состояния (или 1 кнопка отпущена или 0 кнопка нажата), это и есть "классика" для подключения малого колличества кнопок (которая во всех учебниках описана)
TechMike
Цитата(JimBaton @ Nov 25 2008, 13:09) *
TechMike
подьясните что вы имеете ввиду под словом подпирал?


В моем случае была кнопка на один из портов tiny2313. Кнопка замыкала вход на землю, от +питания стоят резистор 1.5к на вход МК. Таким образом я в программе ловлю лог.0 на входе МК, что означает нажатие кнопки. И как показала практика, это хорошо защищило от помех по силовой части.
JimBaton
кароче все получилось

пока пробую писать на Бэйсике.Вот код.Как для начинающего это кажется немного странным.

$regfile = "m16def.dat"
Config Portc = Output
Config Porta = Input
Config Portb = Output
Porta = &B11111111 включаем подтягивающие резисторы и соответственно порт выдает логическии 1


Do
If Pina.0 = 0 Then Portc = &B11110000 при появлении на ноге А0 лог 0, записываем в PortC 11110000

If Pina.1 = 0 Then Portc = &B00001111
If Pina.2 = 0 Then Portc = &B00111100
If Pina.3 = 0 Then Portc = &B11111111
Loop
МП41
Ничего, привыкните, потом смешно будет smile.gif. Кстати и светодиоды обычно включают анодом к питанию, а катодом через резистор к МК. Считается, что в этом направлении МК бОльший ток держит.
VDG
Цитата(МП41 @ Nov 25 2008, 17:11) *
Считается, что в этом направлении МК бОльший ток держит.

Считалось. Сейчас у большинства контроллеров нагрузочная способность выводов сбалансирована для втекающих и вытекающих токов.
nick-l
в микросхемах на КМОП элементах верхний выходной ключ на p-канальном транзисторе, а нижний на n-канальном транзисторе, у p-канального сопротивление открытого канала немного выше чем у n-канального, поэтому при том же самом токе нагрузке падение на выходных ключах элемента вслучае подключения нагрузки к плюсу будет немного менше и соответственно немного меньше и рассеиваемая мощность (гдето на 0,1 вольна меньше, и в даташите это в электрических характеристиках тоже написано), это хоть и 2 мВт на элемент но всеже...
JimBaton
Цитата(МП41 @ Nov 25 2008, 16:11) *
Ничего, привыкните, потом смешно будет smile.gif. Кстати и светодиоды обычно включают анодом к питанию, а катодом через резистор к МК. Считается, что в этом направлении МК бОльший ток держит.


Неудобно подключать таким образом диод так как возникает путаница.Если нужно зажечь диод, то на порт нужно подать не лог 1 а лог 0
bloodden
Цитата(JimBaton @ Nov 25 2008, 17:51) *
Неудобно подключать таким образом диод так как возникает путаница.Если нужно зажечь диод, то на порт нужно подать не лог 1 а лог 0

А что Вам мешает перед записью в порт инвертировать?
JimBaton
ну все равно как-то не так.Не привычно.Ну со временем-то конечно ко всему привыкаешь.
demiurg_spb
Цитата(JimBaton @ Nov 25 2008, 21:43) *
ну все равно как-то не так.Не привычно.Ну со временем-то конечно ко всему привыкаешь.

Не надо привыкать к плохому.
1. Будь мэномwink.gif используй С, а не Basic (это намного полезней и продуктивней).
2. Привыкай задавать числовым константам имена - тогда будет совершенно неважно что есть 0, а что 1.
JimBaton
Ну у меня есть свои соображения насчет бэйсика.Хочу хоть чутка разобраться что такое контроллер.На бэйсике же всяко полегче для начинающего.А потом и на СИ переберусь.
demiurg_spb
Цитата(JimBaton @ Nov 25 2008, 23:45) *
Ну у меня есть свои соображения насчет бэйсика.Хочу хоть чутка разобраться что такое контроллер.На бэйсике же всяко полегче для начинающего.А потом и на СИ переберусь.
Неверный ответ.
Настоятельно рекомендую ASM, а никак уж не basic - он никаким боком не будет полезен, коме Экселя и Аксеса. Поймёшь ASM никаких трудностей с С вообще не будет. Это я как бывший препод со стажем говорюwink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.