Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы новичка.Часть 2.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
nunzio
Добрый день.
Продолжаю изучать AVR smile.gif .
Вопросы:
1) Почему различные флаги сбрасываются записью в них единицы? Ведь если во флаге была единица,то почему записав в него единицу я его сброшу (во флаге будет 0).
2) Зачем нужны подтягивающие резисторы ? Почему вывод если между ним и шиной питания подключен подтягивающийся резистор - является источником тока - ведь сопротивление этого резистора довольно небольшое (120 ком) ?
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB3 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
nml
Цитата(nunzio @ Jul 31 2005, 12:13)
1) Почему различные флаги сбрасываются записью в них единицы? Ведь если во флаге была единица,то почему записав в него единицу я его сброшу (во флаге будет 0).
Так уж устроено железо у АВРа. IAR тут ни при чем.
Цитата
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB2 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
*

Я думаю такого делать не надо, потому как получите не 0, не 1, и даже не половину :-) а скорее всего получите сгоревший пин порта. Максимальный ток через пин 20 (импульсно 40) мА.
nunzio
[/quote]
Я думаю такого делать не надо, потому как получите не 0, не 1, и даже не половину :-) а скорее всего получите сгоревший пин порта. Максимальный ток через пин 20 (импульсно 40) мА.
*

[/quote]


А как же внешние прерывания ,запрос на которые может генерироваться по низкому уровню, даже несмотря на то что вывод может быть сконфигурирован как выход.И при чем здесь ток ?
P.S. А что такое IAR ?
alexs
Цитата(nunzio @ Jul 31 2005, 14:13)
Добрый день.
Продолжаю изучать AVR smile.gif .
Вопросы:
1) Почему различные флаги сбрасываются записью в них единицы? Ведь если во флаге была единица,то почему записав в него единицу я его сброшу (во флаге будет 0).
2) Зачем нужны подтягивающие резисторы ? Почему вывод если между ним и шиной питания подключен подтягивающийся резистор - является источником тока - ведь сопротивление этого резистора довольно небольшое (120 ком) ?
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB3 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
*

Единицей сбрасываются флаги устанавливаемые аппаратно. Их нельзя установить в 1 самому, их можно только сбросить. А почему нулем, спросите:

Atmel Corporation
2325 Orchard Parkway
San Jose, CA 95131
Tel: 1(408) 441-0311
Fax: 1(408) 487-2600.

Когда вывод определяется как источник внешнего прерывания, он автоматом становится входом. (AVR конечно учитывает ваше мнение, но может с ним и не согласиться).
А с током...., попробуйте освоить не AVR, а теорию электротехники. Иногда может пригодиться и в цифровой схемотехнике.
nunzio
Цитата из книги А.В.Евстифеева
"Микроконтролеры АВР семейств ТИНИ и МЕГА фирмы АТМЕЛ"
"Следует отметить , что все внешние прерывания генерируются даже в том случае ,если соответствующие выводы сконфигурированы как выходы.Эта особенность мк позволяет генерировать прерывания програмно."

Цитата из книги Голубцова М.С. , Кириченковой А.В.
"Микроконтроллеры АВР: от простого к сложному"
"Обратите внимание на то, что прерывания обрабатываются ,даже тогда когда выводы сконфигурированы как выходы."

Где тут написано что "Когда вывод определяется как источник внешнего прерывания, он автоматом становится входом."

Цитата из книги В.Н. Баранова
"Применение микроконтролеров АВР"
"Если на контакт микроконтролера PB2 (установленому как выход, на котором присутствует логическая
единица) подать НИЗКИЙ уровень , то чтение PORTB даст единицу в том же разряде, а чтение PINB даст ноль во втором разряде"

Ему тоже не стоит так делать? Или ему надо вначале освоить электротехнику?
И я еще раз спрашиваю причем здесь ток ?
alexs
Цитата(nunzio @ Jul 31 2005, 14:13)
Добрый день.
Продолжаю изучать AVR smile.gif .
Вопросы:
1) Почему различные флаги сбрасываются записью в них единицы? Ведь если во флаге была единица,то почему записав в него единицу я его сброшу (во флаге будет 0).
2) Зачем нужны подтягивающие резисторы ? Почему вывод если между ним и шиной питания подключен подтягивающийся резистор - является источником тока - ведь сопротивление этого резистора довольно небольшое (120 ком) ?
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB3 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
*

Прекрасно иметь под рукой столько безусловно солидной и качественной литературы. Но посмотрите повнимательнее на схемотехнику выводов порта AVR которые используются для внешних прерываний. И возможно тогда Вам станет ясно почему
"Пусть PORTB3 = 1.Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? ".
Но если когда-нибудь, Вам удастся сложить потенциал "логической 1" с 0 без резистора и получить в этом узле "логическую 1", Вас ждет Нобель.
nunzio
To Alexs : По авр я чайник (пока).Поэтому и вынужден аргументировать свою позицию цитатами из книг.Схемотехнику портов с прерываниями пока не нашел, но думаю скоро найду.
Я всего лишь попросил обосновать ваше высказывание(ответы типа иди посмотри на схему мне не подойдут - т.к. я только начинаю изучать микроконтроллеры) и по возможности ответить на мои вопросы - но кроме глупого и неуместного сарказма я от вас большего не добился.
jimmi
sad.gif
alexs
Цитата(nunzio @ Jul 31 2005, 20:53)
To Alexs : По авр я чайник (пока).Поэтому и вынужден аргументировать свою позицию цитатами из книг.Схемотехнику портов с прерываниями пока не нашел, но думаю скоро найду.
Я всего лишь попросил обосновать ваше высказывание(ответы типа иди посмотри на схему мне не подойдут - т.к. я только начинаю изучать микроконтроллеры) и по возможности ответить на мои вопросы - но кроме глупого и неуместного сарказма я от вас большего не добился.
*

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

Все дело в том, что при операции типа PORTB3 = 1, 1 записывается в защелку порта, которая отделена от PINB3(физического вывода микроконтроллера) тристабильным буфером и её состояние может не соответствовать реальному потенциалу на выводе PINB. Простой пример: управление NPN транзистором в ключевом режиме. В PORTB3 = 1, а на PINB3 Uнасбэ=1.1В. При попытке прочитать PINB3 прочитается 0.
Что касается внешних прерываний, то авторы ведь нигде не рекомендуют включать вывод в режим выхода, записывать в него 1, а потом силой притягивать его к 0. Они говорят лишь, что это возможно. Но если вдруг такая ситуация возникает, то вероятно выходной буфер выхода переходит в режим ограничения ток. Он не сгорает, но возрастает потребление вцелом, что не всегда преветствуется.

Цитата из книги А.В.Евстифеева
"Микроконтролеры АВР семейств ТИНИ и МЕГА фирмы АТМЕЛ"
"Следует отметить , что все внешние прерывания генерируются даже в том случае ,если соответствующие выводы сконфигурированы как выходы.Эта особенность мк позволяет генерировать прерывания програмно."
Об этом можно сказать, что если Вам понадобилось создать програмное прерывание аналогичное внешнему, то этого можно добиться указанным способом, но только вывод при этом можно ведь никуда не подключать.

А сарказма и в помине нет. Все мы чайники, просто разных калибров.
avv
nunzio, не поленитесь и откройте даташит на любой контроллер AVR, вопрос про прерывание отпадет. Главное учесть, что у разных ножек порта разная схемотехника. Вот, например, PORTD (pins PD2 и 3 (AT90S2313) - входы прерываний). Там выход буфера соединен не только с выводом, но и со схемой прерывания, таким образом, как только ВЫХОДНОЙ сигнал совпадет с условием прерывания, оно произойдет.
Ну а "
Цитата
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB3 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
" - Точно, напутал. Говоря простым языком, ноль сильнее smile.gif
У меня есть подозрение, что подтягивающие резисторы (к +5В) в АВР введены для двух вещей: подключения логики с открытым коллектором и кнопок, "коротящих" подтянутый вход к общему. Обе эти штуки только потому и работают, что лог. 0 всегда просаживает лог. 1 (главное ток единицы ограничить, но это и так уже сделано за нас)
nunzio
Цитата(nunzio @ Jul 31 2005, 12:13)
Добрый день.
Продолжаю изучать AVR smile.gif .
Вопросы:
1) Почему различные флаги сбрасываются записью в них единицы? Ведь если во флаге была единица,то почему записав в него единицу я его сброшу (во флаге будет 0).
2) Зачем нужны подтягивающие резисторы ? Почему вывод если между ним и шиной питания подключен подтягивающийся резистор - является источником тока - ведь сопротивление этого резистора довольно небольшое (120 ком) ?
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB3 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
*

После повторного прочтения умных книг , этого и других форумов попытаюсь ответить на свои вопросы сам.Дополнения ,исправления , а также наставление на путь истиный приветствуются smile.gif .
Ответы:
1) Это особенность самого микроконтроллера.
2) Подтягивающий резистор является источником тока ,только если с ним последовательно подключено сопротивление много меньшего сопротивления - тогда можно считать , что ток не зависит от нагрузки.
3)Подтягивающий резистор, как известно подключен между входом и шиной питания.Если я подам на вывод логическую единицу , то ток через резистор течь не будет - не будет падения напряжения - на выводе (PINB) будет логическая единица.
Если я подам ноль - через резистор будет течь ток - на нем будет падать напряжение - на выводе (PINB)будет ноль - то есть ноль "гасит" единицу.
Жду обратной связи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.