roboforum.ru

Технический форум по робототехнике.

ATmega 8 не читает порт B

ATmega 8 не читает порт B

DK10000 » 14 окт 2009, 18:38

Написал небольшую прогу, в которой необходимо, чтобы контроллер выполнял определенные действия в зависимости от того, какой код присутствует на ножках PB0-PB3. Но почему-то контроллер на эти команды не реагирует. Не читает этот порт. Вот листинг частичный


.def temp=R16

ldi temp,$0
out DDRB,temp

T:
in Temp,PINB
cpi Temp,8
breq incremindexX

in Temp,PINB
cpi Temp,12
breq Peresilka
rjmp T


Но почему-то не по одной из этих меток он не убегает. Хотя нужный код (8 или 12 ) до ножек доходит. Может быть, этот порт имеет какие то дополнительные функции, которые мешают ему работать как простой порт I/O.

Добавлено спустя 3 минуты 44 секунды:
Забыл. В протеусе он эти выводы успешно читает и делает то что нужно. А вот в реальности нет :cry:

Re: ATmega 8 не читает порт B

blindman » 14 окт 2009, 18:42

Нужно маскировать те биты, которые не интересуют. Вам нужно проверять всего 2 бита - а вы проверяете все 8. А откуда уверенность, что на неиспользуемых ногах лог. 0 ?

Re: ATmega 8 не читает порт B

DK10000 » 14 окт 2009, 18:49

Ой, кстати это еще вопрос. На остальныех ножках (кроме 4 первых ) я не проверял уровни логические.

Там ведь еще кварц подключен к PB6 и PB7.

То есть мне нужно лишь по этим двум битам (PB2 и PB3) проверять. В обчем ясно. Скажите а кроме кварца остальные альтернативные функции не могут влиять на этот порт?

Re: ATmega 8 не читает порт B

Victorovych » 15 окт 2009, 13:08

А ты их включал?

Re: ATmega 8 не читает порт B

avr123.nm.ru » 15 окт 2009, 13:36

DK10000 писал(а):Скажите а кроме кварца остальные альтернативные функции не могут влиять на этот порт?

Я вам советую неспеша и ВНИМАТЕЛЬНО прочитать Устройство микроконтроллера AVR на русском языке - http://avr123.nm.ru/02.htm - и многое станет понятным.


cron
Rambler\'s Top100 Mail.ru counter