Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: подтягивающие резисторы у AT90S1200  (Прочитано 43164 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 17-11-2003 12:41 » 

всем привет

не знаю куда писать, пишу сюда.

подскажите, как у мк AT90S1200 включить внутренние подтягивающие резисторы порта?

в инструкции сказано,

Цитата
Все 8 бит порта B при использовании для ввода/вывода одинаковы.
     Бит DDBn регистра DDRB выбирает направление передачи данных. Если
бит установлен (1), вывод сконфигурирован как выход. Если бит  сброшен
(0) - вывод сконфигурирован как  вход. Если PORTBn установлен и  вывод
сконфигурирован как вход, включается КМОП подтягивающий резистор.  Для
отключения резистора, PORTBn должен быть сброшен (0) или вывод  должен
быть сконфигурирован как выход.



я пробовал - не получается, входа в воздухе болтаются...

если кто сталкивался, помогите!
Записан

Lex
Специалист

ru
Offline Offline

WWW
« Ответ #1 : 17-11-2003 13:18 » 

Перенес в Embedded. тут она логичнее смотрится.

Чем смотрел, что вывод болтается в воздухе?

У меня все работает. ставишь в регистр направления 0, в PORTx пишешь единицу. Ты еще учти, что CMOS притяжка в Atmel'ах слаботочная.
Записан

Megabyte be with you!
little
Помогающий

de
Offline Offline
Пол: Мужской

« Ответ #2 : 17-11-2003 13:40 » 

Правда, что значит болтаются в воздухе?
Подтягивающие резисторы просто создают 3-е состояние на входе, чтобы вход не мог влиять на сигнал.
Записан
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #3 : 17-11-2003 13:46 » 

little, это ты гонишь. Подтягивающие резисторы как раз и нужны для того, чтобы уйти от третьего состояния. Чтобы при неподключенной ножке на входе присудствовал строго определенный логический уровень "1" для pull-up и "0" для pull-down. Выбор номиналов для подтягивающих резисторов это отдельная песня. В общих чертах с одной стороны он должен надежно притягивать сигнал к заданному уровню, с другой стороны он не должен мешать сигналу, если он появится . Да и про потребление забывать не стоит.
Записан

Megabyte be with you!
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 17-11-2003 17:21 » 

поподробнее: в ненажатом состоянии на вход подаётся 0, в нажатом - 1, притянуто к 0.

сначала у меня там бы резюк на 51к , когда ещё не подключал программно.

Цитата

Чем смотрел, что вывод болтается в воздухе?


когда пробовал подключать из программы , отцепил внешний (кстати, номинал внутреннего - по документам - от 35к до 100к) и стал получаться фокус Эмиля Кио - водишь рукой над платой, а там мигают  Улыбаюсь .

а как точно померять, что они не подключились?

Цитата

Да и про потребление забывать не стоит

это у меня матрица кнопок - порт посылает сигнал сам себе, - как там с токами обстоит?

Цитата

Подтягивающие резисторы просто создают 3-е состояние на входе, чтобы вход не мог влиять на сигнал

интересная теория  Ага
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 17-11-2003 22:45 » 

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

Где-то читал что нагрузочная способность для однородной системы (один выход одного типа -> много входов того же типа) КМОП в несколько раз выше чем для ТТЛ - хотя выходные токи меньше, за то входные еще меньше.

Это и плюс, и минус КМОП. Из-за слабых токов, если вынести клавиатуру на значительное расстояние, возможны наводки и влияние взаимной емкости проводов в жгуте. Если клавиатура смонтированна тут же, на плате, то таких проблем точно не будет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 18-11-2003 02:47 » 

Цитата

то на входах включай подтяжку


хорошо, пока так оставлю...

Цитата

Если клавиатура смонтированна тут же, на плате, то таких проблем точно не будет.


а кнопки и так на плате  :?  но не рядом, в виде прямоугольника, а разбросаны по краям платы размером 184х83 мм
Записан

Кот
Гость
« Ответ #7 : 18-11-2003 03:31 » 

Алексей1153,

Сталкивался с такой проблемой в бытность работы с контроллерами. Эфект проявлялся на 51х от Atmel так и на Intel. Избавлялись внешними подтягивающими сопротивлениями. При анализе оказалось что этот эфект проявлялся только на одном порту по этому перенесли систему ввода на другой порт и избавились от этого эффекта. По поводу 90s1200 такого эффекта не припомню.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 18-11-2003 04:37 » 

хорошо, пересмотрю прогу, может где-то обнуляю...

Цитата

перенесли систему ввода на другой порт


у меня это уже исключено  :?
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 18-11-2003 09:40 » 

На 8051 один из портов отличался по конструкции драйвера. Это в datasheet-е можно посмотреть. Возможно и на AVR-е такая же штука - стоит проверить.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #10 : 18-11-2003 11:09 » 

Цитата

поподробнее: в ненажатом состоянии на вход подаётся 0, в нажатом - 1, притянуто к 0.

сначала у меня там бы резюк на 51к , когда ещё не подключал программно.


А AVR pull-up т.е. подтяжка к "1".

А по наводкам RXL дело говорит.  Может кстати внутренней подтяжки не хватить, придется все равно ставить внешнюю.
Записан

Megabyte be with you!
Anonymous
Гость
« Ответ #11 : 18-11-2003 14:23 » 

Цитата

А AVR pull-up т.е. подтяжка к "1".


так мне в любом случае надо внешние тогда ставить?  Жаль

либо размыкеры - но это невозможно...
Записан
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #12 : 18-11-2003 14:39 » 

Как у тебя все сделано? Если половина порта(или другой порт) это выходы, на которых у тебя сейчас бегущая единица для сканирования, а вторая половина это входы, то тебе просто надо заменить бегущую единицу, на бегущий ноль и все. Тогда ц тебя и подтяжка может работать и кнопки будут нажиматься. Улыбаюсь

Или я чего-то не так понял?

З.Ы. ток по выходу у AVR до 25 мА.
Записан

Megabyte be with you!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 18-11-2003 14:45 » 

Цитата: Lex
З.Ы. ток по выходу у AVR до 25 мА.

Это максимальный ток, а реальный зависит и от нагрузки...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #14 : 18-11-2003 14:49 » 

RXL, ну я же написал до 25 мА. Улыбаюсь Тем более эта цифирь есть в даташите, с объяснением, как она получилась.

Кстати я писал это к тому, что при желании можно сделать мощную подтяжку к "1" порядка 1к и все равно работать будет.
Записан

Megabyte be with you!
little
Помогающий

de
Offline Offline
Пол: Мужской

« Ответ #15 : 18-11-2003 15:01 » 

Цитата: Lex
little, это ты гонишь.

Ну, набросились. Звиняйте, не так сказал. Имел ввиду слабую единицу.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #16 : 18-11-2003 15:45 » 

Цитата

надо заменить бегущую единицу, на бегущий ноль и все.


а это мысль!  Отлично

и как я сам не догадался? :oops:

попробую дома - напишу результаты вскрытия
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #17 : 18-11-2003 21:08 » 

сделал так: перед выводом в порт выходные биты инвертировал by искл.или, а при считывании - входные биты. В результате прогу менять практически не пришлось, но...


ВСЁ РАБОТАЕТ!!!  Отлично

спасибо всем!!!

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
« Последнее редактирование: 22-12-2007 22:37 от Алексей1153++ » Записан

Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #18 : 18-11-2003 22:02 » 

Алексей1153, а теперь статья:)
Записан

А птичку нашу прошу не обижать!!!
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #19 : 19-11-2003 02:50 » 

уголовная?  Отлично
Записан

Кот
Гость
« Ответ #20 : 19-11-2003 09:17 » 

Алексей1153, А Гром прав статейка с куском кода и со схемой Отлично
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #21 : 19-11-2003 09:32 » 

На какую тему ?

ну так могу... токо щас времени нет - вечером загляну.

а где тут статьи пишутся ? ткните меня мордой  Отлично , лучше ещё ссылку
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #22 : 20-11-2003 09:08 » 

ГРОМ, я уже прислал статью, затем прислал ещё с дополнением - они не долетели, что-ли?  :?
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #23 : 20-11-2003 17:58 » 

Ну, не хотите - не надо  Жаль
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #24 : 20-11-2003 19:37 » 

ГРОМ, спасибо ещё раз.

Что-то я там намудрил с форматированием текста (болд не остался) и размерами рисунка 2. Он не масштабируется сам, да?  :?  :?

А как надо было сделать?
Записан

Кот
Гость
« Ответ #25 : 21-11-2003 03:29 » 

Алексей1153,  Очень хорошая статейка просто бальзам на душу.

Уже года 3 как отошел от разработки устройств на микроконтроллерах, но было очень интересно почитать.

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

Кстати может кто поделится кто как делает работу с клавой, например алгоритм который выдает нажата кнопка сейчас или ее удерживают или отпущена ну и плюс борьба с дребезгом. Может у когонибудь есть какие нибудь интересные решения.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #26 : 21-11-2003 05:47 » 

Цитата

например алгоритм который выдает нажата кнопка сейчас или ее удерживают или отпущена


кстати, я забыл написать в статье- в проге сделано так, что кнопки разбиты на 3 независимые группы - частота, форма, режим.

если одновременно удерживать две или более кнопок частоты, то частота не переключается, независимо от этого так же работает переключение формы и независимо от всего этого - переключатель режима (он инвертируется после кажного нажатия)

именно для этого сначала вся клава считывается в массив с учётом дребезга, а затем поблочно анализируется.
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 21-11-2003 11:06 » 

С дребезгом можно бороться защитными задержками. К примеру, событие отпускания кнопки считать выполненным, если после некоторого времени она определяется как ненажатая.

Зависимость кнопок в матрице можно побороть установкой на каждую кнопку диода. Минусы: диоды должны успевать срабатывать за время между выдачей сканирующего импульса и чтением входящих линий; ток через диод должен быть в линейной части его характеристики (I>1-2мА).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #28 : 21-11-2003 17:39 » 

Цитата

Зависимость кнопок


что имеется в виду?
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #29 : 21-11-2003 21:53 » 

Ну вот - переезд и связанные с ним глюки - писал-писал, а результат не зафиксировался. Попробую еще раз...

В коммутируемых матрицах есть такой глюк: если одновременно замкнуть три узла, расположенные особым образом, то, при сканировании, матрица может сообщать о замыкании незамкнутого узла. Пример: есть матрица 2х2 - [строки][столбцы]. Замыкаем узлы [0][0], [0][1] и [1][0]. Сканирование покажет что , кроме указанных узлов, есть замыкание на [1][1]. Т.е. кнопки расположены на двух осях - строка 0 и столбец 0: одна на строке 0, вторая на столбце 0, третья на пересечении, а "фантомная" кнопка на пересечении столбца первой и строки второй кнопок.

Может показаться что явление редкое, но расчитывать на него надо. Борьба: или программно, или диодами.
« Последнее редактирование: 22-12-2007 22:41 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines