Новичок
Регистрация: 24.09.2013
Сообщений: 37
Репутация: 11
|
Здравствуйте
Помогите разобраться с кодом #include <avr/io.h> int main(void) { DDRA =0b00000000; DDRB =0b11111111; PORTA =0b11111111; while(1) { if (PINA ==0b11111111) {PORTB =0b11111111; } else {PORTB =0b00000000; } } } я понимаю это так Порты А настроены на вход, Порты Б на выход, Порты А включены (как я понял при такой комбинации вкл. подтягивающие резисторы ), если пины порта А все под внешнем напряжением +5 , то выполнять действие подать на все ножки порта Б +5 ,если нет не подавать на ножки порта +5 но в протеусе он мне показывает другое посмотрите кому не лень в чем я ошибаюсь |
||
Оценка
|
Новичок
Регистрация: 27.08.2011
Адрес: Екатеринбург
Сообщений: 18
Репутация: 12
|
Коротить надо на землю, ибо пин подтянут на +5, а кнопка опять на +5 замыкает.
квадратик красненький слева от кнопки как бэ намекает. Если консультация по этому делу нужна заходи на сайт (в подписи) и в форме обратной связи укажи контакт. Договоримся. Удачи.
__________________
Разработка ПО под ваши задачи. Микроконтроллеры, микропроцессоры. Трассировка печатных плат. Разработка схемотехники. Консультации в этих областях. Приходите на наш сайт http://pcb-admin.ru Наши разработки http://www.pcb-admin.ru/nashy-razrabotky |
||
Оценка
|
Специалист
|
Подавать то можно, но на ножке, если включен внутренний подтягивающий резистор, будет постоянно высокий уровень. Поэтому, при такой конфигурации, мы можем определять лог. 0 или изменение логического уровня (0->1, 1->0) на ножках мк Почитайте информацию, в вашем конкретном случае по микроконтроллерам AVR и в частности глава "порты вввода/вывода"...
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Новичок
Регистрация: 24.09.2013
Сообщений: 37
Репутация: 11
|
|
||
Оценка
|
Специалист
|
Ножка лишь подтянута к + питания... (делается это для того, чтобы она не "висела" в воздухе, т.к. логическое состояние на таком входе без подтягивающего резистора будет неопределенным и нестабильным)
Я имел ввиду, что если в исходном состоянии на ножке лог. 0 (к примеру кнопка замкнута на землю или кнопка нормально замкнутая), то мы при размыкании контактов кнопки, мы можем определить изменение уровня 0->1
__________________
Уважаемые пассажиры, самолет ТУ-134 садится. У кого есть зарядка от ТУ-134, просьба пройти в кабину пилота. |
||
Оценка
|
Знаток
Регистрация: 06.12.2009
Сообщений: 824
Репутация: 114
|
У вас мега16 настроена портА - на вход, порт В - выход. Следовательно вы порт А привязали в +5В подтяг резисторами, порт В - к земле. Таким образом после ининциализации порт А должен быть в лог 1, порт В - в лог 0. Логическая единица - это когда напряжение на порте стремится к напряжению питания, логический ноль - напряжение стремится к 0. Грубо говоря когда напряжение на МК 5В - лог 1, 0В - лог 0. Далее программа например будет опрашивать состояние скажем порта РА0, скажем при установке на нем лог 0 выполняется какоето дуйствие, ну скажем загорается светодиод. Но без подтягивающих резисторов порт контроллера будет находится в необределенном состоянии (Z состоянии) и тогда понять в каком лог состоянии он находится невозможно. Также состояние неопределенности может возникнуть если напрячжение на порте ввода (РА0) будет примерно 1/2Uпит. Грубо говоря нарпряжение выше 2.5В - 1, ниже - 0.
так вот, при включении подтягивающих резисторов на вход, порт контроллера будет в лог 1, следовательно для если дальнейшее выполнение команды происходит по очистке бита (в ассемблере это ком.sbic) порта РА0, то нужно подавать на вход лог 0. Тоесть кнопку на землю. В реальных же устройствах, бывает, что необходимо на порт устанавливать дополнительные резисторы, так как из-за наводок порт сомовольно начинает устанавливать состояние. |
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |