Обзор регистров и ОЗУ

Область ОЗУ организована как 128 х 8. К ячейкам ОЗУ можно адресоваться прямо или косвенно, через регистр указатель FSR (04h). Это также относится и к EEPROM памяти данных-констант.

  Page 0 Page 1  
00

Indirect add.

80
01 RTCC OPTION 81
02

PCL

82
03

STATUS

83
04

FSR

84
05 PORT A TRISA 85
06 PORT B TRISB 86
07     87
08 EEDATA EECON1 88
09 EEADR EECON2 89
0A

PCLATH

8A
0B

INTCON

8B
0C 2F 36 регистров общего назначения     тоже 8C AF
30 7F

не существует

 

B0 FF

 

В регистре статуса (03h) есть биты выбора страниц, которые позволяют обращаться к четырем страницам будущих модификаций этого кристалла. Однако для PIC16C84 память данных существует только до адреса 02Fh. Первые 12 адресов используются для размещения регистров специального назначения. Регистры с адресами 0Ch-2Fh могут быть использованы, как регистры общего назначения, которые представляют собой статическое ОЗУ. Некоторые регистры специального назначения продублированы на обеих страницах, а некоторые расположены на странице 1 отдельно. Когда установлена страница 1, то обращение к адресам 8Ch-AFh фактически адресует страницу 0. К регистрам можно адресоваться прямо или косвенно. В обоих случаях можно адресовать до 512 регистров.

Прямая адресация.

Когда производится прямая 9-битная адресация, младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя страниц (RP1,RP0) из регистра статуса (03h).

 

 

Косвенная адресация

f4 - Указатель косв.адресации

Любая команда, которая использует f0 (адрес 00) в качестве регистра фактически обращается к указателю, который хранится в FSR (04h). Чтение косвенным образом самого регистра f0 даст результат 00h. Запись в регистр f0 косвенным образом будет выглядеть как Noр, но биты статуса могут быть изменены. Необходимый 9 - битный адрес формируется объединением содержимого 8 - битного FSR регистра и бита IRP из регистра статуса.

 

 

 


 


RTCC таймер/счетчик

Режим таймера выбирается путем сбрасывания в ноль бита RTS, который находится в регистре OPTION. В режиме таймера RTCC будет инкрементироваться от ВНУТРЕННЕГО ИСТОЧНИКА частоты- каждый командный цикл (без предделителя). После записи информации в RTCC, инкрементирование его начнется после двух командных циклов. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (напр.MOVF f1, CLRF f1). Избежать этого можно при помощи записи в RTCC скорректированного значения. Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF f1,W. Режим счетчика выбирается путем установки в единицу бита RTS, который находится в регистре OPTION. В этом режиме RTCC будет инкрементироваться либо положительным, либо отрицательным фронтом на ножке RA4/RTCC от ВНЕШНИХ событий. Направление фронта определяется управляющим битом RTE в регистре OPTION. При RTE=0 будет выбран положительный фронт. Пределитель может быть использован или совместно с RTCC, или с Watchdog таймером. Вариант подключения делителя контролируется битом PSA в регистре OPTION. При PSA=0 делитель будет подсоединен к RTCC. Содержимое делителя программе недоступно. Коэффициент деления - программируется. Прерывание по RTCC вырабатывается тогда, когда происходит переполнение RTCC таймера/счетчика при переходе от FFH к 00h. Тогда устанавливается бит запроса RTIF в регистре INTCON<2>. Данное прерывание можно замаскировать битом RTIE в регистре INTCON<5>. Бит запроса RTIF должен быть сброшен программно при обработке прерывания. Прерывание по RTCC не может вывести процессор из SLEEP потому, что таймер не функционирует в этом режиме.

Проблемы с таймером

Проблемы могут возникнуть при счете внешних сигналов. Эти сигналы стробируются внутренним сигналом синхронизации, см. схему SYNC. Образуется некоторая задержка между фронтом входного сигнала и моментом инкрементирования RTCC. Cтробирование производится после пределителя. Выход пределителя опрашивается дважды в течение каждого командного цикла, чтобы определить положительный и отрицательный фронты входного сигнала. Поэтому сигнал Psout должен иметь высокий и низкий уровень не менее двух периодов синхронизации.

Когда пределитель не  используется, Psout повторяет входной сигнал, поэтому требования к нему следующие:

Trth= RTCC high time >= 2 tosc+20ns

Trtl= RTCC low time >= 2 tosc+20ns.

Когда пределитель используется, на вход RTCC подается сигнал, поделенный на число, установленное в счетчике делителя. Сигнал после пределителя всегда симметричен.

Psout high time = Psout low time = N*Trt/2, где Trt- входной период RTCC,

N- значение счетчика делителя (2,4...256).

В этом случае требования к входному сигналу можно выразить так:

N*Trt/2 >= 2 tosc +20ns или Trt >= (4tosc + 40ns)/N.

Когда используется пределитель, низкий и высокий уровень сигнала на его входе должны быть не менее 10 нс. Таким образом общие требования к внешнему сигналу, когда делитель подключен таковы:

Trt= RTCC рeriod >= (4tosc + 40ns)/N

Trth = RTCC high time >= 10ns

Trtl = RTCC low time >= 10ns.

Так как выход пределителя синхронизируется внутренним сигналом тактовой частоты, то существует небольшая задержка между появлением фронта внешнего сигнала и временем фактического инкремента RTCC. Эта задержка находится в диапазоне между 3*tosc и 7*tosc. Таким образом измерение интервала между событиями будет выполнено с точностью 4*tosc (+-400нс при кварце 10 МГц).

Регистр статуса

Регистр (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для памяти данных. (f3) доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3=000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса можно посмотреть в “Описании команд”.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: