Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
05.03.2016
Размер:
231.69 Кб
Скачать

Министерство образования и науки Украины Государственное высшее учебное заведение «Приазовский государственный технический университет» Кафедра автоматизации и компьютерных технологий

Сокол С.П.

УПРАВЛЕНИЕ ТАКТИРОВАНИЕМ МИКРОКОНТРОЛЛЕРОВ MSP430 И ИХ ЭНЕРГОПОТРЕБЛЕНИЕМ

Методические указания к выполнению лабораторной работы

по курсу «Микропроцессорная техника» для студентов направления 6.050202 «Автоматизация и

компьютерно-интегрированные технологии» дневной и заочной форм обучения

Мариуполь 2014

УДК 658.5

Управление тактированием микроконтроллеров MSP430 и их энергопотреблением : Методические указания к выполнению лабораторной работы по курсу «Микропроцессорная техника» для студентов направления подготовки 6.050202 «Автоматизация и компьютерно-интегрированные технологии» дневной и заочной форм обучения. / сост. С.П. Сокол. – Мариуполь: ГВУЗ «ПГТУ», 2014.- 14 с.

Сформулированы цель и задачи лабораторной работы. Изложены необходимые теоретические сведения для

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

Составитель: С.П. Сокол ст. преподаватель

Рецензент: А.А. Койфман, ст. преподаватель

Утверждено на заседании кафедры АиКТ

Протокол № ___ от ____ 2014 г.

Утверждено методической комиссией факультета информационных технологий,

протокол № 3 от 05 февраля 2014 г.

©ГВУЗ «ПГТУ», 2014

2

 

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ....................................................................................

4

1

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ ....................

5

2

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ..........................

11

3

ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА.........................

12

4

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ.......................................

13

5

СПИСОК РЕКОМЕНДОВАННЫХ ИСТОЧНИКОВ..............

13

3

ВВЕДЕНИЕ

Лабораторная работа № 3.

Целью выполнения данной лабораторной работы является ознакомление студентов с модулем тактирования и режимами работы микроконтроллеров MSP430.

Задачи лабораторной работы:

-ознакомление с сигналами, генерируемыми модулем тактирования;

-получение навыков конфигурирования регистров модуля тактирования и управления режимом работы микроконтроллера;

-получение общих сведений о программировании модуля тактирования при помощи программной среды IAR Embedded Workbench.

Лабораторная работа является третьей в курсе «Микропроцессорная техника» и содержит информацию по программированию микроконтроллеров модуля тактирования и управления режимами работы микроконтроллеров MSP430 на языке С.

На выполнение данной работы отводится 4 академических

часа.

Для выполнения лабораторной работы студентам требуется наличие компьютера с установленной программой IAR Embedded Workbench for MSP430, которую можно найти в интернете на официальном сайте, либо на сервере кафедры.

Теоретический материал для выполнения данной лабораторной работы рассматривается в лекционном курсе и приведен в конспекте лекций.

Результатом выполнения лабораторной работы является оформленный по требованиям и сданный отчет.

Максимальное количество баллов, которое студент может получить за выполнение данной лабораторной работы – 10.

4

1 ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

Рассмотрим систему тактирования микроконтроллеров подсемейства MSP430G2xxx (в других подсемействах функции

исостав модуля тактирования могут отличаться).

Вподсемействе MSP430G2xxx для тактирования процессора и периферийных модулей используется три источника:

- LFXT1CLK – низкочастотный генератор, который может работать с кварцевым резонатором или с внешним тактовым сигналом с частотой 32768 кГц.

- DCOCLK – встроенный генератор с цифровым управлением частотой.

- VLOCLK – встроенный генератор с частотой 12 кГц, предназначенный для создания приложений с очень низким энергопотреблением.

При этом на основании этих трех источников может формироваться три тактовых сигнала:

- MCLK – основной тактовый сигнал, используемый для тактирования ЦПУ. Источник его выбирается программно: LFXT1CLK, DCOCLK или VLOCLK. При этом частота может быть при необходимости программно поделена на 2, 4 или 8.

- ACLK – вспомогательный тактовый сигнал, применяемый для тактирования отдельных периферийных модулей: таймеров, АЦП и т.д. Источник его также выбирается программно: LFXT1CLK или VLOCLK. Частота может быть уменьшена в 2, 4 или 8 раз.

- SMCLK – дополнительный тактовый сигнал, также применяемый для тактирования отдельных периферийных модулей. Источник его выбирается программно: LFXT1CLK, DCOCLK или VLOCLK, частота может быть программно поделена на 2, 4 или 8.

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

5

При запуске микроконтроллера ЦПУ тактируется от источника DCOCLK, по умолчанию имеющего частоту около

1,1 МГц.

Для управления модулем тактирования в котроллерах семейства MSP430 имеется 7 регистров:

-DCOCTL – регистр управления частотой сигнала

DCOCLK.

-BCSCTL1, BCSCTL2 и BCSCTL3 – регистры управления модуля тактирования.

-IE1 – регистр разрешения прерываний 1 (используется совместно с другими модулями).

-IFG1 – регистр флагов прерываний 1 (используется совместно с другими модулями).

-SR – статусный регистр контроллера (используется также для выполнения других функций).

В данном руководстве будут приведены только те биты, которые необходимы для выполнения данной т последующих лабораторных работ, более подробную информацию можно найти в дополнительной литературе [2]

В регистре BCSCTL1 понадобятся биты DIVA1 и DIVA0, которые в паре определяют коэффициент деления сигнала

ACLK:

-при DIVA1 = 0 и DIVA0 = 0 делитель равен 1;

-при DIVA1 = 0 и DIVA0 = 1 делитель равен 2;

-при DIVA1 = 1 и DIVA0 = 0 делитель равен 4;

-при DIVA1 = 1 и DIVA0 = 1 делитель равен 8.

В регистре BCSCTL2 будут задействованы следующие биты:

а) SELM1 и SELM0 определяют источник тактового сигнала MCLK:

-при SELM1 = 0 источником тактового сигнала MCLK является DCOCLK;

-при SELM1 = 1 источником тактового сигнала MCLK

является LFXT1CLK или VLOCLK.

При этом значение бита SELM0 не имеет значения

6

б) DIVM1 и DIVM0 задают коэффициент деления сигнала

MCLK.

-при DIVM1 = 0 и DIVM0 = 0 делитель равен 1;

-при DIVM1 = 0 и DIVM0 = 1 делитель равен 2;

-при DIVM1 = 1 и DIVM0 = 0 делитель равен 4;

-при DIVM1 = 1 и DIVM0 = 1 делитель равен 8.

в) SELS определяет источник тактового сигнала SMCLK.

-при SELS = 0 источником тактового сигнала SMCLK является DCOCLK;

-при SELS = 1 источником тактового сигнала SMCLK

является LFXT1CLK или VLOCLK.

г) DIVS1 и DIVS0 задают коэффициент деления сигнала

SMCLK.

-при DIVS1 = 0 и DIVS0 = 0 делитель равен 1;

-при DIVS1 = 0 и DIVS0 = 1 делитель равен 2;

-при DIVS1 = 1 и DIVS0 = 0 делитель равен 4;

-при DIVS1 = 1 и DIVS0 = 1 делитель равен 8.

Врегистре BCSCTL3 понадобится всего одна пара битов LFXT1S1 и LFXT1S0, посредством которой определяется источник низкочастотного тактового сигнала (LFXT1CLK или

VLOCLK).

- при LFXT1S1 = 0 и LFXT1S0 = 0 источником является

LFXT1CLK;

- комбинация LFXT1S1 = 0 и LFXT1S0 = 1 является зарезервированной;

- при LFXT1S1 = 1 и LFXT1S0 = 0 источником является

VLOCLK;

- при LFXT1S1 = 1 и LFXT1S0 = 1 источником является внешний сигнал синхронизации.

Врегистре IFG1 к модулю тактирования относится всего один бит – OFIFG, который является флагом прерывания при неисправности генератора. Он устанавливается в «1» если произошел сбой в одном или нескольких генераторах модуля тактирования. Сброс флага в «0» должен осуществляться программно.

7

Отключение того или иного тактового сигнала происходит путем установки определенных битов регистра состояния (SR):

-SCG1. Когда этот бит установлен, сигнал SMCLK отключен.

-SCG0. Когда этот бит установлен, генератор с цифровым управлением отключен, если сигнал DCOCLK не используется для формирования сигналов MCLK или SMCLK.

-OSCOFF. Когда этот бит установлен, кварцевый генератор выключен, если сигнал LFXT1CLK не используется для формирования сигналов MCLK или SMCLK.

-CPUOFF. Когда этот бит установлен, ЦПУ выключено. Для доступа к регистру состояния в компиляторе

определены специальные функции, которые будут рассмотрены ниже.

В качестве примера рассмотрим программу, в которой для ЦПУ будет задействован источник VLOCLK с частотой, деленной на 8, а все неиспользуемые источники тактового сигнала будут отключены. Для демонстрации работы микроконтроллера выполним также следующую задачу. Если на входе P1.0 присутствует логическая «1», то светодиод LED2 должен быть погашен, а если «0», то он должен мигать с частотой 1 Гц. Программа, реализующая эти функции, имеет следующий вид:

#include <msp430.h> //1.Подключение заголовочного файла микроконтроллеров MSP430

volatile unsigned char delay;//2.Переменная для организации

временных задержек

//3.

int main(void)

//4.Главная функция программы

{

//5.

WDTCTL = WDTPW|WDTHOLD;

//6.Остановка сторожевого таймера

BCSCTL3 |= LFXT1S1;

//7. Выбор VLOCLK в качестве

низкочастотного тактового сигнала

IFG1 &= ~OFIFG;

//8.Сброс флага сбоя генерации

__bis_SR_register(SCG1|SCG0|OSCOFF);//9.Выключение неиспользуемых источников сигналов

BCSCTL2 |= SELM0|SELM1|DIVM1|DIVM0;//10.Использование для тактирования ЦПУ частоты VLOCLK/8

8

P1DIR = BIT6;

//11.Перевод линии, на которой

находится LED2, на выход

//12.Включение подтягивающего

P1REN = BIT0;

резистора на входе Р1.0

//13.Обнуление всех битов регистра

P1OUT = 0;

P1OUT

//14.Бесконечный цикл

while (1)

{

//15.

if (~P1IN&BIT0)

//16.Если бит 0 порта Р1 равен 0,

{

//17.

P1OUT ^= BIT6;

//18.Переключение состояние

светодиода LED2 в противоположное

for (delay = 0; delay < 54; delay++);//19.и задержка 500

мс

//20.

}

else

//22.Иначе (если бит 0 порта Р1

равен 1),

//22.

{

P1OUT &= ~BIT6;

//23.выключение светодиода LED2

}

//24.

}

//25.

}

//26.

Большая часть регистров, используемых в данной программе, была рассмотрена в предыдущей лабораторной работе, поэтому здесь буду рассмотрены только те, которые не встречались ранее.

В строке 2 объявляется переменная delay типа volatile unsigned char. Эта переменная используется для организации временной задержки следующим образом. В строке 19 организуется цикл типа for, в котором происходит наращивание переменной delay от нуля до некоторого значения, определяющего величину временной задержки. Знак «;» в конце строки означает, что в цикле ничего, кроме инкрементирования переменной delay, не происходит. А раз так, то компилятор может посчитать, что цикл бесполезный, и при включенной оптимизации благополучно исключить его из исполняемого кода. Чтобы этого не произошло, используется префикс «volatile» при объявлении переменной delay. Он указывает компилятору на то, что операции с данной переменной нельзя оптимизировать, поэтому цикл for будет включен в исполняемый код без всяких сокращений и исключений.

9

Встроке 7 в качестве источника низкочастотного сигнала выбирается VLOCLK (устанавливается в единицу только бит

LFXT1S1, а бит LFXT1S0 равен кулю).

Поскольку по умолчанию в качестве этого сигнала используется LFXT1CLK, а кварц на плате отсутствует, то при пуске контроллера происходит сбой генератора, о чем говорит установленный флаг OFIFG регистра IFG1. Для запуска низкочастотного генератора этот флаг нужно сбросить, что и делается в строке 8.

Встроке 9 происходит отключение неиспользуемых тактовых генераторов: LFXT1CLK и DCOCLK путем установки битов SCG1, SCG0 и OSCOFF регистра состояния. Для этого используется функция __bis_SR_register(), в которую в качестве аргумента передаются необходимые биты, разделенные знаком «|» (побитовое «ИЛИ»). Для сброса битов регистра состояния используется аналогичная по синтаксису функция

__biс_SR_register().

Встроке 10 в качестве источника сигнала MCLK выбирается генератор VLOCLK (устанавливаются биты SELM0

иSELM1), частота которого делится на 8 (устанавливаются биты DIVM1и DIVM0).

Все эти действия приводят к тому, что в контроллере активным остается только источник VLOCLK с частотой 12 кГц, а тактовая частота ЦПУ (MCLK) становится равной 12 / 8 = 1,5 кГц.

Теперь можно посчитать необходимое количество проходов цикла для задания требуемой частоты мигания светодиода. Для задания частоты в 1 Гц необходимо каждые 500 мс переключать состояние светодиода в противоположное, тогда половину секунды он будет гореть, а половину – нет. Каждый

проход цикла занимает 14 тактов, что соответствует 14 / 1,500 кГц ≈ 9,33 мс. Для реализации задержки в 500 мс нужно 500 / 9,33 ≈ 54 прохода цикла, что и указывается в строке

19.

10