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

 
 
 
Reply to this topicStart new topic
> Вопросы новичка.Часть 2., нид хелп =)
nunzio
сообщение Jul 31 2005, 09:13
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 7-04-05
Пользователь №: 3 944



Добрый день.
Продолжаю изучать AVR smile.gif .
Вопросы:
1) Почему различные флаги сбрасываются записью в них единицы? Ведь если во флаге была единица,то почему записав в него единицу я его сброшу (во флаге будет 0).
2) Зачем нужны подтягивающие резисторы ? Почему вывод если между ним и шиной питания подключен подтягивающийся резистор - является источником тока - ведь сопротивление этого резистора довольно небольшое (120 ком) ?
3)Пусть(допустим) линия PB3 порта PORTB сконфигурирована как выход (DDRB3 = 1).Пусть PORTB3 = 1.
Почему тогда если я подам на PB3 0, PINB3 будет равен 0 ? Ведь напряжени логической 1 должно сложиться с напряжением логического 0 и результатом будет (примерно) напряжение логической 1 ?
Или я что-то напутал ?
Go to the top of the page
 
+Quote Post
nml
сообщение Jul 31 2005, 12:07
Сообщение #2


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

Группа: Свой
Сообщений: 86
Регистрация: 13-06-04
Из: Minsk
Пользователь №: 29



Цитата(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) мА.
Go to the top of the page
 
+Quote Post
nunzio
сообщение Jul 31 2005, 13:54
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 7-04-05
Пользователь №: 3 944



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

[/quote]


А как же внешние прерывания ,запрос на которые может генерироваться по низкому уровню, даже несмотря на то что вывод может быть сконфигурирован как выход.И при чем здесь ток ?
P.S. А что такое IAR ?
Go to the top of the page
 
+Quote Post
alexs
сообщение Jul 31 2005, 14:04
Сообщение #4


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

Группа: Свой
Сообщений: 97
Регистрация: 7-06-05
Пользователь №: 5 811



Цитата(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, а теорию электротехники. Иногда может пригодиться и в цифровой схемотехнике.
Go to the top of the page
 
+Quote Post
nunzio
сообщение Jul 31 2005, 14:34
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 7-04-05
Пользователь №: 3 944



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

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

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

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

Ему тоже не стоит так делать? Или ему надо вначале освоить электротехнику?
И я еще раз спрашиваю причем здесь ток ?
Go to the top of the page
 
+Quote Post
alexs
сообщение Jul 31 2005, 15:14
Сообщение #6


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

Группа: Свой
Сообщений: 97
Регистрация: 7-06-05
Пользователь №: 5 811



Цитата(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", Вас ждет Нобель.
Go to the top of the page
 
+Quote Post
nunzio
сообщение Jul 31 2005, 15:53
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 7-04-05
Пользователь №: 3 944



To Alexs : По авр я чайник (пока).Поэтому и вынужден аргументировать свою позицию цитатами из книг.Схемотехнику портов с прерываниями пока не нашел, но думаю скоро найду.
Я всего лишь попросил обосновать ваше высказывание(ответы типа иди посмотри на схему мне не подойдут - т.к. я только начинаю изучать микроконтроллеры) и по возможности ответить на мои вопросы - но кроме глупого и неуместного сарказма я от вас большего не добился.
Go to the top of the page
 
+Quote Post
jimmi
сообщение Jul 31 2005, 16:24
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 15-07-05
Пользователь №: 6 827



sad.gif
Go to the top of the page
 
+Quote Post
alexs
сообщение Jul 31 2005, 16:37
Сообщение #9


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

Группа: Свой
Сообщений: 97
Регистрация: 7-06-05
Пользователь №: 5 811



Цитата(nunzio @ Jul 31 2005, 20:53)
To Alexs : По авр я чайник (пока).Поэтому и вынужден аргументировать свою позицию цитатами из книг.Схемотехнику портов с прерываниями пока не нашел, но думаю скоро найду.
Я всего лишь попросил обосновать ваше высказывание(ответы типа иди посмотри на схему мне не подойдут - т.к. я только начинаю изучать микроконтроллеры) и по возможности ответить на мои вопросы - но кроме глупого и неуместного сарказма я от вас большего не добился.
*

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

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

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

А сарказма и в помине нет. Все мы чайники, просто разных калибров.
Go to the top of the page
 
+Quote Post
avv
сообщение Jul 31 2005, 22:16
Сообщение #10


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

Группа: Свой
Сообщений: 113
Регистрация: 28-01-05
Из: Владивосток
Пользователь №: 2 247



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 (главное ток единицы ограничить, но это и так уже сделано за нас)
Go to the top of the page
 
+Quote Post
nunzio
сообщение Aug 1 2005, 10:00
Сообщение #11





Группа: Новичок
Сообщений: 9
Регистрация: 7-04-05
Пользователь №: 3 944



Цитата(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)будет ноль - то есть ноль "гасит" единицу.
Жду обратной связи.
Go to the top of the page
 
+Quote Post

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

 


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


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