Последовательность команд для atmega8

Обсуждаем контроллеры компании Atmel.
Ответить
Dragon77
Встал на лапы
Сообщения: 99
Зарегистрирован: Пт авг 08, 2014 18:45:12

Последовательность команд для atmega8

Сообщение Dragon77 »

Скажите, почему допустив этой постой программе сначала обнуляется весь порт, а только потом задается на выход, ведь если он был задан на вход, то та же команда отключала внутренние резисторы, если не ошибаюсь, как тогда контроллер понимает при выполнении этой команды выключать(включать )выводы порта или не подключать(или включать) резисторы http://blablacode.ru/микроконтроллеры/п ... mega8.html
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Последовательность команд для atmega8

Сообщение Z_h_e »

Если порт настроен как выход, то значение PORTX соответствует значениям на выходе побитно. Если переключить порт на вход, то значения битов PORTX будут соответствовать подтянут выход к питанию или находится в состоянии высокого импеданса и сам по себе этот регистр не изменится.

Если не ошибаюсь, то регистр PORTX при сбросе инициализируется нулями, надо смотреть даташит. Если это так, то код

Код: Выделить всё

PORTD=0x00;
для инициализации избыточен. Но если задача не критична к времени выполнения, иногда такие вещи нужно ставить. Меньше ошибок из-за человеческого фактора.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Последовательность команд для atmega8

Сообщение pyzhman »

Код: Выделить всё

PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD=0xFF;  //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В

Каменты убили. Горе-учителя, млин.
Docendo discimus
Dragon77
Встал на лапы
Сообщения: 99
Зарегистрирован: Пт авг 08, 2014 18:45:12

Re: Последовательность команд для atmega8

Сообщение Dragon77 »

В той программе идет сначала присвоение выводам порта логических значений, как микроконтроллер выполняя эту команду понимает что делать(подавать напряжение или нет или подтягивать резистор или не подтягивать), если выводы порта еще даже не объявлены как выходы или входы?
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Последовательность команд для atmega8

Сообщение Z_h_e »

Вам нужно понять архитектуру контроллера на аппаратном уровне. В даташите функциональная схема портов достаточно понятна. В этой программе не " идет сначала присвоение выводам порта логических значений". Присваиваться значение регистру с мнемоникой PORTD, у которого есть реальное место в адресном пространстве карты памяти контроллера.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «AVR»