close

Вход

Забыли?

вход по аккаунту

?

Malakhanov

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное
образовательное учреждение высшего образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
МОДУЛЬ ГЕНЕРАТОРА
ТАКТОВЫХ ИМПУЛЬСОВ
МИКРОКОНТРОЛЛЕРОВ
MICROCHIP СЕРИИ PIC18
Методические указания
по выполнению лабораторной работы
Санкт-Петербург
2016
Составители: Р. Н. Малаханов, К. М. Романов
Рецензент – доктор технических наук, профессор В. К. Пономарёв
Методические указания знакомят с устройством интегрированных модулей генераторов тактовых импульсов микроконтроллеров
фирмы Microchip серии PIC18 и принципами их программного
управления.
Содержат описание лабораторной работы по дисциплинам «Дискретные информационно-измерительные системы» и «Цифровые
вычислительные устройства и микропроцессоры приборных комплексов».
Предназначены для студентов всех форм обучения по направлению «Приборостроение» и специальности «Авиационные приборы и
измерительно-вычислительные комплексы».
Публикуется в авторской редакции.
Компьютерная верстка С. Б. Мацапуры
Сдано в набор 31.05.16. Подписано к печати 27.06.16.
Формат 60×84 1/16. Бумага офсетная. Усл. печ. л. 1,4.
Уч.-изд. л. 1,5. Тираж 50 экз. Заказ № 310.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения, 2016
ЛАБОРАТОРНАЯ РАБОТА
1. Методические указания
Цель работы заключается в ознакомлении со структурой интегрированного модуля генератора тактовых сигналов (ГТИ) микроконтроллеров (МК) фирмы Microchip серии PIC18 и принципами
его программного управления.
По своему функциональному устройству и программному управлению интегрированные модули ГТИ микроконтроллеров серии
PIC18 выполнены одинаково для всех семейств [1-3]. Отличия МК
серии PIC18 от МК серии PIC18 K будут рассмотрены ниже. МК
серии PIC18 J рассматриваться не будут.
ГТИ предназначен для синхронизации работы составных блоков МК, а также для формирования периферийными модулями МК
сигналов с заданными временными характеристиками. Синхронизация упорядочивает во времени последовательность выполнения
операций различными блоками МК при обработке информации.
Сигналы ГТИ распределяются по всем устройствам МК и разрешают синхронный приём данных элементам памяти (синхронным
триггерам), тем самым обеспечивая их переключение в необходимые моменты времени.
Модуль ГТИ генерирует тактовый сигнал с частотой Fosc. Внутри МК производится деление частоты этого сигнала на четыре и
ядро МК работает на частоте Fosc/4. Максимальные значения тактовой частоты МК Fosc в зависимости от семейства составляет 40,
48 или 64 МГц.
Режимы работы модуля генератора
тактовых импульсов
Модуль ГТИ может работать в 10 режимах, параметры которых
приведены в табл. 1. Конфигурация модуля ГТИ на языках программирования Си и ассемблер приведена в табл. 2.
3
Таблица 1
Режимы работы модуля ГТИ
Обозначение режима
Описание режима
LP (Low Power
oscillator)
Для тактирования используется кварцевый
или керамический резонаторы. Режим пониженного энергопотребления
ХТ
Для тактирования используется кварцевый
или керамический резонаторы
HS (High Speed
Для тактирования используется высокочаoscillator)
стотные кварцевый или керамический резонаторы
HSPLL (High Speed
Для тактирования используется высокочаoscillator with Phased
стотные кварцевый или керамический резонаLocked Loop)
торы с умножением тактовой частоты в схеме
фазовой автоматической подстройки частоты
(ФАПЧ)
RC (External Resistor/ Модуль ГТИ работает как RC-генератор и геCapacitor
нерирует сигнал с частотой Fosc; сигнал с чаoscillator)
стотой Fosc/4 поступает с вывода RA6
RCIO (External Resistor/ Модуль ГТИ работает как RC-генератор и геCapacitor oscillator with нерирует сигнал с частотой Fosc; вывод RA6
Input/Output)
используется для цифрового ввода-вывода
INTIO1 (Internal
Для генерации тактовых импульсов с частотой
oscillator with
Fosc используется внутренний ГТИ. Сигнал с
Input/Output)
частотой Fosc/4 поступает с вывода RA6. Вывод RA7 используется для цифрового вводавывода
INTIO2 (Internal
Для генерации тактовых импульсов с частотой
oscillator with
Fosc используется внутренний ГТИ. Выводы
Input/Output)
RA6 и RA7 используются для цифрового ввода-вывода
EC (External Clock
Для модуля ГТИ используется внешний
oscillator)
сигнал с тактовой частотой Fosc; модуль ГТИ
генерирует выходной сигнал с частотой Fosc/4
ECIO (External Clock
Для модуля ГТИ используется внешний
oscillator with
сигнал с тактовой частотой Fosc. Вывод RA6
Input/Output)
используется для цифрового ввода-вывода
Значение режима модуля ГТИ, указанное директивами #pragma
config или CONFIG, при программировании МК записываются программатором в биты c 0 по 3 регистра CONFIG1H, формат которого
приведён на рис. 1. Например, если в программе на языке программирования Си есть строка конфигурации
4
#define config OSC = HS,
то программатор при программировании МК запишет в биты
FOSC<3:0> регистра CONFIG1H значение 00102.
Таблица 2
Обозначение
режима
LP
ХТ
HS
HSPLL
RC
RCIO
INTIO1
INTIO2
EС
ECIO
Конфигурация модуля ГТИ на языке программирования
Си
Ассемблер
#pragma config OSC=LP
#pragma config OSC=XT
#pragma config OSC=HS
#pragma config OSC=HSPLL
#pragma config OSC=RC
#pragma config OSC=RCIO6
#pragma config OSC=INTIO7
#pragma config OSC=INTIO67
#pragma config OSC=EC
#pragma config OSC=ECIO6
CONFIG OSC=LP
CONFIG OSC=XT
CONFIG OSC=HS
CONFIG OSC=HSPLL
CONFIG OSC=RC
CONFIG OSC=RCIO6
CONFIG OSC=INTIO7
CONFIG OSC=INTIO67
CONFIG OSC=EC
CONFIG OSC=ECIO6
Рис. 1. Формат регистра CONFIG1H
5
После подачи электрического питания или после аппаратного
сброса (АС) схема конфигурации модуля ГТИ считывает значение
из регистра CONFIG1H и в зависимости от значений бит FOSC<3:0>
устанавливает необходимый режим работы модуля.
Керамический и кварцевый резонаторы
В режимах XT, LP, HS и HSPLL резонатор подключается к выводам OSC1 и OSC2 (рис. 2) и совместно с конденсаторами С1 и С2 и
модулем ГТИ образуют генератор Пирса [4].
Значение резистора RF изменяется в зависимости от установленного режима работы модуля ГТИ. Резистор Rs может быть необходим для кварцевых резонаторов с АТ срезом [5]. Резисторы
обеспечивает демпфирование, необходимое для предотвращения
перевозбуждения, которое может вывести из строя кварцевый резонатор. Сигнал Sleep предназначен для выключения буфера и,
соответственно, модуля ГТИ в режиме пониженного электропотребления. Второй буфер, выходной сигнал которого обозначен
как «To Internal Logic» («К внутренним цифровым устройствам»),
предназначен для обеспечения нагрузочной способности по току.
Типовые номинальные значения для конденсаторов, с которыми производилось тестирование различных резонаторов, приводятся в документации на каждое семейство МК и, как правило, лежат
в пределах от 15 до 60 пФ. Вследствие того, что параметры резонаторов разных производителей различаются, то приведённые в документации номинальные значения ёмкостей конденсаторов являются неоптимальными и конденсаторы должны подбираться разработчиком самостоятельно. Если конденсаторы подобраны правильно, то при изменении напряжения электрического питания во всём
допускаемом диапазоне частота выходного сигнала модуля ГТИ бу-
Рис. 2. Схема подключения кварцевого
или керамического резонаторов
6
дет меняться незначительно. Чем больше номинальные значения
ёмкостей конденсаторов, тем лучше стабильность генератора, но
при этом увеличивается его время запуска.
Для резонаторов со значением резонансной частоты меньше
1 МГц следует использовать режим LP; для резонаторов со значением резонансной частоты от 1 до 4 МГц используется режим ХТ.
Производитель рекомендует для резонаторов со значением резонансной частоты больше 3,5 МГц использовать режим HS вместо
ХТ. В режиме HS может произойти перевозбуждение генератора,
поэтому в схему следует добавить демпфирующий резистор Rs.
Номинальное значение резистора следует определить экспериментально, начиная со значения 330 Ом.
Внешний тактовый генератор
В режимах HS, EC и ECIO сигнал внешнего тактового генератора подаётся на вход OSC1.
В режиме ЕС модуль ГТИ генерирует на выводе OSC2 выходной
сигнал с частотой Fosc/4, где Fosc – частота входного сигнала на
входе OSC1 (рис. 3, а). Этот выходной сигнал может использоваться для тактирования других микросхем и электронных устройств
на печатной плате. В режиме ECIO (рис. 3, б) вывод OSC2/CLKO/
RA6 используется для цифрового ввода-вывода в качестве вывода
RA6 порта А (PORTA).
а)
б)
Рис. 3. Схема подключения внешнего генератора: а – режим ЕС;
б – режим ECIO. Англ. Clock from Ext. System – сигнал
от внешнего ГТИ с частотой Fosc
7
В режиме HS схема подключения сигнала тактовой частоты такая же, как на рис. 3, но вывод OSC2 не используется.
RC-генератор
В режимах RC и RCIO в качестве ГТИ используется RC-генератор.
Для этого к входу OSC1 подключаются резистор и конденсатор в
соответствии со схемой, приведённой на рис. 4. Рекомендуемые
производителем номинальные значения элементов: 3 кОм ≤ REXT ≤
≤ 10 кОм; CEXT > 20 пФ.
RC-генератор используется в устройствах, в которых не требуется высокая стабильность тактовой частоты. Частота выходного
сигнала RC-генератора Fosc будет зависеть от значения напряжения электрического питания и температуры окружающей среды.
При изменении температуры изменяются значения сопротивления
резистора REXT и ёмкости конденсатора CEXT, в результате чего
изменяется частота выходного сигнала RC-генератора.
В режиме RC (рис. 4, а) на вывод OSC2 поступает выходной
сигнал с частотой Fosc/4. В режиме RCIO (рис. 4, б) вывод OSC2/
а)
б)
Рис. 4. Функциональная схема модуля ГТИ в режиме RC-генератора:
а – режим RC; б – режим RCIO. Internal Clock – внутренняя
тактовая частота
8
CLKO/RA6 используется для цифрового ввода-вывода в качестве
вывода RA6 порта А.
Умножитель тактовой частоты
В режиме HSPLL производится умножение тактовой частоты
входного сигнала модуля ГТИ на четыре в схеме фазовой автоматической подстройки частоты. Этот режим используется:
– при необходимости получения более высокой производительности МК при наличии только резонаторов с низкой частотой;
– для улучшения показателей проектируемого устройства по
электромагнитному излучению.
Если ГТИ находится на печатной плате и он соединён с МК, то
чем выше частота сигнала ГТИ и чем длиннее проводники, по которым проходит высокочастотный сигнал, тем интенсивней электромагнитное излучение. Для его уменьшения следует уменьшить
частоту сигнала ГТИ, а для сохранения требуемой производительности МК частоту входного сигнала, поступающего от ГТИ на МК,
следует увеличить внутри МК в модуле ФАПЧ.
Умножение тактовой частоты сигнала модуля ГТИ производится как при подключении резонатора к выводам OSC1 и OSC2, так и
при подаче на вход OSC1 внешнего сигнала.
Внутренний генератор
В режимах INTIO1 и INTIO2 для тактирования используется
блок внутренних ГТИ. В этих режимах выводы OSC1/CLKO/RA7
и OSC2/CLKO/RA6 могут использоваться для цифрового ввода-вывода в качестве выводов RA6 и RA7 порта А. Отличия режимов приведены в табл. 1.
Блок внутренних ГТИ (Internal Oscillator Block) генерирует два
сигнала тактовых импульсов с частотами 8 МГц и 31 кГц (рис. 5).
Внутренний RC-генератор, обозначенный на рис. 5 как INTRC (сокращение от англ. Internal RC Oscillator), генерирует сигнал с частотой 31 кГц. Внутренний генератор, обозначенный как INTOSC
(сокращение от англ. Internal Oscillator), генерирует сигнал с частотой 8 МГц. Многоканальный делитель частоты, обозначенный
как Рostscaler, дополнительно воспроизводит сигналы с частотами 31,25 (8МГц/256), 125 (8МГц/64), 250 и 500 кГц, а также с частотами 1, 2 и 4 МГц. Один из этих сигналов выбирается мультиплексором MUX, который программно управляется тремя битами
IRCF<2:0> регистра управления генератором OSCCON, формат
9
Рис. 5. Функциональная схема модуля ГТИ
которого приведён на рис. 6. Выходной сигнал мультиплексора
«Internal Oscillator» («внутренний генератор») поступает на второй мультиплексор, который управляется сигналами FOSC<3:0>
регистра CONFIG1H (см. рис. 1) и SCS<1:0> регистра OSCCON.
Блок внутренних ГТИ может использоваться для тактирования
МК. Для этого в битах SCS<1:0> (сокращение от англ. System Clock
Select – выбор системного тактового сигнала) регистра OSCCON
следует установить значения 102 или 112. Установка значения частоты генератора INTOSC производится посредством записи значения в биты IRCF<2:0> регистра OSCCON. Например, строка программы на языке программирования Си
OSCCON = 0b01100010;
устанавливает в качестве ГТИ для МК внутренний генератор
INTOSC с частотой тактового сигнала 4 МГц.
После того, как внутренний генератор INTOSC запущен и частота его выходного сигнала стабилизировалась, устанавливается бит
OSCCON<IOFS>. Если частота выходного сигнала остаётся нестабильной, то этот бит не устанавливается.
Частота тактового сигнала генератора INTOSC может быть умножена на четыре в схеме ФАПЧ, которая на рис. 5 обозначена как
«4xPLL» (PLL – Phase Locked Loop). Умножение частоты производится только в том случае, если установлены значения частот вы10
Рис. 6. Регистр управления генератором
ходного сигнала генератора INTOSC 4 или 8 МГц. Для включения
режима умножения следует установить шестой бит PLLEN (PLL
Enable) в регистре OSCTUNE (Oscillator Tune – настройка ГТИ),
формат которого приведён на рис. 7. Например, программный код
на языке программирования Си:
OSCCON = 0b01110010; // 8 МГц
OSCTUNEbits.PLLEN = 1; // 4x
первой строкой устанавливает частоту выходного сигнала генератора INTOSC равной 8 МГц, а второй включает умножение частоты
на четыре, в результате чего МК начинает работать на тактовой частоте 32 МГц.
Оба внутренних генератора INTRC и INTOSC могут генерировать сигнал с частотой 31 кГц (генератор INTOSC генерирует сигнал с частотой 31,25 кГц, хотя на рис. 6 указано 31 кГц), поэтому
выбор между генераторами INTRC и INTOSC для тактирования МК
11
Рис. 7. Формат регистра настройки ГТИ
определяется седьмым битом INTSRC (Internal Source – внутренний
источник) регистра OSCTUNE. Для выбора частоты тактового сигнала 31 или 31,25 кГц следует сбросить все биты IRCF<2:0> регистра OSCCON. Для выбора частоты 31,25 кГц следует установить бит
INTSRC в регистре OSCTUNE, а для выбора частоты 31 кГц его сбросить. Например, программный код на языке программирования Си
OSCCON = 0b00000010;
OSCTUNEbits.INTSRC = 1;
устанавливает в качестве ГТИ для МК генератор INTOSC с частотой 31,25 кГц, а программный код
OSCCON = 0b00000010;
OSCTUNEbits.INTSRC = 0;
устанавливает в качестве ГТИ генератор INTRC с частотой 31 кГц.
Выходной сигнал генератора INTOSC откалиброван при производстве на частоту 8 МГц. Из-за изменения значения электрического питания или условий окружающей среды частота может изме12
няться. Изменение частоты можно компенсировать её подстройкой.
Для этого предназначены биты TUN<4:0> регистра OSCTUNE.
Подстройка может производится как в сторону уменьшения, так
и в сторону увеличения частоты генератора. Для этого значение
величины подстройки записывается в биты TUN<4:0> в дополнительном коде. При сбросе всех битов подстройка не производится;
при записи значения 011112, что соответствует значению 15, будет
установлено максимальное значение частоты; при записи значения
100002, что соответствует значению минус 16, будет установлено
минимальное значение частоты.
Диапазон изменения частоты лежит в пределах 8 МГц ±11 %.
Например, программный код на языке программирования Си:
OSCCON = 0b01110010; // 8 МГц
OSCTUNE = 0b00001111; // ≈ 9 МГц
первой строкой устанавливает частоту выходного сигнала генератора
INTOSC равной 8 МГц, а второй устанавливает её максимальное отклонение, в результате чего МК начинает работать на тактовой частоте, которая приблизительно равна 9 МГц. У разных МК это значение
отличается из-за технологических погрешностей при производстве.
Запуск микроконтроллера от двух
генераторов тактовых импульсов
В МК серии PIC18 присутствует схема запуска МК от двух ГТИ,
которая позволяет уменьшить длительность периода времени с
момента подачи электрического питания и до начала работы МК.
В режимах, использующих резонатор (LP, XT, HS и HSPLL), после
АС или выхода МК из энергосберегающего режима, основной ГТИ
запускается не сразу, и на период времени его запуска тактирование МК производится от внутреннего генератора INTOSC. После
запуска основного ГТИ (его частота становится стабильной) схема
запуска МК от двух ГТИ переключает тактирование МК с внутреннего генератора INTOSC на основной ГТИ. Это позволяет начать
выполнение программы сразу после подачи электрического питания и не ожидать запуска основного ГТИ.
Схема запуска МК от двух ГТИ включается установкой седьмого бита IESO (Internal/External Oscillator Switchover) в регистре
CONFIG1H. Для этого в программе на языке программирования Си
следует добавить строку
#pragma config IESO = ON.
13
Если схема запуска МК от двух ГТИ не включена, то после подачи электрического питания МК будет находится в состоянии аппаратного сброса в течении периода времени, длительность которого
определяется таймером запуска ГТИ (Oscillator Start-up Timer или
сокращённо OST). Этот период времени нужен для запуска основного ГТИ. OST считает 1024 импульса основного ГТИ, после чего
разрешает ему тактировать МК.
Если период времени, отсчитываемый OST, истёк и основной
ГТИ тактирует МК, то будет установлен третий бит OSTS (Oscillator
Start-up Timer Time-out Status) в регистре OSCCON. Если период
времени ещё не истёк, то этот бит будет сброшен.
Схему запуска МК от двух ГТИ следует использовать только в
режимах, использующих резонаторы (LP, XT, HS и HSPLL), а во
Рис. 8. Формат регистра OSCCON микроконтроллеров K-серии
14
всех остальных режимах её следует выключить. Для выключения
схемы в программе следует добавить строку
#pragma config IESO = OFF.
Отличия микроконтроллеров K-серии
Модули ГТИ микроконтроллеров K-серии имеют следующие отличия.
1. Внутренние генераторы INTOSC и INTRC в документации [2]
обозначены как HFINTOSC (High Frequency Internal Oscillator – внутренний высокочастотный ГТИ) и LFINTOSC (Low Frequency Internal
Oscillator – внутренний низкочастотный ГТИ) соответственно.
2. Максимальное значение частоты сигнала генератора
HFINTOSC составляет 16 МГц. Значение тактовой частоты 125 кГц
отсутствует. Формат регистра OSCCON приведён на рис. 8.
3. Умножение частоты тактового сигнала на четыре в схеме
ФАПЧ осуществляется только для частот 8 и 16 МГц. Если в регистре OSCCON установлена частота 16 МГц и включено умножение
частоты на четыре, то МК будет работать на максимальной для него
тактовой частоте 64 МГц.
2. Порядок проведения лабораторной работы
1. Предварительно создайте на жёстком диске компьютера новую рабочую папку, в которой будут находится файлы создаваемой
программы.
Для выполнения лабораторной работы на персональном компьютере должны быть установлены следующие программные приложения фирмы Microchip: среда разработки MPLAB IDE и компиляторы языка Си MPLAB MCC18 или MPLAB XC 8.
2. В соответствии со своим вариантом, полученным у преподавателя, разработайте алгоритм работы программы МК. Варианты
индивидуальных заданий приведены в табл. 3.
3. В соответствии с разработанным алгоритмом работы программы МК разработайте программы на языках программирования Си
и ассемблер.
4. Соберите лабораторную установку, электрическая принципиальная схема которой приведена на рис. 9. Перечень элементов
приведён в табл. 4.
5. Произведите компиляцию программы на языке Си и выполните процедуру программирования МК.
15
Таблица 3
Варианты индивидуальных заданий
Вариант
1
2
3
4
5
6
7
8
9
10
11
Значение
низкой
частоты
ГТИ, кГц
Вид
индикатора
Сдвиг числа 1 влево
Сдвиг числа 3 влево
Сдвиг числа 7 влево
Сдвиг числа 15 влево
Сдвиг числа 1 вправо
Сдвиг числа 3 вправо
Сдвиг числа 7 вправо
Сдвиг числа 15 вправо
Счётчик от 0 до 15
Реверсивный счётчик от 15 до 0
Сдвиг числа 15 вправо и влево
Количество циклов
Значение
повторения
высокой
частоты на низкой на высокой
ГТИ, МГц
частоте
частоте
32
32,25
125
250
500
250
250
500
125
0,5
0,5
1
2
4
8
16
32
1
3
4
2
3
3
2
3
4
2
4
3
4
5
4
5
6
6
3
125
2
3
3
250
16
3
5
Таблица 4
Перечень элементов
Обозначение
DD1
Наименование
Микросхема PIC18F4520-I/P
Кол. Примечание
1
Резисторы
R1
R2 – R9
С1, С2
HL1-HL8
C1-4 0,25 Вт 5% 10 кОм
C1-4 0,25 Вт 5% 150 Ом
1
8
Конденсаторы K10-17Б 0,1 мкФ Y5V ±20%
2
Диоды Kingbright L-7104CGCK
8
Разъёмы
X1
X2
16
WAGO 256 2.5
TJ4-6P6C тип 4
1
1
Рис. 9. Электрическая принципиальная схема
лабораторной установки
6. Убедитесь в правильности работы разработанной на языке
программирования Си программы для МК.
7. Повторите пункты 5 и 6 для программы на языке программирования ассемблер.
8. Составьте отчет о выполненной лабораторной работе.
В листинге 1 приведена программа на языке программирования Си для МК PIC18F4520, которая выполняет вариант № 11 из
табл. 3. Алгоритм работы программы приведён на рис. 10. Программа сначала производит сдвиг числа 15 (000011112) влево три
раза на тактовой частоте 250 кГц и пять раз на частоте 16 МГц генератора INTOSC, а затем производит те же самые действия, только
изменяется направление сдвига. Переменная ShiftLeft определяет
направление сдвига. Если она равна «истине», то сдвиг производится влево, иначе – вправо. Переменные LowCycle и HighCycle являются счётчиками количества циклов сдвига на низкой и высокой
тактовых частотах соответственно. Если переменная HighOsc равна «истине», то тактирование МК на данный момент производится
на высокой тактовой частоте (16 МГц), иначе – на низкой (250 кГц).
17
В листинге 2 приведена программа на языке программирования
ассемблер, которая также выполняет вариант № 11 из табл. 3. Для
хранения значений логических переменных введена переменная
Flags, нулевой бит которой используется для хранения значения
переменной HighOsc, а первый бит – для хранения значения переменной ShiftLeft. Переменная j является счётчиком количества
сдвигов переменной d. Функциональное назначение всех остальных переменных такое же, как и в программе на языке программирования Си, приведённой в листинге 1.
Листинг 1.
#include <p18f4520.h>
// Тактирование от внутреннего генератора INTOSC
##pragma config OSC=INTIO67, WDT=OFF, LVP=OFF
#define DELAY 3000
void main(void)
{
static unsigned i;
static unsigned char HighOsc = 0; static unsigned char d = 15, ShiftLeft=1;
static unsigned char HighCycle=0, LowCycle=0;
TRISD = 0;
OSCCON = 0b00100010; // 250 кГц
while(1)
{
LATD = d; // Временная задержка
for(i = 0; i <= DELAY; i++);
// Сдвиг
d = ShiftLeft ? d << 1: d >> 1;
if(d)
continue;
HighCycle++;
LowCycle++;
d = ShiftLeft ? 15: 0xF0;
if(HighOsc && HighCycle == 5)
{
OSCCON = 0b00100010; // 250 кГц
HighOsc = LowCycle = 0;
18
OSCTUNEbits.PLLEN = 0;
// Переключение направления сдвига
ShiftLeft = !ShiftLeft;
d = ShiftLeft ? 15: 0xF0;
}
if (!HighOsc && LowCycle == 3)
{
OSCCON = 0b01100010; // 4 MГц
OSCTUNEbits.PLLEN = 1; // 16 МГц
HighCycle = 0;
HighOsc = 1;
}
}
}
Начало
Инициализация переменных
Бесконечный рабочий цикл
Вывод данных в порт D
Временная задержка
Сдвиг данных
d=0?
нет
да
LowCycle = LowCycle + 1
HighCycle = HighCycle+1
1
Рис. 10. Алгоритм работы программы (начало)
19
1
ShiftLeft=1?
нет
d=15
HighOsc=1
и HighCycle=5?
D=F0h
нет
Установка тактовой частоты 250 кГц
HighOsc=0
LowCycle=0
Переключение направления сдвига
ShiftLeft=1?
d=15
HighOsc=0
и LowCycle=3?
d=F0h
нет
да
Установка
тактовой частоты 16 МГц
HighCycle=0
HighOsc=1
Бесконечный рабочий цикл
конец
Рис. 10. Алгоритм работы программы (окончание)
20
Листинг 2.
list p = 18f4520
include "p18f4520.inc"
config OSC=INTIO67, WDT=OFF, LVP=OFF
cblock 0
Flags; ShiftLeft, HighOsc
d
i:2
DELAY:2
j; Счётчик количества сдвигов
HighCycle
LowCycle
endc
org 0
clrf TRISD, 0
movlw B'00100010'
movwf OSCCON, 0; 250 кГц
movlw.15; d = 15
movwf d, 0
clrf i, 0; i = 0
clrf i + 1, 0
movlw 0xB8; Delay=3000=BB8h
movwf DELAY, 0
movlw 0x0B
movwf DELAY + 1, 0
clrf j, 0
clrf HighCycle, 0
clrf LowCycle, 0
movlw 2; Flags = 2,
movwf Flags, 0; ShiftLeft=1,HighOsc=0
MainLoop
movff d, LATD; LATD = d
incf i, 1, 0; i++
btfsc STATUS, C
incf i + 1, 1, 0
; i = Delay?
; Сначала сравниваются старшие байты
movf DELAY + 1, 0, 0; WREG = Bh
21
cpfseq i + 1, 0
bra MainLoop
; Старшие байты равны, поэтому дальше
; сравниваются младшие байты
movf DELAY, 0, 0; WREG = B8h
cpfseq i, 0
bra MainLoop
; i = Delay
clrf i, 0; i = 0
clrf i + 1, 0
btfss Flags, 1; ShiftLeft = 1?
rrncf d, 1, 0; ShiftLeft=0, d>>=1;
btfsc Flags, 1; ShiftLeft = 0?
rlncf d, 1, 0; ShiftLeft=1, d<<=1;
incf j, 1, 0; j++
btfss j, 3, 0; j = 8?
bra MainLoop; j != 8
; j = 8
clrf j, 0; j = 0
incf LowCycle, 1, 0; LowCycle++;
incf HighCycle, 1, 0; HighCycle++;
; if (!HighOsc && LowCycle == 3)
btfsc Flags, 0, 0; HighOsc = 0?
bra CheckHigh
; HighOsc = 0
movlw 3; LowCycle = 3?
cpfseq LowCycle, 0
bra CheckHigh
; HighOsc = 0 и LowCycle = 3
movlw B'01100010'
movwf OSCCON, 0; 4 МГц
bsf OSCTUNE, PLLEN; 16 МГц
clrf HighCycle, 0
bsf Flags, 0; HighOsc = 1
CheckHigh
; if(HighOsc && HighCycle == 5)
btfss Flags, 0, 0; HighOsc = 1?
bra MainLoop
; HighOsc = 1
22
movlw 5; HighCycle = 5?
cpfseq HighCycle, 0
bra MainLoop
; HighOsc = 1 и HighCycle = 5
movlw B'00100010'
movwf OSCCON, 0; 250 кГц
clrf LowCycle, 0
bcf OSCTUNE, PLLEN; Выкл. ФАПЧ
bcf Flags, 0, 0; HighOsc = 0
btg Flags, 1, 0; ShiftLeft = !ShiftLeft;
; d = ShiftLeft ? 15: 0xF0;
movlw.15; d = 15
movwf d, 0
movlw 0xF0
btfss Flags, 1
movwf d, 0
bra MainLoop
end
3. Оформление отчета
Отчет должен быть оформлен в соответствии с требованиями
нормоконтроля и должен содержать:
– цель работы;
– задание на лабораторную работу;
– электрическую принципиальную схему лабораторной установки;
– блок-схемы алгоритмов программ;
– тексты программ на языках программирования Си и ассемблер;
– выводы о проделанной работе.
Контрольные вопросы
1. Для чего предназначен ГТИ?
2. Что влияет на стабильность частоты ГТИ?
3. К чему может привести нестабильность частоты сигнала ГТИ?
4. Перечислите способы повышения стабильности частоты сигнала ГТИ.
5. Приведите достоинства и недостатки работы МК на высокой
тактовой частоте.
23
Библиографический список
1. Microchip PIC18F2420/2520/4420/4520 Data Sheet. Техническое описание микроконтроллеров, сайт производителя www.
microchip.com.
2. Microchip PIC18F23K20/24K20/25K20/26K20/43K20/44K20
/45K20/ 46K20 Data Sheet. Техническое описание микроконтроллеров, сайт производителя www.microchip.com.
3. Microchip PIC18F8722 Family Data Sheet. Техническое описание микроконтроллеров, сайт производителя www.microchip.com.
4. Титце У., Шенк К. Полупроводниковая схемотехника. 12-е
изд. Том II. Пер. с нем. М.: ДМК Пресс, 2007. 942 с.: ил.
5. Андросова В. Г., Банков В. Н., Дикиджи А. Н. и др. Справочник по кварцевым резонаторам / под ред. П. Г. Позднякова. М.:
Связь, 1978. 288 с.
СОДЕРЖАНИЕ
Лабораторная работа................................................................... 1. Методические указания............................................................ 2. Порядок проведения лабораторной работы.................................. 3. Оформление отчета . ................................................................ Контрольные вопросы.................................................................. Библиографический список.......................................................... 24
3
3
15
23
23
24
Документ
Категория
Без категории
Просмотров
1
Размер файла
2 464 Кб
Теги
malakhanov
1/--страниц
Пожаловаться на содержимое документа