Цель работы и подготовка к работе
Целью работы является изучение особенностей структуры и программирование периферийных устройств микроконтроллеров семейства MSP430 на примере модуля тактирования и портов ввода/вывода.
С инструкцией, содержащей требования охраны труда, студенты знакомятся в лаборатории.
Подготовка к работе осуществляется до прихода в лабораторию и включает в себя изучение данных методических указаний и рекомендованной литературы, подготовку ответов на контрольные вопросы, составление программ в соответствие с вариантами заданий.
1. Сигналы микроконтроллера MSP430
Все сигналы (выводы, контакты) микроконтроллера MSP430 можно разделить на несколько групп.
Группа выводов для подключения источников питания:- Avcc – источник питания для аналоговой части, положительный полюс; AVss – источник питания для аналоговой части, отрицательный полюс; DVcc – источник питания для цифровой части, положительный полюс; DVss – источник питания для цифровой части, отрицательный полюс.
Раздельное питание цифровой и аналоговой части позволяет уменьшить помехи на аналоговые цепи со стороны цифровых.
Группа выводов для подключения кварцевых резонаторов XIN, XOUT, X2IN, X2OUT. Группа сигналов управления и синхронизации. Группа сигналов для программирования микроконтроллера. Группа сигналов ввода/вывода периферийных устройств. Группа сигналов аналогового ввода/вывода. Группа сигналов цифрового ввода/вывода общего назначения.Выводы микроконтроллера могут совмещать в себе несколько функций.
Назначение всех сигналов микроконтроллера приведены в [1].
2. Модуль тактирования
Модуль тактирования формирует тактовую частоту для микроконтроллеров серии MSP430. Модуль тактирования может быть сконфигурирован для работы как без внешних элементов, так и с одним либо с двумя внешними кварцевыми или керамическими резонаторами. Все настройки модуля осуществляются с помощью программно доступных регистров, отображаемых на основной памяти. Назначение и адреса этих регистров в пространстве памяти показаны в таблице 2, а описание отдельных битов регистров – в таблице 3. Функциональная схема модуля тактирования для устройств семейства MSP430 и показана на рисунке 1.
|
Рисунок 1. Функциональная схема модуля тактирования. |
Модуль тактирования может формировать три тактовых сигнала:
ACLK – вспомогательная частота. Частота ACLK задаётся генератором LFXT1 и может быть выбрана в качестве источника тактирования для различных встроенных периферийных модулей. Частота ACLK может быть разделена на 1, 2,4, или 8. MCLK – основной источник тактирования. В качестве источника для MCLK могут служить генераторы LFXT1, XT2 (если присутствует), или DCO. Частота MCLK может быть разделена на 1, 2,4, или 8. MCLK используется ядром CPU и системными устройствами. SMCLK – дополнительная тактовая частота. В качестве источника для SMCLK программно можно выбрать XT2 (если присутствует), или DCO. Частота SMCLK может быть разделена на 1, 2,4, или 8. SMCLK может служить источником тактирования различных встроенных периферийных модулей.Источниками тактирующих сигналов являются три генератора:
- генератор LFXT1; генератор XT2; генератор с цифровым управлением DCO (Digitally-Controlled Oscillator).
Эти генераторы формируют сигналы LFXT1CLK, XT2CLK и DCOCLK, которые затем с помощью программно-управляемых мультиплексоров распределяются на ACLK, MCLK и SMCLK.
2.1. Генератор LFXT1
Генератор LFXT1 может быть использован совместно с высокочастотным либо низкочастотным кварцевым или керамическим резонатором, который подключается к выводам XIN и XOUT.
Генератор может работать в трех режимах: высокочастотном, низкочастотном и с тактированием от внешнего сигнала.
В высокочастотном (High Frequency – HF) режиме необходимо подключить кварц с частотой основного резонанса до 8 МГц. При этом надо переключить генератор на этот режим, установив бит XTS=1 в регистре BCSTL1. Для нормальной работы генератора в высокочастотном режиме может потребоваться подключение внешних конденсаторов к выводам XIN и XOUT.
В низкочастотном режиме (Low Frequency – LF) генератор LFXT1 обеспечивает сверхнизкое энергопотребление. При этом используется «часовой» кварцевый резонатор с частотой 32768 Гц. Переключение в этот режим осуществляется сбросом бита XTS=0 в регистре BCSTL1. В режиме LF используются внутренние конденсаторы, подключенные к выводам XIN и XOUT. При необходимости могут быть добавлены внешние конденсаторы.
Кроме этого, для работы LFXT1 может использоваться внешний сигнал тактирования с частотой от 1 Гц до 8 МГц, который подаётся на вывод XIN (при этом кварцевый резонатор не подключается).
Генератор LFXT1 может быть программно отключен установкой бита OSCOFF=1 в регистре статуса SR.
2.2. Генератор ХТ2
В качестве источника тактирующего сигнала может быть выбран генератор ХТ2. Его характеристики идентичны характеристикам генератора LFXT1 в режиме HF, за исключением того, что генератор ХТ2 не имеет встроенных нагрузочных конденсаторов. Требуемые для работы высокочастотного резонатора нагрузочные конденсаторы должны быть установлены извне. Генератор ХТ2 также может использовать внешнюю тактовую частоту, подаваемую на вход XT2IN.
Генератор ХТ2 можно отключить установкой бита XT2OFF=1 в регистре BCSCTL1.
2.3. Генератор с цифровым управлением (DCO)
Генератор с цифровым управлением DCO – это генератор RC-типа, который служит источником сигнала DCOCLK. Частота сигнала DCOCLK может регулироваться программно битами DCOx, MODx регистра DCOCTL и RSELx регистра BCSCTL1. Генератор DCO стартует при включении питания микроконтроллера (после сброса) на частоте порядка 800 кГц. Именно этот генератор является источником сигнала MCLK после сброса микроконтроллера.
Частота RC-генератора DCO определяется номиналом частотозадающего резистора, подключаемого к генератору. Резистор может быть внешним, при этом необходимо установить бит DCOR=1 в регистре BCSCTL2. Если бит DCOR=0, то используется внутренний резистор. В случае подключения внутреннего резистора частота генератора задается битами тремя RSELx в регистре BCSCTL1. Окончательно частота сигнала DCOCLK определяется тремя битами DCOx делителя частоты, которые находятся в регистре DCOCTL. На рисунке 2 показана зависимость частоты сигнала DCOCLK от DCOx и RSELx.
|
Рисунок 2. Зависимость частоты DCOCLK от DCOx и RSELx. |
Модулятор, находящийся в составе модуля DCO, смешивает две соседние частоты, что приводит к расширению спектра сигнала DCOCLK и уменьшению электромагнитной интерференции. Управление модулятором осуществляется с помощью битов MODx в регистре DCOCTL.
Коммутация сигналов DCOCLK, LFXT1CLK, XT2CLK на тактовые сигналы ACLK, MCLK, SMCLK осуществляется с помощью мультиплексоров, которые управляются битами SELMx и SELS регистра BCSCTL2. Частота сигналов LFXT1CLK, XT2CLK, DCOCLK может быть поделена на 1, 2, 4, или 8 с помощью делителей частоты (см. рисунок 1). Коэффициент деления частоты задается битами DIVAx (регистр BCSCTL1), DIVMx и DIVSx (регистр BCSCTL2).
В модуле тактирования имеется возможность определения неисправности генераторов. Неисправность определяется, если сигнал XT2CLK, либо сигнал LFXT1CLK (в режиме HF) отсутствует в течение приблизительно 50 мкс. Когда обнаруживается неисправность, происходит автоматическое переключение MCLK на работу от DCO, что позволяет продолжить работу даже при неисправном кварцевом генераторе.
Если установлены флаги OFIFG (в регистре IFG1) и OFIE (в регистре IE1), происходит запрос немаскируемого прерывания NMI (адрес FFFCh). Процедура обработки NMI-прерывания может проверить флаг OFIFG, что позволит выявить возникшую неисправность генератора. Очистка флага OFIFG должна производится пользователем программным образом.
Определение неисправности генератора LFXT1 в режиме LF не производится.
3. Порты ввода/вывода
Сигналы цифрового ввода/вывода общего назначения группируются по 8 выводов. Эти группы называются портами ввода/вывода. Микроконтроллеры семейства MSP430 могут иметь до 6 портов цифровых входов/выходов от Р1 до Р6. Каждый вывод индивидуально конфигурируется как вход или выход и каждая линия ввода/вывода может быть индивидуально считана или записана.
На рисунке 3 показана функциональная схема одной линии порта ввода/вывода. В составе схемы имеются тристабильные входные и выходные буферы и мультиплексор, позволяющий переключать функции порта. Входной буфер имеет на входе триггер Шмитта, который позволяет повысить помехоустойчивость системы и исключить ложные срабатывания линии порта.
|
Рисунок 3. Функциональная схема порта ввода/вывода. |
Программирование портов ввода-вывода осуществляется с помощью программно-доступных 8-разрядных регистров. Напомним, что эти регистры отображаются в пространстве основной памяти с адресами от 010h до 0FFh (см. методические указание к лабораторной работе № 1 «Изучение системы команд микроконтроллеров семейства MSP430»). Биты в регистрах нумеруются справа налево, начиная с нуля (младшего значащего бита). Адреса регистров портов ввода/вывода общего назначения в пространстве памяти, тип доступа и их исходное состояние приведены в таблице 4.
3.1. Регистры выбора функции PxSEL
Как уже говорилось выше, выводы микроконтроллера могут совмещать в себе несколько функций. Каждый бит PxSEL определяет, как будет использован вывод – в качестве порта ввода/вывода общего назначения или в качестве функции периферийного модуля. Если бит равен 0, то для вывода выбирается функция ввода/вывода. Если бит равен 1, то для вывода выбирается функция периферийного модуля.
Следует заметить, что установка PxSEL=1 автоматически не определяет направление передачи информации для вывода. Некоторые функции периферийных модулей требуют конфигурирования битов PxDIR для выбора направления, необходимого для правильной работы этой функции.
3.2. Регистры направления PxDIR
Каждый бит в каждом регистре PxDIR позволяет выбрать направление передачи информации по линии порта ввода/вывода, независимо от выбранной для этой линии функции. Если PxDIR. n=0, то линия n порта Px переключается на ввод; если PxDIR. n=1, то линия переключается на вывод. Например, команда
MOV. B #0xF0, P3DIR
позволяет установить линии 0 – 3 на ввод, а линии 4 – 7 порта P3 – на вывод информации.
3.3. Регистры ввода PxIN
Каждый бит в каждом регистре PxIN отражает величину входного сигнала на соответствующей линии ввода/вывода, когда она сконфигурирована на функцию ввода. Если PxIN. n=0, то входной сигнал имеет низкий уровень; если PxIN. n=1, то входной сигнал имеет высокий уровень.
Когда вывод порта работает как вход периферии, входным сигналом периферии является зафиксированное в триггере-защелке представление сигнала на выводе устройства. Когда PxSELx=1, внутренний входной сигнал соответствует сигналу на ножке. Однако, если PxSELx=0, на входе периферии сохраняется значение входного сигнала на выводе устройства, имевшееся перед сбросом бита PxSELx.
3.4. Регистры вывода PxOUT
Каждый бит в каждом регистре PxOUT содержит значение, которое будет выведено на соответствующую линию ввода/вывода, сконфигурированную как выход. Если PxOUT. n=0, то выходной сигнал имеет низкий уровень; если PxOUT. n=1, то выходной сигнал имеет высокий уровень. . Например, если нужно вывести в порт P3 число с «1» в 3 и 5 битах, то удобно использовать следующую запись на языке ассемблер
MOV. B #0x28, P3OUT,
причем для исключения возможной ошибки в вычислениях число 0x28 удобно представить с помощью операторов логического сдвига. Тогда эта запись будет выглядеть следующим образом:
MOV. B #((1<<3)|(1<<5)), P3OUT.
3.5. Регистры флагов прерывания P1IFG, P2IFG
Порты Р1 и Р2 имеют возможность вызывать прерывание. Для каждой линии ввода/вывода портов Р1 и Р2 можно индивидуально разрешить прерывания и сконфигурировать их так, чтобы прерывание происходило по фронту или спаду входного сигнала. Все линии ввода/вывода порта Р1 являются источником вектора прерывания с адресом 0FFE8h, а все линии ввода/вывода порта Р2 – источником вектора прерывания с адресом 0FFE2h. Определить источник прерывания – Р1 или Р2 – можно путем проверки регистра PxIFG.
Каждый бит PxIFG - это флаг прерывания соответствующей линии ввода/вывода, устанавливаемый, когда происходит перепад выбранного входного сигнала на линии. Все флаги прерывания PxIFG запрашивают прерывание, когда установлен бит GIE разрешения прерываний в регистре статуса SR, и установлен соответствующий бит в регистре PxIE. Каждый флаг PxIFG должен быть сброшен программно. Пользователь также может устанавливать флаги PxIFG, тем самым обеспечивая возможность генерации программно-инициированного прерывания.
Если PxIFG. n=1, то есть запрос на прерывание; если PxOUT. n=0, то запроса ни прерывание нет.
Прерывания вызывают только перепады уровней, а не статические уровни. Если любой флаг PxIFG оказывается установленным во время выполнения процедуры обработки прерывания Рх или устанавливается после команды RETI выполняемой процедуры обработки прерывания Рх, установка флага PxIFGx генерирует другое прерывание. Таким образом, гарантируется, что каждый перепад уровня будет учтен.
Запись в P1OUT, P1DIR, P2OUT или P2DIR может привести к установке соответствующих флагов P1IFG или P2IFG.
Любое событие вызова внешнего прерывания должно иметь длительность, больше или равную 1,5 MCLK, чтобы быть гарантировано принятым и вызвать установку соответствующего флага прерывания.
3.6. Регистры выбора фронта прерывания P1IES, P2IES
Каждый бит PxIES позволяет выбрать, по какому фронту сигнала будет происходить прерывание для соответствующей линии порта ввода/вывода.
Если бит PxIES. n=0, то флаг PxIFG. n устанавливается при изменении уровня сигнала с низкого на высокий (по фронту сигнала); если бит PxIES. n=1, то флаг PxIFG. n устанавливается при изменении уровня сигнала с высокого на низкий (по спаду сигнала). Запись в P1IES или P2IES может привести к установке соответствующих флагов прерывания; в таблице 1 показана такая возможность.
Таблица 1.
PxIESx | PxINx | PxIFGx |
0→1 | 0 | Может быть установлен |
0→1 | 1 | Не изменяется |
1→0 | 0 | Не изменяется |
1→0 | 1 | Может быть установлен |
3.7. Регистры разрешения прерываний P1IE, P2IE
Каждый бит в регистре PxIE разрешает прерывание от соответствующего флага прерываний регистра PxIFG. Если бит PxIE. n=0, то прерывание запрещено, если бит PxIE. n=1, то прерывание разрешено.
Таблица 2. Регистры модуля тактирования.
Регистр | Обозначение | Тип доступа | Адрес | Исходное состояние |
Регистр управления DCO | DCOCTL | Чтение/запись | 056h | 060h |
Регистр 1 управления системой основного тактирования | BCSCTL1 | Чтение/запись | 057h | 084h |
Регистр 2 управления системой основного тактирования | BCSCTL2 | Чтение/запись | 058h | 000h |
Регистр 1 разрешения прерываний SFR | IE1 | Чтение/запись | 000h | 000h |
Регистр 1 флагов прерываний SFR | IFG1 | Чтение/запись | 002h | 000h |
Регистр статуса | SR | Чтение/запись | - | 000h |
Таблица 3. Описание битов регистров модуля тактирования.
Регистр | Номер бита | Наименование бита | Описание |
DCOCTL | 7 – 5 | DCOx | Выбор частоты DCO. |
4 – 0 | MODx | Выбор модулятора. | |
BCSCTL1 | 7 | XT2OFF | Выключение генератора XT2. 0 – XT2 включен; 1 – XT2 выключен, если он не используется для MCLK или SMCLK |
6 | XTS | Выбор режима LFXT1. 0 – режим низкой частоты; 1 – режим высокой частоты. | |
5 – 4 | DIVAx | Коэффициент деления для ACLK. 00 – «/1»; 01 – «/2»; 10 – «/4»; 11 – «/8». | |
3 | XT5V | Не используется. | |
2 – 0 | RSELx | Выбор частотозадающего резистора DCO. Низшая номинальная частота выбирается при RSELx=0. | |
BCSCTL2 | 7 – 6 | SELMx | Выбор источника для MCLK. 00 – источник DCOCLK; 01 – источник DCOCLK; 10 – источник XT2CLK; 11 – источник LFXT1CLK. |
Таблица 3.(Окончание) | |||
BCSCTL2 | 5 – 4 | DIVMx | Коэффициент деления для MCLK. 00 – «/1»; 01 – «/2»; 10 – «/4»; 11 – «/8». |
3 | SELS | Выбор источника для SMCLK. 0 – источник DCOCLK; 1 – источник XT2CLK. | |
2 – 1 | DIVSx | Коэффициент деления для SMCLK. 00 – «/1»; 01 – «/2»; 10 – «/4»; 11 – «/8». | |
0 | DCOR | Выбор частотозадающего резистора для DCO. 0 – внутренний; 1 – внешний. | |
IE1 | 1 | OFIE | Разрешение прерывания при возникновении ошибки генератора. 0 – прерывание запрещено; 1 – прерывание разрешено. |
IFG1 | 1 | OFIFG | Флаг ошибки генератора. 0 – нет ошибки; 1 – есть ошибка. |
SR | 7 | SCG1 | Отключение SMCLK. 0 – SMCLK включен; 1 – SMCLK отключен. |
6 | SCG0 | Отключение DCO. 0 – DCO включен; 1 – DCO выключен, если он не используется для MCLK или SMCLK. | |
5 | OSCOFF | Отключение генератора LFXT1. 0 – LFXT1 включен; 1 – LFXT1 выключен, если он не используется для MCLK или SMCLK. |
Таблица 4. Регистры цифровых входов-выходов.
Регистр | Краткое обозначение | Адрес | Тип доступа | Исходное состояние |
Ввод | P1IN | 020h | Только чтение | - |
Вывод | P10UT | 021h | Чтение/запись | Не изменяется |
Направление | P1DIR | 022h | Чтение/запись | Сброс с PUC |
Таблица 4.(Окончание) | ||||
Флаг прерывания | P1IFG | 023h | Чтение/запись | Сброс с PUC |
Выбор фронта прерывания | P1IES | 024h | Чтение/запись | Не изменяется |
Разрешение прерывания | P1IE | 025h | Чтение/запись | Сброс с PUC |
Выбор порта | P1SEL | 026h | Чтение/запись | Сброс с PUC |
Ввод | P2IN | 028h | Только чтение | - |
Вывод | P2OUT | 029h | Чтение/запись | Не изменяется |
Направление | P2DIR | 02Ah | Чтение/запись | Сброс с PUC |
Флаг прерывания | P2IFG | 02Bh | Чтение/запись | Сброс с PUC |
Выбор фронта преравания | P2IES | 02Ch | Чтение/запись | Не изменяется |
Разрешение прерывания | P2IE | 02Dh | Чтение/запись | Сброс с PUC |
Выбор порта | P2SEL | 02Eh | Чтение/запись | Сброс с PUC |
Ввод | P3IN | 018h | Только чтение | - |
Вывод | P3OUT | 019h | Чтение/запись | Не изменяется |
Направление | P3DIR | 01Ah | Чтение/запись | Сброс с PUC |
Выбор порта | P3SEL | 01Bh | Чтение/запись | Сброс с PUC |
Ввод | P4IN | 01Ch | Только чтение | - |
Вывод | P4OUT | 01Dh | Чтение/запись | Не изменяется |
Направление | P4DIR | 01Eh | Чтение/запись | Сброс с PUC |
Выбор порта | P4SEL | 01Fh | Чтение/запись | Сброс с PUC |
Ввод | P5IN | 030h | Только чтение | - |
Вывод | P5OUT | 031h | Чтение/запись | Не изменяется |
Направление | P5DIR | 032h | Чтение/запись | Сброс с PUC |
Выбор порта | P5SEL | 033h | Чтение/запись | Сброс с PUC |
Ввод | P6IN | 034h | Только чтение | - |
Вывод | P6OUT | 035h | Чтение/запись | Не изменяется |
Направление | P6DIR | 036h | Чтение/запись | Сброс с PUC |
Выбор порта | P6SEL | 037h | Чтение/запись | Сброс с PUC |
4. Описание лабораторной установки
При выполнении лабораторной работы используется отладочная плата MSP430-169stk, электрическая принципиальная схема которой показана на рисунке 5, а внешний вид – на рисунке 4. В состав отладочной платы входит микроконтроллер MSP430F169 (U6), входные (U5) и выходные (U3, U4, U7) усилители аналоговых сигналов, стабилизаторы напряжения питания платы (VR1, VR2), жидкокристаллический индикатор, преобразователь уровня сигналов последовательного порта RS323 (U2), интерфейс JTAG для подключения программатора, модуль внешней Flash-памяти (U1), кнопки (B1, B1, B3) для ручного формирования сигналов, красный (LED1) и зеленый (LED2) светодиоды, подключенные к портам микроконтроллера. Кроме того, на плате установлены кварцевые резонаторы Q1 частотой 32768 Гц («часовой»), и Q3 частотой 6 МГц.
В данной лабораторной работе потребуется использование кнопок B1, B2, B3 которые подключены к портам Р1.5 (вывод 17), Р1.6 (вывод 18), Р1.7 (вывод 19) соответственно, а также красного светодиода LED1, подключенного к порту Р3.6 (вывод 34), и зеленого светодиода подключенного к порту Р3.7 (вывод 35).
Для подготовки отладочной платы к работе необходимо подключить программатор к интерфейсу JTAG на плате и источник питания к разъему «PWR_JACK», при этом должен загореться светодиод «PWR». После включения питания платы программатор подключается по интерфейсу USB к персональному компьютеру c установленным на нем программным обеспечением «IAR Embedded Workbench».
|
Рисунок 4. Лабораторный макет MSP430-169stk |
6. Задания к лабораторной работе.
В соответствии с выбранным вариантом задания составить блок-схему программы и написать программу на языке ассемблера.
Разработать программу, состоящую из двух модулей.
Модуль инициализации генератора тактовых частот. Необходимо сформировать на выходах MCLK, SMCLK и ACLK частоты в соответствии с вариантом задания. При инициализации необходимо дождаться стабильной работы генератора (проверка бита OFIFG в регистре IFG1).
Вариант | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
ACLK | LFXT1 | LFXT1/2 | LFXT1/4 | LFXT1/8 | LFXT1 | LFXT1/2 | LFXT1/4 | LFXT1/8 |
MCLK | XT2 | XT2/2 | XT2/4 | XT2/8 | DCO | DCO/2 | DCO/4 | DCO/8 |
SMCLK | DCO | DCO/2 | DCO/4 | DCO/8 | XT2 | XT2/2 | XT2/4 | XT2/8 |
Модуль, обеспечивающий работу контроллера с кнопками B1, B2 и B3, и светодиодами LED1 и LED2, в соответствии с вариантом:
1. Светодиоды отображают значения кнопок B2 и B3 (при нажатии на кнопку и её удержании горит соответствующий светодиод). Если при этом нажата кнопка B1, то оба светодиода не горят.
2. Светодиоды отображают значения кнопок B2 и B3 в инверсном виде (при нажатии на кнопку и её удержании соответствующий светодиод не горит). Если при этом нажата кнопка B1, то оба светодиода не горят.
3. Светодиоды отображают значения кнопок B2 и B3 (при нажатии на кнопку и её удержании горит соответствующий светодиод). Если при этом нажата кнопка B1, то оба светодиода горят.
4. Светодиоды отображают значения кнопок B2 и B3 в инверсном виде (при нажатии на кнопку и её удержании соответствующий светодиод не горит). Если при этом нажата кнопка B1, то оба светодиода горят.
5. При нажатии на кнопку B2 или B3 загорается соответствующий светодиод и остается в этом состоянии до нажатия на кнопку B1.
6. При нажатии на кнопку B2 или B3 гаснет соответствующий светодиод и остается в этом состоянии до нажатия на кнопку B1.
7. При нажатии на кнопку B2 или B3 загорается соответствующий светодиод и остается в этом состоянии, при этом светодиод, соответствующий другой кнопке, гаснет.
8. При нажатии на кнопку B2 или B3 гаснет соответствующий светодиод и остается в этом состоянии, при этом светодиод, соответствующий другой кнопке, загорается.
Пояснения к написанию программы.
1. В начале программы необходимо разместить две строчки – подключения API-файла и остановки сторожевого таймера.
#include "msp430x16x. h" ; подключаем API библиотеку.
SetupWDT: mov #WDTPW+WDTHOLD, &WDTCTL ; Остановка WDT
2.Пример инициализации генератора LFXT1.
В квадратных скобках записана та же команда, но с явным указанием значений операндов. Эти записи эквивалентны.
После сброса источником частоты MCLK является генератор DCOCLK.
Типичная последовательность переключения MCLK на генератор LFXT1 или XT2:
1) Включаем нужный генератор.
2) Очищаем флаг OFIFG.
3) Ожидание порядка 50 мкс.
4) Проверяем OFIFG, и повторяем шаги с 1 по 4 пока, бит OFIFG не будет оставаться сброшенным.
; Модуль выбора LFXT1 (HF mode) для MCLK
BIC #OSCOFF, SR ; Включаем генератор.
[BIC #(1<<5), SR]
L1: BIC. B #OFIFG, &IFG1 ; Сброс бита OFIFG
[BIC. B #(1<<1), &2h]
MOV #0FFh, R15 ; Задержка
L2: DEC R15
JNZ L2
BIT. B #OFIFG, &IFG1 ; Проверка бита OFIFG
[BIT. B #2, &2h]
JNZ L1 ; В цикл, если проверка не удачная
BIS. B #SELM1+SELM0, &BCSCTL2 ; Выбор LFXT1CLK
[BIS. B #(1<<6)|(1<<7), &58h]
Контрольные вопросы.
Объясните назначение регистров портов ввода/вывода. Объясните назначение элементов на функциональной схеме порта ввода/вывода. Объясните назначение элементов на функциональной схеме модуля тактирования. Поясните назначение битов управления генераторами в регистре статуса. Почему этот регистр не отображается на основной памяти?Рекомендуемая литература
Техническая документация на микропроцессор MSP430F169 (MSP430F169.pdf). Семейство микроконтроллеров MSP430x1xx. Руководство пользователя: Пер. с англ. – М.: Серия «Библиотека Компэла». , 2004. – 368 с. MSP430x1xx Family. User’s Guide (slau049f. pdf).
|
Рисунок 5. Принципиальная схема лабораторной установки |







