Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« : 17-11-2003 12:41 » |
|
всем привет не знаю куда писать, пишу сюда. подскажите, как у мк AT90S1200 включить внутренние подтягивающие резисторы порта? в инструкции сказано, Все 8 бит порта B при использовании для ввода/вывода одинаковы. Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход. я пробовал - не получается, входа в воздухе болтаются... если кто сталкивался, помогите!
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #1 : 17-11-2003 13:18 » |
|
Перенес в Embedded. тут она логичнее смотрится.
Чем смотрел, что вывод болтается в воздухе?
У меня все работает. ставишь в регистр направления 0, в PORTx пишешь единицу. Ты еще учти, что CMOS притяжка в Atmel'ах слаботочная.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
little
|
|
« Ответ #2 : 17-11-2003 13:40 » |
|
Правда, что значит болтаются в воздухе? Подтягивающие резисторы просто создают 3-е состояние на входе, чтобы вход не мог влиять на сигнал.
|
|
|
Записан
|
|
|
|
Lex
|
|
« Ответ #3 : 17-11-2003 13:46 » |
|
little, это ты гонишь. Подтягивающие резисторы как раз и нужны для того, чтобы уйти от третьего состояния. Чтобы при неподключенной ножке на входе присудствовал строго определенный логический уровень "1" для pull-up и "0" для pull-down. Выбор номиналов для подтягивающих резисторов это отдельная песня. В общих чертах с одной стороны он должен надежно притягивать сигнал к заданному уровню, с другой стороны он не должен мешать сигналу, если он появится . Да и про потребление забывать не стоит.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #4 : 17-11-2003 17:21 » |
|
поподробнее: в ненажатом состоянии на вход подаётся 0, в нажатом - 1, притянуто к 0. сначала у меня там бы резюк на 51к , когда ещё не подключал программно. Чем смотрел, что вывод болтается в воздухе?
когда пробовал подключать из программы , отцепил внешний (кстати, номинал внутреннего - по документам - от 35к до 100к) и стал получаться фокус Эмиля Кио - водишь рукой над платой, а там мигают . а как точно померять, что они не подключились? Да и про потребление забывать не стоит
это у меня матрица кнопок - порт посылает сигнал сам себе, - как там с токами обстоит? Подтягивающие резисторы просто создают 3-е состояние на входе, чтобы вход не мог влиять на сигнал
интересная теория
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #5 : 17-11-2003 22:45 » |
|
Алексей1153, раз матрица кнопок, то на входах включай подтяжку - иначе будет нестабильный ввод (что ты и описываешь). Как - Lex уже написал. КМОП выход, конечно, достаточен для КМОП входа. Но есть но...
Где-то читал что нагрузочная способность для однородной системы (один выход одного типа -> много входов того же типа) КМОП в несколько раз выше чем для ТТЛ - хотя выходные токи меньше, за то входные еще меньше.
Это и плюс, и минус КМОП. Из-за слабых токов, если вынести клавиатуру на значительное расстояние, возможны наводки и влияние взаимной емкости проводов в жгуте. Если клавиатура смонтированна тут же, на плате, то таких проблем точно не будет.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #6 : 18-11-2003 02:47 » |
|
то на входах включай подтяжку
хорошо, пока так оставлю... Если клавиатура смонтированна тут же, на плате, то таких проблем точно не будет.
а кнопки и так на плате :? но не рядом, в виде прямоугольника, а разбросаны по краям платы размером 184х83 мм
|
|
|
Записан
|
|
|
|
Кот
Гость
|
|
« Ответ #7 : 18-11-2003 03:31 » |
|
Алексей1153,
Сталкивался с такой проблемой в бытность работы с контроллерами. Эфект проявлялся на 51х от Atmel так и на Intel. Избавлялись внешними подтягивающими сопротивлениями. При анализе оказалось что этот эфект проявлялся только на одном порту по этому перенесли систему ввода на другой порт и избавились от этого эффекта. По поводу 90s1200 такого эффекта не припомню.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #8 : 18-11-2003 04:37 » |
|
хорошо, пересмотрю прогу, может где-то обнуляю... перенесли систему ввода на другой порт
у меня это уже исключено :?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #9 : 18-11-2003 09:40 » |
|
На 8051 один из портов отличался по конструкции драйвера. Это в datasheet-е можно посмотреть. Возможно и на AVR-е такая же штука - стоит проверить.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Lex
|
|
« Ответ #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
|
|
« Ответ #12 : 18-11-2003 14:39 » |
|
Как у тебя все сделано? Если половина порта(или другой порт) это выходы, на которых у тебя сейчас бегущая единица для сканирования, а вторая половина это входы, то тебе просто надо заменить бегущую единицу, на бегущий ноль и все. Тогда ц тебя и подтяжка может работать и кнопки будут нажиматься. Или я чего-то не так понял? З.Ы. ток по выходу у AVR до 25 мА.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
RXL
|
|
« Ответ #13 : 18-11-2003 14:45 » |
|
З.Ы. ток по выходу у AVR до 25 мА. Это максимальный ток, а реальный зависит и от нагрузки...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Lex
|
|
« Ответ #14 : 18-11-2003 14:49 » |
|
RXL, ну я же написал до 25 мА. Тем более эта цифирь есть в даташите, с объяснением, как она получилась. Кстати я писал это к тому, что при желании можно сделать мощную подтяжку к "1" порядка 1к и все равно работать будет.
|
|
|
Записан
|
Megabyte be with you!
|
|
|
little
|
|
« Ответ #15 : 18-11-2003 15:01 » |
|
little, это ты гонишь. Ну, набросились. Звиняйте, не так сказал. Имел ввиду слабую единицу.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #16 : 18-11-2003 15:45 » |
|
надо заменить бегущую единицу, на бегущий ноль и все.
а это мысль! и как я сам не догадался? :oops: попробую дома - напишу результаты вскрытия
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #17 : 18-11-2003 21:08 » |
|
сделал так: перед выводом в порт выходные биты инвертировал by искл.или, а при считывании - входные биты. В результате прогу менять практически не пришлось, но... ВСЁ РАБОТАЕТ!!! спасибо всем!!! mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
|
|
« Последнее редактирование: 22-12-2007 22:37 от Алексей1153++ »
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #18 : 18-11-2003 22:02 » |
|
Алексей1153, а теперь статья:)
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #19 : 19-11-2003 02:50 » |
|
уголовная?
|
|
|
Записан
|
|
|
|
Кот
Гость
|
|
« Ответ #20 : 19-11-2003 09:17 » |
|
Алексей1153, А Гром прав статейка с куском кода и со схемой
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #21 : 19-11-2003 09:32 » |
|
На какую тему ? ну так могу... токо щас времени нет - вечером загляну. а где тут статьи пишутся ? ткните меня мордой , лучше ещё ссылку
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #22 : 20-11-2003 09:08 » |
|
ГРОМ, я уже прислал статью, затем прислал ещё с дополнением - они не долетели, что-ли? :?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #23 : 20-11-2003 17:58 » |
|
Ну, не хотите - не надо
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #24 : 20-11-2003 19:37 » |
|
ГРОМ, спасибо ещё раз.
Что-то я там намудрил с форматированием текста (болд не остался) и размерами рисунка 2. Он не масштабируется сам, да? :? :?
А как надо было сделать?
|
|
|
Записан
|
|
|
|
Кот
Гость
|
|
« Ответ #25 : 21-11-2003 03:29 » |
|
Алексей1153, Очень хорошая статейка просто бальзам на душу.
Уже года 3 как отошел от разработки устройств на микроконтроллерах, но было очень интересно почитать.
Вообще на мой взгляд тем кто сейчас занимается подобными вещами было бы интересно обмениватся кто как решает какие задачи. Большинство задачек однотипные но решения у всех разные, у каждого есть какая нибудь изюминка.
Кстати может кто поделится кто как делает работу с клавой, например алгоритм который выдает нажата кнопка сейчас или ее удерживают или отпущена ну и плюс борьба с дребезгом. Может у когонибудь есть какие нибудь интересные решения.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #26 : 21-11-2003 05:47 » |
|
например алгоритм который выдает нажата кнопка сейчас или ее удерживают или отпущена
кстати, я забыл написать в статье- в проге сделано так, что кнопки разбиты на 3 независимые группы - частота, форма, режим. если одновременно удерживать две или более кнопок частоты, то частота не переключается, независимо от этого так же работает переключение формы и независимо от всего этого - переключатель режима (он инвертируется после кажного нажатия) именно для этого сначала вся клава считывается в массив с учётом дребезга, а затем поблочно анализируется.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #27 : 21-11-2003 11:06 » |
|
С дребезгом можно бороться защитными задержками. К примеру, событие отпускания кнопки считать выполненным, если после некоторого времени она определяется как ненажатая.
Зависимость кнопок в матрице можно побороть установкой на каждую кнопку диода. Минусы: диоды должны успевать срабатывать за время между выдачей сканирующего импульса и чтением входящих линий; ток через диод должен быть в линейной части его характеристики (I>1-2мА).
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #28 : 21-11-2003 17:39 » |
|
Зависимость кнопок
что имеется в виду?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #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++ »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|