Страница 1 из 1
Последовательность команд для atmega8
Добавлено: Пн июн 01, 2015 18:41:44
Dragon77
Скажите, почему допустив этой постой программе сначала обнуляется весь порт, а только потом задается на выход, ведь если он был задан на вход, то та же команда отключала внутренние резисторы, если не ошибаюсь, как тогда контроллер понимает при выполнении этой команды выключать(включать )выводы порта или не подключать(или включать) резисторы
http://blablacode.ru/микроконтроллеры/п ... mega8.html
Re: Последовательность команд для atmega8
Добавлено: Пн июн 01, 2015 19:06:30
Z_h_e
Если порт настроен как выход, то значение PORTX соответствует значениям на выходе побитно. Если переключить порт на вход, то значения битов PORTX будут соответствовать подтянут выход к питанию или находится в состоянии высокого импеданса и сам по себе этот регистр не изменится.
Если не ошибаюсь, то регистр PORTX при сбросе инициализируется нулями, надо смотреть даташит. Если это так, то код
для инициализации избыточен. Но если задача не критична к времени выполнения, иногда такие вещи нужно ставить. Меньше ошибок из-за человеческого фактора.
Re: Последовательность команд для atmega8
Добавлено: Пн июн 01, 2015 20:17:41
pyzhman
Код: Выделить всё
PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD=0xFF; //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В
Каменты убили. Горе-учителя, млин.
Re: Последовательность команд для atmega8
Добавлено: Пн июн 01, 2015 20:29:26
Dragon77
В той программе идет сначала присвоение выводам порта логических значений, как микроконтроллер выполняя эту команду понимает что делать(подавать напряжение или нет или подтягивать резистор или не подтягивать), если выводы порта еще даже не объявлены как выходы или входы?
Re: Последовательность команд для atmega8
Добавлено: Пн июн 01, 2015 20:36:15
Z_h_e
Вам нужно понять архитектуру контроллера на аппаратном уровне. В даташите функциональная схема портов достаточно понятна. В этой программе не " идет сначала присвоение выводам порта логических значений". Присваиваться значение регистру с мнемоникой PORTD, у которого есть реальное место в адресном пространстве карты памяти контроллера.