|
вопрос, про замыкание ног МК |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 27)
|
Dec 3 2006, 21:37
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(prottoss @ Dec 3 2006, 20:57)  Интересно, зачем такие выкрутасы нужны? Неужели нет возможности решить задачу внутри МК? PS: ИМХО таких задач нет!!! Хм, я использую... А почему? Хм... Обычно на момент проектирования печатной платы не до конца ясен принцип обработки некоторых входных сигналов. То ли АЦП, то ли компаратор, то ли прерывание по изменению уровня, то ли логика захвата, то ли просто считывание, то ли вход таймера. Каак заведу на все входы! А потом выбираю спокойно :-) Да и с выходными точно так же.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 3 2006, 21:54
|

Гуру
     
Группа: Свой
Сообщений: 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 - выход, установлен уровень лог. единицы
--------------------
|
|
|
|
|
Dec 3 2006, 23:02
|
Местный
  
Группа: Свой
Сообщений: 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. Заказчик, когда нужна сеть, ведет сигнал от сети, когда не нужна - замыкает две соседние ножки.
|
|
|
|
|
Dec 3 2006, 23:21
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 4 2006, 00: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 доступен только для чтения! и содержит реальное состояние этого пина. Удачи  Add: Хм пока писал....
|
|
|
|
|
Dec 4 2006, 09:10
|

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

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

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

|
Цитата так вот в вашем случае как раз ничего соединять то и не надо - можно программно в порт, на котором находится прерывание записать, нужное значение, и прерывание выполнится... Думаю несовсем так.. поскольку речь шла о том что "заказчик" сам изменяет конфигурацию. Совсем не обязательно что то переключать..(хотя можно и кнопку даже приделать..) Можно просто определить есть ли внешняя частота сети 50Гц, если нет то тактировать вутренним прерыванием.
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Dec 4 2006, 10:14
|

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

|
Цитата(add @ Dec 4 2006, 13:51)  Цитата так вот в вашем случае как раз ничего соединять то и не надо - можно программно в порт, на котором находится прерывание записать, нужное значение, и прерывание выполнится... Думаю несовсем так.. поскольку речь шла о том что "заказчик" сам изменяет конфигурацию. Совсем не обязательно что то переключать..(хотя можно и кнопку даже приделать..) Можно просто определить есть ли внешняя частота сети 50Гц, если нет то тактировать вутренним прерыванием. Ну дык и я о том же... Вообще, ИМХО, соединение нескольких портов(имеется в виду выводов) МК в одну точку не есть хороший тон, так как надежность устройства резко уменьшается... Ввиду разных катаклизмов, которыми кишит пространсво и время не известно что может быть с этими портами и в какую сторону они будут работать после Большого Сбоя Программы, тем паче, что устройство берет сигнал с розетки...
--------------------
|
|
|
|
|
Dec 4 2006, 10:58
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(prottoss @ Dec 3 2006, 21:54)  А я это делаю это еще спокойнее с помощью бумаги, карандаша. Т.е. сначала думаю, потом паяю. А я уже давно ничего не паяю. Для этого специально обученные люди есть :-) Реальная ситуация недельной давности. Заказчик пишет "мы получили заказ на разработку А, где будет применяться плата от проекта Б, предусмотри подключение температурного датчика и двух счетчиков воды". Плата А уже почти разведена(тоже специально обученным человеком), а я даже не знаю, с какой точностью нужно измерять температуру, удаление датчика и проч. Вот и приходится закладываться на разные решения. Так что не всегда есть нормальные условия думать. Вам повезло
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 4 2006, 11:41
|

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

|
Цитата(Dog Pawlowa @ Dec 4 2006, 14:58)  А я уже давно ничего не паяю. Для этого специально обученные люди есть :-) Реальная ситуация недельной давности. Заказчик пишет "мы получили заказ на разработку А, где будет применяться плата от проекта Б, предусмотри подключение температурного датчика и двух счетчиков воды". Плата А уже почти разведена(тоже специально обученным человеком), а я даже не знаю, с какой точностью нужно измерять температуру, удаление датчика и проч. Вот и приходится закладываться на разные решения. Так что не всегда есть нормальные условия думать. Вам повезло  Ну, когда я говорил "Я" и "паяю", то имел ввиду не только себя))). Смысл в том, что сначало надо продумать, а потом уже воплощать в железо. А когда проектировщик свое за стенкой, а Вы свое, а еще есть дяденька, который носки вяжет, но они тожа в проекте заложены... тада дааа... Patch holes, the ship will soon sink
--------------------
|
|
|
|
|
Dec 4 2006, 22:38
|
Частый гость
 
Группа: Свой
Сообщений: 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) на тех ногах, где аналоговый компаратор есть ли эти подтягивающие резисторы?? А то в одной книге написано есть, в другой - нет. ?
|
|
|
|
|
Dec 5 2006, 09:14
|

Местный
  
Группа: Свой
Сообщений: 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.
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Dec 5 2006, 19:57
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425

|
Цитата(prottoss @ Dec 4 2006, 10:14)  Цитата(add @ Dec 4 2006, 13:51)  Цитата так вот в вашем случае как раз ничего соединять то и не надо - можно программно в порт, на котором находится прерывание записать, нужное значение, и прерывание выполнится... Думаю несовсем так.. поскольку речь шла о том что "заказчик" сам изменяет конфигурацию. Совсем не обязательно что то переключать..(хотя можно и кнопку даже приделать..) Можно просто определить есть ли внешняя частота сети 50Гц, если нет то тактировать вутренним прерыванием. Ну дык и я о том же... Вообще, ИМХО, соединение нескольких портов(имеется в виду выводов) МК в одну точку не есть хороший тон, так как надежность устройства резко уменьшается... Ввиду разных катаклизмов, которыми кишит пространсво и время не известно что может быть с этими портами и в какую сторону они будут работать после Большого Сбоя Программы, тем паче, что устройство берет сигнал с розетки... Ну если так рассуждать, то один контролер вообще нельзя соединять с другим линиями (а вдруг в обоих программа собъется). Бесспорно, недопустимо соединять несколько выводов МК в один (якобы для увеличения мощности), что используется сплошь и рядом в радиолюбительской практике, а соединить выход со входом одного МК через резистор (например, 4к7) уж точно не криминал. В моем случае речь шла об одноразовой поделке, не претендующей на основательность и фундоментальность, я просто привел пример в противовес вашему категоричному "Не существует".
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|