Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Лекция 11
РIС- микроконтроллеры, выполненные в 22-х ( РIС16С72/73/76 и РIСF 73/76) контактных корпусах и в 33-х контактных корпусах (РIC 16 C74/77 и PIC 16F 74/77), а также (PIC 16C 717/770/771, PIC 16C 773/774) имеют ряд новых блоков, расширяющих их функциональные возможности:
- два 8-ми разрядных таймера TMR0 и TMR2 и один 18-ти разрядный TMR1;
-один или два модуля сравнения/накопления/ШИМ (ССР1, ССР2);
-два последовательных порта, синхронный последовательный порт, который может функционировать как трёхпроводный, последовательный периферийный интерфейс (SPI) или двухпроводная шина I2C и универсальный синхронно-асинхронный приемо- передатчик (USART);
-8-ми или 12-ти разрядный А/D преобразователь с мультиплексированными входными каналами и некоторые другие узлы.
Чтобы научиться работать с этими типами PIC-контройлеров, рассмотрим структуру и функционирование указанных блоков.
11.1. Регистр прерывания PIR1
Формат регистра PIR1
R/W-0 R/W-0 R-0 R-0 R/W_0 R/W_0 R/W_0 R/W_0
7 6 5 4 3 2 1 0
R – читаемый разряд, W – записываемый разряд ,U – зарезервированный разряд,
x – не определено, u – не изменяется, q – зависит от условия
Разряд 7: PSPIF(2) – флажок прерывания параллельного ведомого порта
1 – если есть операция чт/зп, 0 – если нет операции чт/зп.
Разряд 6: ADIF – флаг прерывания по концу преобразования A/D
1 – преобразование завершено, 0 – преобразование не завершено.
Разряд 5: RCIF – флаг прерываний от приёмника USART
1 – информация принята, 0 – буфер приёма пуст.
Разряд 4: TXIF – флаг прерывания от передатчика USART
1 – информация передана, 0 – буфер передатчика занят.
Разряд 3: SSPIF – флаг прерывания синхронного последовательного порта.
Режим SPI:
1 – если приняты/переданы данные
Редим ведомого I2C:
1 – если приняты/переданы данные
Редим ведущего I2C:
1 – если приняты/переданы данные, завершено формирование бита START,
завершено формирование бита STOP, завершено формирование бита повторный START,
завершено формирование бита подтверждение, обнаружено на шине формирование бита START или - обнаружено на шине формирование бита STOP.
0 – если условие возникновения прерывания не обнаружено.
Разряд 2: CCP1IF(2) – флаг прерывания CCP1
Режим фиксации:
1 – если значение TMR1 зафиксировано, 0 – если фиксация не произошла.
Режим компаратора:
1 – устанавливается, если значение TMR1 равно CCPR1H : CCPR1L0 – если не равно.
Режим PWM:
- разряд2 не используется
Разряд 1: TMR2IF(2) – флаг прерывания от равенства TMR2 и регистра PR2 (есть в структуре таймера TMR2)
1 – устанавливается если TMR2= PR2, 0 – если не равны.
Разряд 0: TMR1IF(2) – флаг прерывания окончания счёта TMR1
1 – устанавливается, если счёт окончен, 0 – если счёт не окончен.
Примечания:
1) если в микроконтроллере отсутствует какой-либо модуль, то связанный с ним бит зарезервирован и читается как «0»,
2) Флажки должны сбрасываться программой.
11.2. Регистр масок прерывания PIE1
R/W R/W R/W R/W R/W=0 R/W=0 R/W=0 R/W=0
7
6
5
4
3
2
1
Разряд 7: PSPIE – маска прерывания параллельного ведомого порта:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 6: ADIE – маска прерывания по окончанию преобразования A/D:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 5: RCIE – маска приёмника USART:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 4: TXIE – маска прерывания передатчика:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 3: SSPIE – маска прерывания синхронного последовательного порта:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 2: CCP1IE – маска прерывания CCP1:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 1: TMR2IE – маска прерывания от равенства TMR2 и PR2:
1 – прерывание разрешено, 0 – прерывание запрещено.
Разряд 0:TMR1IE – маска прерывания по окончанию счёта TMR1:
1 – прерывание разрешено, 0 – прерывание запрещено.
Лекция 12
12.1. Модуль таймера TMR1
Таймер 1 может функционировать в одном из двух режимов:
- как таймер,
- как счётчик событий.
Режим определяется специальным битом в регистре управления таймером 1 «T1CON» .
Формат регистра T1CON:
7
6
5
4
3
2
1
Разряды (7-6) – зарезервированные разряды (читаются как «0»)
Разряды (5-4) ( T1CKPS 1 – T1CKPS 0): задают коэффициент деления предделителя таймера TMR1
11=1/8 значание предделителя
10=1/4 -//-//-
01=1/2 -//-//-
00=1/1 -//-//-
Разряд 3: T1OSCEN: Работа TMR1 от кварцевого резонатора
1=генератор кварцевого резонатора включен, 0=работа от к/р запрещена
Разряд 2: T1SYNC: Синхронизация внешней тактовой частоты (зависит от значения бита1 регистра T1CON):
Если бит TMR1CS=1, то:
T1SYNC=1 задает асинхронный режим,
если T1SYNC=0 – синхронный режим.
Если TMR1CS=0, то разряд 2 игнорируется.
Разряд 1: TMR1CS: источник синхронизации таймера 1:
1 – внешняя синхронизация (по переднему фронту на контакте RC0/T1OSO/T1CKI),
0 – внутренняя синхронизация (с частотой Tosc/4)
Разряд 0: TMR1ON: Включение модуля TMR1
1 – включен, 0 – отключен.
В режиме таймера TMR1 инкрементируется на каждом командном цикле от внутреннего генератора с чистой Fosc/4.
В режиме счётчика событий TMR1 инкрементируется по каждому переднему фронту сигнала на контакте RC0/T1OSO/T1CKI.
TMR1 имеет встроенный генератор для работ от собственного кварцевого резонатора. Когда таймер запрограммирован на работу от собственного кварцевого резонатора (T1OSCEN=1), то контакты RC1/T1OSI/CCP2 и RC0/T1OSO/T1CK1 становятся входными, т.е. значения TRISC[1:0] игнорируется, а чтение с этих контактов всегда даёт 0.(RC1 и RC0 – контакты порта С).
12.2. Режим синхронного счётчика
Если T1SYNC=0, то внешний тактовый сигнал синхронизируется с фазой внутреннего генератора. Синхронизация выполняется после предделителя.
В этой конфигурации, во время остановки, таймер не будет инкрементироваться, даже если присутствует внешний тактовый сигнал, т.к. внутренний генератор отключен, однако предделитель продолжает работать.
Когда таймер 1 используется в режиме синхронного счётчика, внешний тактовый сигнал должен быть таким, чтобы могла быть выполнена его синхронизация с фазой внутреннего генератора (Tosc).
Когда предделитель установлен с соотношением 1:1, внешний тактовый сигнал проходит на вход синхронизатора без изменения. Синхронизация сигнала от контакта T1CK1 с фазой внутреннего генератора выполняется стробированием входного сигнала на чётных тактах внутреннего генератора, следовательно, необходимо, чтобы сигнал на T1CKI был высоким и низким в течение времени не менее 2Tosc плюс небольшая задержка (20нс).
Если предделитель установлен более чем 1:1, то внешний тактовый сигнал делится асинхронным счётчиком пульсаций так, что на выводе предделителя присутствует симметричный сигнал. Следовательно, необходимо, чтобы сигнал на T1CKI, разделённый предделителем, имел период, по крайней мере, 4Tosc плюс небольшая задержка (40 нс).
Основное требование к сигналу на T1CKI: время высокого и низкого уровня не должно быть меньше минимальной ширины импульса 10 нс.
Структурная схема таймера TMR1:
IF Cинхронизированная
TMP1 & 0 входная частота
TMR 1H
TMR1L
флаг переполнения 1
T1SYNC
T1OSC
RC0/T1OS0/T1CKI X v 1 предделитель
& внутр. 0 1,2,4,8
RC1/T1OSI/CCP2 X частота Fosc/4 2
T1OSCEN
Включение TMR1CS
Генератора T1CKPS1:
T1CKPS0
Вход
останова Синхронизация
Примечание: когда бит T1OSCEN=0, инвертор и резистор обратной связи отключены, чтобы устранить утечку тока.
Лекция 13
13.1.Режим асинхронного счётчика
Если бит T1SYNC регистра T1CON равен 1, то внешний тактовый сигнал не синхронизируется. Таймер работает синхронно с фазой внутреннего генератора. Таймер продолжает инкрементироваться во время останова и может генерировать прерывание при переполнении, которое будет пробуждать процессор.
В режиме асинхронного счётчика таймер не может использоваться для работы в составе модуля CCP.
13.2.Генератор таймера TMR1
Кварцевый резонатор подключается между контактами T1OSI (вход) и T1OSO(выход). Работа генератора разрешается установкой бита T1OSCEN в регистре T1CON. Максимальная частота кварцевого резонатора м.б. 200кГц (рабочая частота 32кГц).
Генератор таймера 1 идентичен LP генератору микроконтроллера. Пользователь должен обеспечить задержку программы, чтобы гарантировать запуск генератора.
С1=33пф=С2(f=33кГц)
С1=С2=15пф(f=>100кГц)
13.3. Сброс регистров TMR1H : TMR1L
Эти регистры не обнуляются при включении питания или при любом другом сбросе за исключением запуска специального события CCP1.
Регистр T1CON обнуляется при включении питания или по сбросу при снижении напряжения питания. При любом другом сбросе регистр не изменяется.
Предделитель обнуляется при записи в регистры TMR1L или TMR1H.
13.4. Чтение и запись таймера 1
Регистры TMR1H и TMR1L можно читать во время, когда таймер работает в асинхронном режиме от внешнего генератора. Однако пользователь должен иметь в виду, что чтение 16-разрядного таймера осуществляется чтением двух самостоятельных регистров.
При этом могут возникать некоторые проблемы, т.к. значение счётчика между чтениями может изменяться.
Для записи рекомендуется просто остановить таймер и записать желаемое значение.
Чтение 16-разрядного таймера:
Все прерывания должны быть заблокированы.
MOVF TMR1H,W; чт. стар. байта
MOVWF TMPH; сохранение в регистре TMPH
MOVF TMR1L,W; чт. мл.байта
MOVWF TMPL;
MOVF TMPH,W; чт. ст. байта
BTFSC STATUS,Z; значения старшего байта равны
GOTO CONTINUE; достоверное 16-разр. чтение;
;TMR1L возможно изменился между чтением старшего и младшего байтов. Чтение старшего и младшего байтов теперь будет достоверным:
MOVF TMR1H,W; чтение старшего байта
MOVWF TMPH
MOVF TMR1L,W; чтение младшего байта
MOVWF TMPL; если требуется разрешить прерывания
CONTINUE: ;продолжение программы.
Лекция 14
14.1.Таймер TMR2
Это 8-разрядный счётчик с предделителем и постделителем. TMR2 может использоваться как основа для отсчёта времени в режиме ШИМ-модулей CCP. TMR2 может читаться и записываться.
Структура таймера TMR2:
Выход TMR2 Fosc/4
Установка сброс TMR2
Флага TMR2IF
Постделитель Компаратор
Предделитель
(от 1:1 до 1:16) 1:1,1:4,1:16
4
PR2 2
Тактирование таймера осуществляется внутренней частотой (Fosc/4) через предделитель. Коэф-т деления устанавливается битами T2CKPS1 : T2CKPS0 в регистре T2CON.
Таймер имеет 8-разрядный регистр периода PR2. При равенстве TMR2=PR2 таймер сбрасывается и цикл приращения повторяется. При сбросе TMR2 обнуляется, а в PR2 записывается FFH. Выход TMR2 проходит через постделитель с коэффициентом деления от 1:1 до 1:16.
Управление таймером осуществляется регистром T2CON:
U-0 R/w-0 R/w-0 R/w-0 R/w-0 R/w-0 R/w-0 R/w-0
7 6 5 4 3 2 1 0
Разряд 7 – зарезервирован (читается как «0»)
Разряды (6-3) (TOUTPS3 : TOUTPS0) – коэф-т деления постделителя
0000=1:1
0001=1:2
………….
1111=1:16
Разряд 2: (TMR2ON) – управление таймером 2
1 – включено, 0 – выключено.
Разряд 1: (T2CKPS1 : T2CKPS0) – коэффициент деления преддилителя
00=1:1; 01=1:4; 1х=1:16.
Лекция 15
15.1.Модули CCP
Каждый модуль содержит 16-ти разрядный регистр, который может функционировать как 16-ти битный регистр накопления данных(Capture),16 битный регистр сравнения (Compare) или 10-и разрядный ШИМ(PWM). Модули CCP1 и CCP2 идентичны, за исключением запуска специального события.
В режимах накопления и сравнения оба ССР взаимодействуют с TMR1, а в режиме PWM – с TMR2. Режим работы ССР1 задаётся в регистре CCP1CON. Режим работы ССР2 задаётся в регистре CCP2CON.
Формат регистров CCP1CON и CCP2CON:
R/W-0
U-0 U-0
-
-
7 6 5 4 3 2 1 0
Разряды (7-6) зарезервированы, читаются как «0».
Разряды ( 5-4)- (ССРхХ : ССРхY) : в режимах накопления и сравнения не используются.
В режиме ШИМ: содержат 2 младших разряда 10-разрядного значения ширины импульса (8 старших разрядов находятся в регистре CCPRxL).
(CCPRxL) – мл. байта регистра CCPRx.
Разряды ( 3-0) - (ССРхМ3 : ССРхМ0) : выбор режима ССРх
0000=ССРх отключен (сброс модуля CCPx),
0100=режим накопления по каждому заднему фронту,
0101=режим накопления по каждому переднему фронту,
0110=режим накопления по 4-му переднему фронту,
0111=режим накопления по 16-му переднему фронту,
1000=режим сравнения, при равенстве на выходе устанавливается высокий уровень (бит CCPxIF=1)
1001=режим сравнения, при равенстве на выходе устанавливается низкий уровень (бит CCPxIF устанавливается в 1)
1010=режим сравнения, при равенстве генерируется прерывание программы (устанавливается бит CCPxIF, выход CCPx не изменяется)
1011=режим сравнения, при равенстве формулируется запуск специального события: ССР1 сбрасывает TMR1, CCP2 сбрасывает TMR1 и запускает A/D преобразование, если модуль A/D включен (бит CCPxIF устанавливается)
11хх=режим ШИМ
15.2.Режим накопления
Структура ССР в режиме накопления показана на рисунке:
Предделитель Установка флага
Х :1,4,16 CCP1IF CCPR1H CCPR1L
контакт в рег.
RC2/CCP1 PIR1<2>
Фиксация значения
или
Синхр-я CCP1CON<3:0> TMR1H TMR1L
При появлении события на контакте RC2/ССР в режиме накопления в регистрах CCPR1H и CCPR1L фиксируется 16-разрядное значение регистра TMR1. Какие могут быть события:
- каждый задний фронт входного сигнала,
- каждый передний фронт входного сигнала,
- каждый 4-ый передний фронт входного сигнала,
- каждый 16-ый передний фронт входного сигнала.
Если событие зафиксировано, то устанавливается флаг, который должен быть сброшен программой. Если новое значение фиксируется раньше, чем считано старое из регистра CCPR1, то старое значение будет потеряно. В режиме накопления контакт RC2/CCP1 должен быть сконфигурирован как вход установкой соответствующего разряда регистра TRISC.
При переключении режима накопления может быть сгенерировано ложное прерывание, если CCP1IF (в регистре PIE1<2>) не сброшен (прерывание разрешено). Поэтому после любого изменения режима должен быть сброшен флажок CCP1IF.
В режиме накопления предделитель имеет 4 установки. Если модуль ССР выключен или работает в другом режиме (сравнения или ШИМ), то счётчик предделителя обнуляется. Любой сброс также обнуляет счётчик предделителя.
При переключении режима накопления счётчик предделителя не обнуляется. В следующем примере показан рекомендуемый метод переключения режима накопления. В этом примере обнуляется счётчик предделителя и предупреждаются «ложные» прерывания:
CLRF CCP1CON; отключить модель ССР
MOVLW NEW_CAPT_PS; подготовить новый режим накопления
MOVWF CCP1CON; загрузить в CCP1CON новый режим
;NEW_CAPT_PS – это новая константа.
Для режима накопления ССР модуль таймера 1 должен быть установлен в режим таймера или режим синхронного счётчика. В режиме асинхронного счетчика режим накопления не работает.
Лекция 16
16.1.Режим сравнения
Структура режима сравнения:
Флаг CCP1IF
Запуск специального (PIR1<2>)
События CCPRIH CCPRIL
X Q S Выходная Компаратор
Контакт R логика
RC2/CCP1
TRISC<2> ССP1CON<3:0> TMR1H TMR1L
Управление выбор
Выходом режима
Когда наступает равенство, устанавливается флаг CCP1IF и на контакте RC2/CCP1 устанавливается уровень, зависящий от значения бит CCP1CON<3:0>. Контакт RC2/CCP1 должен быть запрограммирован на выход (бит TRISC<2> должен быть сброшен).
При обнулении регистра CCP1CON выход компаратора устанавливает низкий уровень на контакте RC2/CCP1. Этот уровень не является значением регистра данных PORTC.
Для режима сравнения ССР модуль таймер TMR1 должен быть установлен в режим таймера или синхронного счётчика. В режиме асинхронного счётчика режим сравнения не работает.
Если задан режим прерывания программы, то уровень на выходном контакте ССР1 не изменяется. Устанавливается флаг CCP1IF и генерируется прерывания (если разрешено).
Если запрограммирован запуск специального события, то формируется сигнал, который сбрасывает TMR1. Т.е. в этом режиме регистр ССРR1 является 16-разр. программируемым регистром периода для таймера TMR1.
Выход специального события в схеме ССР2 не только сбрасывает TMR1, но и устанавливает бит GO/DONE (ADCON0<2>), который запускает A/D преобразование (если модуль A/D включен).
У микроконтроллеров, имеющих только один модуль ССР1, запуск специального события сбрасывает регистр TMR1 и запускает A/D – преобразование (если модуль A/D включен). Запуск специального события не устанавливает флаг TMR1IF.
Лекция 17
17.1.Режим ШИМ
В этом режиме на контакте RC2/CCP1 формируется сигнал ШИМ с разрешением до 10 разрядов. Этот контакт должен быть запрограммирован на выход (бит TRISC<2>=0).
На рисунке показана упрощённая структура модуля ССР в режиме ШИМ. В этом режиме 8-разрядное значение ширины или пульса записывается в младший байт регистра CCPR1(CCPR1L).
Регистр ширины импульса
CCPR1L CCP1CON<5:4>
CCPR1H (ведомый)
Компаратор
R Q
TMR2 (1) S
Компаратор
Сброс таймера и
установка триггера
X
PR2 0
RC2/CCP1 TRISC<2>
В начале каждого периода, это значение переписывается в старший байт CCPR1H, который используется как ведомый буфер. Двойная буферизация необходима для непрерывности сигнала на выходе ШИМ.
Восьмиразрядный таймер объединяется с 2-разрядным предделителем, что создаёт 10-разрядное разрешение.
При обнулении регистра CCP1CON на выходе ШИМ (контакт RC2/CCP1) устанавливается низкий уровень. Этот уровень не является значением регистра данных PORTC.
Длительность периода ШИМ определяется регистра периода PR2 таймераTMR2 и вычисляется по формуле:
ШИМпериод=[(PR2)+1]*4*Tosc*(TMR2 значение предделителя).
Частота модуляции равна:
Fшим=1/ШИМпериод.
Когда TMR2 становится равным PR2, выполняются следующие операции:
1) обнуляется TMR2;
2) на контакте ССР1 устанавливается высокий уровень;
3) значение ширины импульса ШИМ переписывается из CCP1L в CCPR1H.
Примечание: постделитель таймера TMR2 в режиме ШИМ не используется.
Ширина импульса ШИМ определяется значением регистра CPR1L и битами CСP1X : ССР1Y регистра CCP1CON<5:4>.
Ширина импульса вычисляется по формуле:
ШИМширина импульса=(CCPR1L : CCP1CON<5:4> * Tosc * (TMR2значение предделителя)).
Значение CCPR1L : CCP1CON<5:4> может быть записано в любое время, но перезапись в CCPR1H происходит только когда TMR2 становится равным PR2 (т.е. в начале нового периода). В режиме ШИМ регистр CCPR1H доступен только по чтению.
Когда код в TMR2, с учётом предделителя, становится равным CCPR1H и 2-м разрядам CCP1CON, на выходе ССР1 устанавливается низкий уровень.
Максимальное значение разрядов для данной частоты вычисляется по формуле:
ШИМразрядов=log(Fosc/Fшим):log(2)
Или: 2x=Fosc/Fшим : x – количество разрядов.
Пример:
Желаемая частота ШИМ – 78,125 кГц, Fosc=20МГц
Значение предделителя TMR2=1.
Подставляя данные значения в формулу для вычисления разрядности, получим:
1/78,125кГц=[(PR2)+1]*4*1/20МГц*1;
или 12,8мс=[(PR2)+1]*4*50мс*1;
откуда PR2=63
Найдём максимальное разрешение для частоты 78,125кГц с генератором 20МГц:
2х = 20МГц/78,125кГц = 256, откуда x=8.
Т.е. для частоты 78,125кГц можно получить максимальное разрешение 8 разрядов (0≤CCPR1L : CCP1CON<5:4>)≤255.
Любое значение >255 приведёт к тому, что ширина импульса будет более 100%. Для получения более высокого разрешения необходимо снизить частоту ШИМ.
Рачсёты разрешения для частоты ШИМ при Fosc=20МГц.
Частота ШИМ (кГц)
1,22
4,88
19,53
78,125
156,3
208,3
Коэф-т предделителя TMR2
16
4
1
1
1
1
Значение PR2
0xFF
0xFE
0xFE
0x3F
0x1F
0x17
Разрешение (разрядов)
10
10
10
8
7
5,5
17.2.Порядок программирования ШИМ
1. Установить период ШИМ в регистре PR2.
2. Установить ширину импульса ШИМ в регистре CCPR1L и битах CCP1CON<5:4>.
3. Контакт RC2/CCP1 запрограммировать на выход TRISC<2>=0.
4. Установить коэф-т предделителя TMR2 и запустить таймер 2 (в регистре T2CON).
5. Включить модуль ССР1 в режиме ШИМ.
Лекция 18
18.1.Модернизированный модуль ССР
Микроконтроллеры PIC 1b C717 / 770 / 771 имеют модернизированный модуль ССР(ЕССР). В режимах накопления и сравнения ЕССР идентичен модулю ССР. В режиме ШИМ модуль ЕССР позволяет управлять силовыми ключами мостовой (4 канала), полумостовой (2 канала) или одноканальной схемами, т.к. имеет дополнительный контроллер управления выходами:
CCP1M<3:0>
Рег. Ширины и мп. PWM1M1
<1:0>
ССЗR1L CCP1CON<5:4> 2 4
RB3/CC1/PIA
CCP1/PIA
CCPR1H(ведомый) X
TRISB<3>
Компаратор R P1B
Q X
S TRISB<5>
TMR2 (1) P1C
X
<6>
Компаратор P1D X
<7>
PR2
P1DEL
R67/T10S1/11
Конфигурация выходов задаётся битами PWM1M<1:0> в регистре ССР1CON и может быть:
- одноканальный выход;
- двухканальный;
- четырёхканальный;
- четырёхканальный с реверсивным управлением.
В режиме одноканального выхода контакт RB3/CCP1/P1A используется как выход ШИМ. Данный выход может использоваться как для управления силовым ключом, так и для формирования аналогового сигнала в качестве ЦАП. Выход ЕССР мультиплексирован с выводом PORTB<3>, поэтому, чтобы он был сконфигурирован как выход ЕССР, бит TRISB<3> должен быть сброшен.
Регистр CCP1CON
R/W-0
7 6 5 4 3 2 1 0
Разряды <7:6> (PWM1M<1:0>) :
00 – одноканальный выход, при этом P1A - выход ШИМ.Р1В,Р1С, Р1D – выводы I/0
Выходы P1A, P1B, P1C, P1D – мультиплексированы с выводами PORTB<3,5,6,7>
01 – черёхканальный выход с прямым управлением: P1D – выход ШИМ, P1A – активный, P1B, P1C – неактивны.
10 – двухканальный выход : P1A, P1B – выходы ШИМ, P1C, P1D -выводы I/0.
11 – четырёхканальный выход с реверсивным управлением: P1B – выход ШИМ,P1C-активный, P1A, P1D - не активны.
В режиме накопления и сравнения разряды <7:6> - не используются.
Разряды <5:4> (CCP1X : CCP1Y) : младшие разряды в режиме ШИМ. Восемь страрших разрядов находятся в регистре CCPR1L.
В режиме накопления и сравнения разряды <5:4> - не используются.
Разр. <3-0> (CCP1M3 : CCP1M0) :
Выбор режима ЕССР
0000 – сброс модуля ЕССР (отключено)
0100 – регистр накопления по каждому заднему фронту.
0101 – регистр накопления по каждому переднему фронту.
0110 – режим накопления по каждому 4-у переднему фронту.
0111 – режим накопления по 16-у переднему фронту.
1000 - режим сравнения или равенства, на выходе устанавливается высокий уровень (бит CCP1IF устанавливается).
1001 – режим сравнения, при равенстве на выходе устанавливается низкий уровень (бит CCP1IF - устанавливается).
1010 – режим сравнения, при равенстве генерируется прерывание программы (бит CCP1IF устанавливается, выход ССР не изменяется).
1011 – режим сравнения, при равенстве формируется запуск специального события (сбрасыввется TMR1 и запускается A/D – преобразования, бит CCP1IF устанавливается).
11хх – режим ШИМ
1100 = P1A, P1C активный высокий, P1B, P1D активный высокий,
1101= P1A, P1C активный высокий, P1B, P1D активный низкий,
1110= P1A, P1C активный низкий, P1B, P1D – активный высокий,
1111= P1A, P1C активный низкий, P1B, P1D – активный низкий.
Лекция 19
19.1.Двухканальный и четырехканальный выходы
В режиме двухканального вывода ШИМ используется два контакта. На контакте RB3/CCP1/P1А формируется сигнал ШИМ, а на контакте RB5/SD0/P1B сигнал обратный выходу ШИМ. Этот режим может использоваться для управления силовыми ключами полумостовой схемы или для управления полномостовой схемой. Выходы P1A и P1B мультиплексированы с выводами PORTВ <3,5>, поэтому биты <3,5> регистра TRISB дожны быть сброшены.
При работе в режиме четырёхканального выхода используются четыре контакта, но одновременно активными могут быть только 2. В режиме с прямым управлением на контакте RB3/CCP1/P1A постоянно установлен активный уровень (т.е. 1), а контакт RB7/T1OSI/P1D используется как выход ШИМ. В режиме с реверсивным управлением на контакте RB6/T1OSO/T1CKI/P1C постоянно установлен активный уровень, а контакт RB5/SD0/P1B используется как выход ШИМ. Все эти выводы должны быть сконфигурированы как выходы, поэтому биты TRISB<3,5,6,7> должны быть сброшены.
Биты CCP1M(1:0) в регистре CCP1CON позволяют выбирать активный логический уровень (высокий или низкий) для каждого из выходов ШИМ. Пока выходы ШИМ не будут открыты, на контактах должен быть установлен неактивный уровень. Если выходы ШИМ открыты, установка активного уровня на контактах может привести к непредсказуемым последствиям.
Для избежания возникновения сквозных токов при управлении силовыми ключами в полумостовой схеме (в двухканальном режиме) предусмотрена программируемая задержка времени. Задержка включения ключа происходит при переходе сигнала от неактивного состояния к активному. Управление задержкой осуществляется программированием регистра P1DEL. В разрядах <7-0> устанавливается длительность задержки в циклах микроконтройлера (Tosc/4). Задержка отсчитывается от установки неактивного уровня на одном выходе до установки активного уровня на другом (для выходов P1A и P1B). Модуль ЕССР не обеспечивает задержку переключения сигналов в режиме четырёхканального выхода.
19.2.Реверс в режиме четырёхканального выхода
В этом режиме бит PWM1M1 в регистре CCP1CON позволяет управлять направлением вращения реверсивного электродвигателя. Программируемое переключение направления изменением бита PWM1M1 может осуществляться в любой момент времени, но модуль ЕССР примет новое направление только на следующем цикле ШИМ. При этом переключение сигналов на немодулируемых выходах P1A и P1C к новому напрвлению будут выполняться раньше конца периода ШИМ.
Т Т
P1A 1
ШИМ
P1B 1
P1C 1
P1D 1
Tз
Примечания:
1.Бит PWM1M1 может быть записан в любое время.
2.Активный уровень сигналов – высокий.
3. Сигналы P1A и P1C переключаются ранее конца периода ШИМ на Tosc, 4Tosc или 16Tosc в зависимости от предделителя TMR2. Моделируемые сигналы P1B ,P1С в это время не активны.
Следует однако избегать изменения направления ШИМ, когда ширина импульса близка к периоду. А также использовать драйверы, которые компенсируют медленное закрытие силового ключа. Общее время отключения ключа должно быть меньше времени включения.
19.3. Реализация системы
Когда ЕССР используется в режиме ШИМ, необходимо на контактах ШИМ предусмотреть внешние резисторы , подтягивающие выходы к неактивному уровню, т.к.при включении МК все контакты ввода-вывода находятся в третьем состоянии. Внешние подтягивающие резисторы должны удерживать силовые ключи в закрытом состоянии, пока МК не установит на выходах соответствующие уровни сигналов или активизирует выходы ШИМ.
При программировании контактов P1A, P1B, P1C и P1D, как выходов ШИМ, выходные триггеры могут находиться в неопределённом состоянии. Поэтому сброс соответствующих бит TRISB, установка контактов, как выходов одновременно с программированием модуля ССР, может вызвать повреждение силовых ключей. Поэтому программирование контактов ШИМ как выходов ШИМ может осуществляться только после завершения модулем ССР полного цикла ШИМ. Завершение полного цикла ШИМ может быть определено по установке в «1» бита TMR2IF.
19.4. Порядок программирования режима ШИМ
1. Конфигурировать модуль ЕССР в режим ШИМ:
а) отключить выходы CCP1/ P1A, P1B, P1C и P1D установкой соответствующих бит TRISB,
b) установить период ШИМ загрузкой регистра PR2,
с) установить ширину импульса ШИМ загрузкой регистра CCPR1L и бит CCP1CON<5:4>,
d) конфигурировать ЕССР для выбранного режима ШИМ загрузкой регистра CCP1CON. Биты CCP1M(3:0) определяют режим модуля ЕССР и активные уровни выходов. Биты PWM1M<1:0> определяют режим выходов: 1-но, 2-х или 4-х канальный,
е) для двухканального режима установить время задержки переключения сигналов загрузкой регистра P1DEL.
2.Конфигурировать и запустить TMR2 :
а) запретить прерывание TMR2 сбросом бита TMR2IF в регистре PIR1.
b) установить значение для предделителя TMR2 загрузкой бит T2CKPS<1:0> в регистре T2CON.
с) запустить таймер 2 установкой бита TMR2ON в регистре T2CON.
3. После одного цикла ШИМ открыть выходы:
а) ожидать переполнение TMR2 (пока бит TMR2IF не станет равным 1). Начало следующего цикла ШИМ.
b) открыть выходы CCP1/P1A, P1B, P1C и P1D сбросом соответствующих бит в регистре TRISB.
Лекция 20
20.1. Модуль аналого-цифрового преобразования
Количество аналоговых входов у разных PIC16 колеблется от 4-х до 8-и. Модуль A/D обеспечивает преобразование аналогового сигнала в 8-и разрядный код методом последовательного приближения .На время преобразования уровень входного сигнала удерживается устройством выборки и хранения. Источник опорного напряжения задаётся программно. Внутренним источником является напряжение питания VDD, внешний источник подключается к контакту RA3/AN3/VREF. А/D - преобразование может происходить даже если PIC – контроллер находится в режиме останова, при этом синхронизация осуществляется от внутреннего RC – генератора модуля A/D.
Модуль A/D состоит из 3-х программно доступных регистров:
- регистра результата (ADRES),
- регистра управления 0 (ADCON 0),
- регистра управления 1 (ADCON 1).
Регистры ADCON 0 и ADCON 1 несколько отличаются для 8-ми канальных модулей. Регистры ADCON 0 и ADCON 1 для 8-ми канальных модулей имеют формат:
Регистр ADCON 0
R/W-0
U-0 R/W-0
7 6 5 4 3 2 1 0
Разряды(7-6) (ADCS1-ADCS0) – выбор частоты преобразования:
00=Fosc/2
01=Fosc/8
10=Fosc/32
11=FRC (синхронизация от внутреннего RC генератора)
Разряды(5-3) (CHS2 : CHS0) - выбор аналового канала:
000= канал 0 (RA0/AN0)
001= канал 1 (RA1/AN1)
010= канал 2 (RA2/AN2)
011= канал 3 (RA3/AN3)
100= канал 4 (RA5/AN4), для PIC16C715 канал 0
101= канал 5 (RE0/AN5), для PIC16C715 канал 1
110= канал 6 (RE1/AN6), для PIC16C715 канал 2
111= канал 7 (RE2/AN7), для PIC16C715 канал 3
Разряд 2 (GO/DONE) – состояние A/D преобразования.
Если ADON=1, то уровень 1 в разряде GO/DONE означает что A/D включено,
Уровень 0 означает что A/D – преобразование окончено (автоматически сбрасывается аппаратными средствами при окончании A/D - преобразования).
Разряд 1 (CHS3) – совместно с CHS2 : CHS0 задаёт адрес аналогичного канала:
1000= канал 8 (RB2/AN8)
1001= канал 9 (RB3/AN9)
(Этот разряд только у контроллеров PIC16C774, у остальных зарезервирован, читается как «0»).
Разряд 0 (ADON) – включение A/D
1= A/D включен, 0= A/D выключен.
Регистр ADCON 1
U-0 R/W-0
7 6 5 4 3 2 1 0
Разряды (7-3) – зарезервированы, читаются как «0».
Разряды (2-0) (PCFG2 : PCFG0) – управление конфигурацией:
PCFG2 : PCFG0
RA0
RA1
RA2
RA5
RA3
RE0
RE1
RE2
VREF
000
A
A
A
A
A
A
A
A
VDD
001
A
A
A
A
VREF
A
A
A
RA3
010
A
A
A
A
A
D
D
D
VDD
011
A
A
A
A
VREF
D
D
D
RA3
100
A
A
D
D
A
D
D
D
VDD
101
A
A
D
D
VREF
D
D
D
RA3
11x
D
D
D
D
D
D
D
D
-
A= Аналоговый; D=цифровой вход/выход
VREF – опорное напряжение.
Примечание: входы RE0, RE1 и RE2 отсутствуют у микроконтроллеров с 5-ю каналами.
Структура 8 разрядного модуля A/D:
Лекция 21
21.1. Порядок программирования A/D-преобразователя:
1Установить конфигурацию модуля A/D
а) установить аналоговые входы и источник опорного напряжения (ADCON 1),
b) выбрать канал A/D (ADCON 0),
c) выбрать источник синхронизации A/D – преобразования (ADCON 0),
d) выключить модуль A/D (ADCON 0).
2. Если необходимо, разрешить прерывание A/D:
а) сбросить бит ADIF (в регистре PIR1),
b) установить бит ADIE (INTCON или PIE1),
c) установить GIE (INTCON).
3. Выдержать время, требуемое для устройства выборки и хранения.
4. Начать преобразование:
а) установить бит GO/DONE (ADCON 0)
5. Ожидать конца A/D – преобразования:
а) опрашивать бит G0/DONE , пока он не станет равным «0».
b) ожидать прерывания A/D.
6. Считать регистр результата A/D (ADRES) и очистить бит ADIF, если необходимо.
7. Для следующего преобразования перейти на шаг 1 или 2.
Время преобразования одного разряда – TAD. Минимальное время, требуемое для устройства выборки и хранения – 2ТAD.
21.2.Синхронизация A/D – преобразования
Время преобразования одного разряда - TAD. Полное 8-разрядное преобразование выполняется за 9,5 TAD. Источник синхронизации выбирается программно. Возможны 4 варианта синхронизации:
2Tosc, 8Tosc, 32Tosc, внутренний RC-генератор.
Для точного A/D-преобразования TAD должно быть выбрано не менее допустимой величины: (2,0мкс для PIC16C71, 1.6мкс для всех остальных PIC16X7XX контроллеров).
Зависимость TAD от частоты генератора устройства:
Источник синхронизации
Частота
ADCS1 : ADCS0
20 МГц
5МГц
2Tosc
00
100нс
400нс
8Tosc
01
400нс
1,6мкс
32Tosc
10
1,6мкс
6,4мкс
RC
11
4-6мкс
4-6мкс
*) закрашенные значения TAD менее допустимого.
21.3. Программирование аналоговых входов
Состоянием аналоговых контактов порта управляют регистры ADCON 1, TRISA и TRISE. Контакты, которые используются как аналоговые входы, должны быть запрограммированы на вход. Если соответствующий разряд регистров TRIS сброшен (т.е. – на выход), то цифровой выходной уровень (VOH или VOL) будет преобразован как аналоговый сигнал.
Примечание:
При чтении порта I/O все контакты, конфигурированные, как аналоговые входы, будут читаться как «0». Контакты, конфигурированные как цифровые входы, функционируют как аналоговые входы, но аналоговые уровни на них могут вызвать чрезмерное потребление тока.
Ниже приведены примеры программирования A/D – преобразования для 4-х канальных контроллеров (пример 1) и для 8-ми канальных (пример 2).
Пример1
bsf STATUS, PR0; обращение к банку 1
crlf ADCON 1; все входы аналоговые
bcf STATUS, PR0: обращение к банку 0
movlw OxC1; синхронизация от RC, канал 0
movwf ADCON 0; A/D включен
bcf INTCON, ADIF; сброс флага
bsf INTCON, ADIE; разрешены прерывания A/D
bsf INTCON, GIE; разрешить общее прерывание
;Если необходимое для выборки время истекло, то можно начать A/D – преобразование:
bsf ADCON 0, ADON; пуск A/D-преобразования
После завершения преобразования будет установлен флаг ADIF, а GO/DONE сброшен.
Пример 2
bsf STATUS, PR0; обращение к банку 1
bsf STATUS, PR1; только для PIC16C76/77
clrf ADCON1; все входы аналоговые
bcf STATUS,PR0; в банк 0
movlw OxC1; синхронизация от RC, канал 0
movwf ADCON 0; A/D включен
bcf PIR1, ADIF; сброс флага
bsf INTCON, PEIE; разрешить прерываия от устройства ввода/вывода
bsf INTCON, GIE; разрешить общее прерывание
;Если необходимое время выборки истекло, можно начать преобразование:
bsf ADCON 0, ADON; пуск A/D-преобразования
После завершения A/D –преобразования будет установлен флаг ADIF, а GO/DONE сброшен.
Время преобразования и точность рез-ти связаны соотношением:
Тпр = 2ТAD+N*TAD+(8-N)(2Tosc)
Где N- число разрядов преобразования.
Воздействие сброса: Сброс устанавливает все регистры в исходное состояние. Модуль A/D отключается. Значение в ADRES не изменяется. После включения питания ADRES неопределенно.