реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> вопрос, про замыкание ног МК
skilful
сообщение Dec 3 2006, 20:30
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Добрый день. Хочу спросить у участников форума - возникла необходимость соединить несколько ног МК (одного порта). Необходимо, допустим, подавать сигнал на PB0, а снимать с PB3, PB4.
Для этого необходимы следующие настройки порта:

DDRB = 00000000 b
PORTB = 00000001 b


Подскажите пожалуйста так будет правильно делать?
Go to the top of the page
 
+Quote Post
VDG
сообщение Dec 3 2006, 20:46
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 845
Регистрация: 10-02-06
Пользователь №: 14 193



Нет.
DDRB = 0bxxx00xx1
PORTB = 0bxxx00xx?


--------------------
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Dec 3 2006, 20:46
Сообщение #3


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



главное чтобы не соединять ноги от 2х и более портов настроенных на вывод
если нужен такой вариант то цепляйте резистор(Ы).
в вашем случае все порты настроены на ввод + включен подтягивающий резистор на PB0
напомню что направление портов есть DDRx 1= out 0=in


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 3 2006, 20:57
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(skilful @ Dec 4 2006, 00:30) *
Добрый день. Хочу спросить у участников форума - возникла необходимость соединить несколько ног МК (одного порта). Необходимо, допустим, подавать сигнал на PB0, а снимать с PB3, PB4.
Для этого необходимы следующие настройки порта:

DDRB = 00000000 b
PORTB = 00000001 b

Подскажите пожалуйста так будет правильно делать?
Интересно, зачем такие выкрутасы нужны? Неужели нет возможности решить задачу внутри МК?

PS: ИМХО таких задач нет!!!


--------------------
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Dec 3 2006, 21:24
Сообщение #5


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



ну наверное чисто теоретически


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 3 2006, 21:37
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(prottoss @ Dec 3 2006, 20:57) *
Интересно, зачем такие выкрутасы нужны? Неужели нет возможности решить задачу внутри МК?
PS: ИМХО таких задач нет!!!

Хм, я использую... А почему? Хм...
Обычно на момент проектирования печатной платы не до конца ясен принцип обработки некоторых входных сигналов. То ли АЦП, то ли компаратор, то ли прерывание по изменению уровня, то ли логика захвата, то ли просто считывание, то ли вход таймера. Каак заведу на все входы! А потом выбираю спокойно :-)
Да и с выходными точно так же.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
skilful
сообщение Dec 3 2006, 21:43
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



имеется разъем на много ног (около 50). Необходимо прозвонить каждый с каждым контакт внутри разъема, чтобы определить какой контакт с кем замкнут. Вот и думаю решить задачу с помощью МК (каждая нога МК на контакт разъема).
Алгоритм моих действий прост - выставляю единицу на 1 ноге и читаю сигнал на других ногах. Если прочитаю на какой-нить другой единицу, то эти 2 контакта замкнуты....и т.д.

Поэтому и возникла задача соединения 2-х и более ног МК.


Только я уже запутался. В спецификации на МК написано
DDRB=0; PORTB=0 - высокое входное сопротивление порта


Тогда как нужно настроить порты (PB0 - выход; PB3 - вход )??? Вот так?????

DDRB = 0000 0001
PORTB = 0000 0001


Если не правильно все изложил напишите...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 3 2006, 21:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Dog Pawlowa @ Dec 4 2006, 01:37) *
Хм, я использую... А почему? Хм...
Обычно на момент проектирования печатной платы не до конца ясен принцип обработки некоторых входных сигналов. То ли АЦП, то ли компаратор, то ли прерывание по изменению уровня, то ли логика захвата, то ли просто считывание, то ли вход таймера. Каак заведу на все входы! А потом выбираю спокойно :-)
Да и с выходными точно так же.
А я это делаю это еще спокойнее с помощью бумаги, карандаша. Т.е. сначала думаю, потом паяю.

Цитата(skilful @ Dec 4 2006, 01:43) *
Только я уже запутался.
Что тут понимать то? Всего четыре сосны:

1 Сосна:
DDR = 0, PORT = 0 - вход, он же просто нога МК в высокоипедансном состоянии

2 Сосна
DDR = 0, PORT = 1 - вход с подтяжкой пуллап-резистором к шине питания

3 Сосна
DDR = 1, PORT = 0 - выход, установлен уровень лог. ноль

4 Сосна
DDR = 1, PORT = 1 - выход, установлен уровень лог. единицы


--------------------
Go to the top of the page
 
+Quote Post
skilful
сообщение Dec 3 2006, 22:03
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



ну да, так для моей задачи изначальное сотояние

DDR = 0000 0001
PORT = 0000 0001

подойдет???
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 3 2006, 22:19
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(skilful @ Dec 4 2006, 02:03) *
ну да, так для моей задачи изначальное сотояние
DDR = 0000 0001
PORT = 0000 0001
подойдет???
Догадайтесь уж сами, я Вам из прЫнцЫпа не скажу. Вам уже все на десятый раз разжевали, а Вы все пойдет-не-пойдет... Пошлите, он и пойдет)


--------------------
Go to the top of the page
 
+Quote Post
Dopler
сообщение Dec 3 2006, 23:02
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Цитата(prottoss @ Dec 3 2006, 20:57) *
Цитата(skilful @ Dec 4 2006, 00:30) *
Добрый день. Хочу спросить у участников форума - возникла необходимость соединить несколько ног МК (одного порта). Необходимо, допустим, подавать сигнал на PB0, а снимать с PB3, PB4.
Для этого необходимы следующие настройки порта:

DDRB = 00000000 b
PORTB = 00000001 b

Подскажите пожалуйста так будет правильно делать?
Интересно, зачем такие выкрутасы нужны? Неужели нет возможности решить задачу внутри МК?

PS: ИМХО таких задач нет!!!


Вот для примера задача.
Устройство работает с синхронизацией от сети (лампочками мигает), прерывание заведено на INT0, а заказчик говорит, вот бы еще и без синхронизации работало (мигать светодиодами). Так я нароил шим внутри на 50 гц и выдал на ножку (аппаратно), соседнюю с INT0. Заказчик, когда нужна сеть, ведет сигнал от сети, когда не нужна - замыкает две соседние ножки.
Go to the top of the page
 
+Quote Post
skilful
сообщение Dec 3 2006, 23:21
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Цитата(Kovrov @ Dec 3 2006, 20:46) *
главное чтобы не соединять ноги от 2х и более портов настроенных на вывод
если нужен такой вариант то цепляйте резистор(Ы).
в вашем случае все порты настроены на ввод + включен подтягивающий резистор на PB0
напомню что направление портов есть DDRx 1= out 0=in





Тогда будет


DDR = 0000 0000
PORT = 0000 0001 ???

Сообщение отредактировал skilful - Dec 3 2006, 23:21
Go to the top of the page
 
+Quote Post
_artem_
сообщение Dec 3 2006, 23:53
Сообщение #13


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



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

В этом случае короткого замыкания можно не бояться .


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
skilful
сообщение Dec 4 2006, 00:07
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



ну да, Артем, ты абсолютно прав! Спасибо, просто я хотел сделать наоборот - выдается +5В на ногу и делается перебор считываний на других ногах. Если еще где-нить +5В, то есть замыкание



Одну ногу я подключаю через подтягивающий резистор - на выходе высокий логический уровень, на остальных высокое входное сопротивление. Т. е. при подаче моих 5 В я их и прочитаю на других ногах, если есть замыкание.


Поэтому и думаю про варианты

DDRB = 00000000 b
PORTB = 00000001 b

или

DDRB = 00000001 b
PORTB = 00000001 b
Go to the top of the page
 
+Quote Post
vooon
сообщение Dec 4 2006, 00:15
Сообщение #15


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 27-06-06
Из: Msk
Пользователь №: 18 401



Посмотрите таблицу:

Код
+--------+-----+--------+------+
|reg\mode| inp | inp up | outp |
+--------+-----+--------+------+
|DDRx.y  |  0  |    0   |   1  |
|PORTx.y |  0  |    1   |   a  |
+--------+-----+--------+------+
|PINx.y  |  Z  |    1   |   a  |
+--------+-----+--------+------+

, где x - имя порта (например "B", тогда DDRB, PORTB, PINB),
      y - номер пина (мы помним что каждому пину порта соответствует один бит в регистрах
направления (DDR), порта (PORT), реального состояния (PIN))

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

      a - от состояния бита зависит состояние выхода (0/1)

inp    - обозначает режим при котором пин работает на вход, высокоимпедансный вход

inp up - обозначает режим при котором пин работает на вход, но подтянут внутренним резистором
(60-150 кОм) к шине питания МК. читается как 1, если что-нибудь не притянет к земле... :)

outp   - выход, состояние пина зависит от значения записанного в PORTx.y

напомню что регистр PINx доступен только для чтения! и содержит реальное состояние этого пина.


Удачи smile.gif

Add: Хм пока писал....
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016