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

 
 
> вопрос, про замыкание ног МК
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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 27)
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
prottoss
сообщение Dec 4 2006, 09:10
Сообщение #16


Гуру
******

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



Цитата(Dopler @ Dec 4 2006, 03:02) *
Вот для примера задача.
Устройство работает с синхронизацией от сети (лампочками мигает), прерывание заведено на INT0, а заказчик говорит, вот бы еще и без синхронизации работало (мигать светодиодами). Так я нароил шим внутри на 50 гц и выдал на ножку (аппаратно), соседнюю с INT0. Заказчик, когда нужна сеть, ведет сигнал от сети, когда не нужна - замыкает две соседние ножки.
так вот в вашем случае как раз ничего соединять то и не надо - можно программно в порт, на котором находится прерывание записать, нужное значение, и прерывание выполнится...


--------------------
Go to the top of the page
 
+Quote Post
add
сообщение Dec 4 2006, 09:51
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



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

Думаю несовсем так.. поскольку речь шла о том что "заказчик" сам изменяет конфигурацию. Совсем не обязательно что то переключать..(хотя можно и кнопку даже приделать..) Можно просто определить есть ли внешняя частота сети 50Гц, если нет то тактировать вутренним прерыванием.


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 4 2006, 10:14
Сообщение #18


Гуру
******

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



Цитата(add @ Dec 4 2006, 13:51) *
Цитата
так вот в вашем случае как раз ничего соединять то и не надо - можно программно в порт, на котором находится прерывание записать, нужное значение, и прерывание выполнится...

Думаю несовсем так.. поскольку речь шла о том что "заказчик" сам изменяет конфигурацию. Совсем не обязательно что то переключать..(хотя можно и кнопку даже приделать..) Можно просто определить есть ли внешняя частота сети 50Гц, если нет то тактировать вутренним прерыванием.
Ну дык и я о том же... Вообще, ИМХО, соединение нескольких портов(имеется в виду выводов) МК в одну точку не есть хороший тон, так как надежность устройства резко уменьшается... Ввиду разных катаклизмов, которыми кишит пространсво и время не известно что может быть с этими портами и в какую сторону они будут работать после Большого Сбоя Программы, тем паче, что устройство берет сигнал с розетки...


--------------------
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 4 2006, 10:58
Сообщение #19


Гуру
******

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



Цитата(prottoss @ Dec 3 2006, 21:54) *
А я это делаю это еще спокойнее с помощью бумаги, карандаша. Т.е. сначала думаю, потом паяю.

А я уже давно ничего не паяю. Для этого специально обученные люди есть :-)
Реальная ситуация недельной давности. Заказчик пишет "мы получили заказ на разработку А, где будет применяться плата от проекта Б, предусмотри подключение температурного датчика и двух счетчиков воды". Плата А уже почти разведена(тоже специально обученным человеком), а я даже не знаю, с какой точностью нужно измерять температуру, удаление датчика и проч. Вот и приходится закладываться на разные решения.
Так что не всегда есть нормальные условия думать. Вам повезло tort.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 4 2006, 11:41
Сообщение #20


Гуру
******

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



Цитата(Dog Pawlowa @ Dec 4 2006, 14:58) *
А я уже давно ничего не паяю. Для этого специально обученные люди есть :-)
Реальная ситуация недельной давности. Заказчик пишет "мы получили заказ на разработку А, где будет применяться плата от проекта Б, предусмотри подключение температурного датчика и двух счетчиков воды". Плата А уже почти разведена(тоже специально обученным человеком), а я даже не знаю, с какой точностью нужно измерять температуру, удаление датчика и проч. Вот и приходится закладываться на разные решения.
Так что не всегда есть нормальные условия думать. Вам повезло tort.gif
Ну, когда я говорил "Я" и "паяю", то имел ввиду не только себя))). Смысл в том, что сначало надо продумать, а потом уже воплощать в железо. А когда проектировщик свое за стенкой, а Вы свое, а еще есть дяденька, который носки вяжет, но они тожа в проекте заложены... тада дааа...

Patch holes, the ship will soon sink



--------------------
Go to the top of the page
 
+Quote Post
VDG
сообщение Dec 4 2006, 13:42
Сообщение #21


Знающий
****

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



Цитата(skilful @ Dec 3 2006, 22:43) *
Тогда как нужно настроить порты (PB0 - выход; PB3 - вход )??? Вот так?????

А мой разжеванный ответ мимо ушей пустили? angry.gif


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


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

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



Цитата(VDG @ Dec 3 2006, 20:46) *
Нет.
DDRB = 0bxxx00xx1
PORTB = 0bxxx00xx?




Я так понял при если на на PB0 единица, то порт может сгореть, ведь такая настройка не включает подтягивающий резистор?

еще 2 вопроса:


1) если устанавливаем
DDR = 0000 0000
PORT = 1111 1111

включены подтягивающие резистры и PIN = 1111 1111
если нога не садится на землю. А в AVR STudio значение PIN не становится = 1111 1111. Почему??
2) на тех ногах, где аналоговый компаратор есть ли эти подтягивающие резисторы?? А то в одной книге написано есть, в другой - нет. ?
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 5 2006, 09:14
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672



Цитата(skilful @ Dec 4 2006, 21:38) *
Цитата(VDG @ Dec 3 2006, 20:46) *

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

еще 2 вопроса:
1) если устанавливаем
DDR = 0000 0000
PORT = 1111 1111
включены подтягивающие резистры и PIN = 1111 1111
если нога не садится на землю. А в AVR STudio значение PIN не становится = 1111 1111. Почему??

Потому что Studio НЕ ЗНАЕТ куда и как вы подключили м\к и оставляет их значение на ваш выбор. Кликните мышкой на значении (белый квадратик) и он изменит свой цвет (на выводе станет 1) и если вы не будете менять направление порта, там и останется 1.


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Dopler
сообщение Dec 5 2006, 19:57
Сообщение #24


Местный
***

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



Цитата(prottoss @ Dec 4 2006, 10:14) *
Цитата(add @ Dec 4 2006, 13:51) *
Цитата
так вот в вашем случае как раз ничего соединять то и не надо - можно программно в порт, на котором находится прерывание записать, нужное значение, и прерывание выполнится...

Думаю несовсем так.. поскольку речь шла о том что "заказчик" сам изменяет конфигурацию. Совсем не обязательно что то переключать..(хотя можно и кнопку даже приделать..) Можно просто определить есть ли внешняя частота сети 50Гц, если нет то тактировать вутренним прерыванием.
Ну дык и я о том же... Вообще, ИМХО, соединение нескольких портов(имеется в виду выводов) МК в одну точку не есть хороший тон, так как надежность устройства резко уменьшается... Ввиду разных катаклизмов, которыми кишит пространсво и время не известно что может быть с этими портами и в какую сторону они будут работать после Большого Сбоя Программы, тем паче, что устройство берет сигнал с розетки...


Ну если так рассуждать, то один контролер вообще нельзя соединять с другим линиями (а вдруг в обоих программа собъется). Бесспорно, недопустимо соединять несколько выводов МК в один (якобы для увеличения мощности), что используется сплошь и рядом в радиолюбительской практике, а соединить выход со входом одного МК через резистор (например, 4к7) уж точно не криминал.
В моем случае речь шла об одноразовой поделке, не претендующей на основательность и фундоментальность, я просто привел пример в противовес вашему категоричному "Не существует".
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 5 2006, 22:00
Сообщение #25


Гуру
******

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



Цитата(Dopler @ Dec 5 2006, 23:57) *
В моем случае речь шла об одноразовой поделке, не претендующей на основательность и фундоментальность, я просто привел пример в противовес вашему категоричному "Не существует".
"Не существует" - имелось ввиду анализ сигнала на одном выводе МК с помощью другого вывода МК - для этого достаточно считать для этого спэшл предназначенный регистр PINx


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


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

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



Ну, хватит smile.gif) я воспользуюсь решение Артема (thx). Думаю оно никак не испортит МК. Ознакомьтесь с ним. Вот скажите лучше, пожалуйста, на ногах у Мега 64, где висит компаратор подтягивающие резисторы тоже можно включить?? Разные книженции сбили меня с толку. Заранее благодарю.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 5 2006, 22:44
Сообщение #27


Гуру
******

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



Цитата(skilful @ Dec 6 2006, 02:26) *
Ну, хватит smile.gif ) я воспользуюсь решение Артема (thx). Думаю оно никак не испортит МК. Ознакомьтесь с ним. Вот скажите лучше, пожалуйста, на ногах у Мега 64, где висит компаратор подтягивающие резисторы тоже можно включить?? Разные книженции сбили меня с толку. Заранее благодарю.
Если порт используется как GPIO - то есть просто как порт, то конечно, можно как обычно. Если порт используется как выводы компаратора, то пуллапы можно отключить "совсем-совсем" через SFIOR


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


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

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



Спасибо всем. Низкий поклон smile.gif)) Премного благодарен

Сообщение отредактировал skilful - Dec 5 2006, 22:57
Go to the top of the page
 
+Quote Post

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

 


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


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