PIC18F45K22 не могу сбросить ANSELx в 0

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
abrrvalk
Родился
Сообщения: 1
Зарегистрирован: Чт авг 24, 2017 14:42:31

PIC18F45K22 не могу сбросить ANSELx в 0

Сообщение abrrvalk »

Доброе время суток!

Взгляните, пожалуйста, свежим взглядом со стороны.

При начальной инициализации настраиваю порты. Кроме прочего нужно подключить цифровые входы сбросом соответствующих ANSELx в 0.

Код

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

	movlw	0x00
	movwf	0xF38
	movwf	ANSELA
	bcf		ANSELA, 0
	bcf		ANSELA, 1
	bcf		ANSELA, 2
	bcf		ANSELA, 3
Не меняет значение регистра. С другими аналогичными регистрами ситуация та же. Цифровые порты, соответственно, на вход тоже не работают. Состояние регистров смотрю через watch в MPLAB 8.92 + PICkit3.

С остальными регистрами всё работает штатно.

То ли это какой-то не документированный баг, то ли я что-то проглядел в даташите, хотя, вроде, просмотрел его полностью. До этого имел дело с другими пичками 18й серии - никаких проблем никогда не было, а тут буксую на ровном месте.

Добавлено after 2 hours 13 minutes 48 seconds:
Разобрался сам. Может, кому пригодится.

Ответ крылся в разделе Memory organization (не ожидал там увидеть что-то новое):
Addresses F38h through F5Fh are
also used by SFRs, but are not
part of the Access RAM. Users
must always use the complete
address or load the proper BSR
value to access these registers.
Регистры с указанными адресами не попали в страницу быстрого доступа (Access RAM) и для них надо использовать страничную адресацию с использованием BSR или команды использующие полный адрес (movff)

Рабочий вариант кода:

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

	movlw	0x00
	movff	WREG, ANSELA
PS
Надо читать даташит еще внимательней.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25261
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: PIC18F45K22 не могу сбросить ANSELx в 0

Сообщение КРАМ »

В догон.
Команда записи литерала в BSR: movlb <номер банка>
:wink: :tea:
Реклама
Ответить

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