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

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

Сообщение Dragon77 »

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

Сообщение Z_h_e »

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

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

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

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

Сообщение pyzhman »

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

PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD=0xFF;  //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В
Каменты убили. Горе-учителя, млин.
Docendo discimus
Контактная информация:
Встал на лапы
Сообщения: 99
Зарегистрирован: Пт авг 08, 2014 18:45:12

Сообщение Dragon77 »

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

Сообщение Z_h_e »

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

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