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

Пособие HCS12 & Elvis II v.7.01

.pdf
Скачиваний:
223
Добавлен:
03.05.2015
Размер:
4.14 Mб
Скачать

Рис. 7.4. Четвёртое окно мастера создания нового проекта

Теперь нужно установить параметры проекта, связанные с особенностями языка C (рис. 7.5). Выберите код начального пуска в формате ANSI, модель памяти “Small” и 32разрядные переменные с плавающей точкой и двойной точности. Тем не менее, в приложениях, критичных в отношении производительности, рекомендуется отключать последнюю опцию и избегать операций, связанных с дробными числами.

Рис. 7.5. Пятое окно мастера создания нового проекта

Наконец, в завершающем окне (рис. 7.6) откажитесь от использования надстройки поиска ошибок в исходном коде PC-lint.

161

Рис. 7.6. Шестое окно мастера создания нового проекта

По завершении конфигурации нового проекта основное окно среды разработки CodeWarrior должно выглядеть так, как показано на рис. 7.7.

Рис. 7.7. Основное окно среды CodeWarrior

Для корректной работы программы, приведённой выше, необходимо вручную соединить проводниками некоторые контакты так, как показано на рис. 7.8.

162

 

 

 

 

MCU_PORT

Разъём J2

 

 

(J6 или J7)

DAC0

 

 

 

IOC0

MCU_PORT

 

 

 

(J6 или J7)

 

 

Разъём J4

PA7

 

 

 

DI7

 

 

 

PA6

 

 

 

DI6

 

 

 

 

 

 

 

 

PA5

 

 

 

DI5

 

 

 

PA4

 

 

 

DI4

 

 

 

PA3

 

 

 

DI3

 

 

 

PA2

 

 

 

DI2

 

 

 

PA1

 

 

 

DI1

 

 

 

PA0

 

 

 

DI0

 

 

 

 

 

 

 

 

Рис. 7.8. Необходимые соединения контактов на стенде

После манипуляций на стенде запускается инструмент Two Channel Generator, в котором выбираются желаемые параметры создаваемого сигнала. Также запускается утилита T out, с помощью которой на мониторе компьютера будут отображаться данные, принимаемые от МК. И, наконец, запускается на выполнение программа, написанная выше.

Задачи начального уровня для самостоятельной работы

1.На ножку 1 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется период приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт A. Код должен принять виртуальный инструмент T out.

2.На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется период приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт B. Код должен принять виртуальный инструмент T out.

3.На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется период приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт A. Код должен принять виртуальный инструмент T out. Частоту тактирования счётчика таймера сделать равной fBUS.

4.На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется период приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт A. Код должен принять виртуальный инструмент T out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

5.На ножку 2 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется период приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт A. Код должен принять виртуальный инструмент T out.

163

Задачи средней сложности для самостоятельной работы

1.На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется частота приходящего сигнала и выдаётся в килогерцах в параллельном коде на порт B. Код должен принять виртуальный инструмент f out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

2.На ножку 2 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется частота приходящего сигнала и выдаётся в килогерцах в параллельном коде на порт A. Код должен принять виртуальный инструмент f out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

3.На ножку 4 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется частота приходящего сигнала и выдаётся в килогерцах в параллельном коде на порт A. Код должен принять виртуальный инструмент f out. Частоту тактирования счётчика таймера сделать равной fBUS.

4.На ножку 6 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется частота приходящего сигнала и выдаётся в килогерцах в параллельном коде на порт B. Код должен принять виртуальный инструмент f out. Частоту тактирования счётчика таймера сделать равной fBUS.

5.На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется длительность импульса приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт

B.Код должен принять виртуальный инструмент ti out. Частоту тактирования счётчика таймера сделать равной fBUS.

6.На ножку 3 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется длительность импульса приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт

A.Код должен принять виртуальный инструмент ti out. Частоту тактирования счётчика таймера сделать равной fBUS.

7.На ножку 5 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется длительность импульса приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт

A.Код должен принять виртуальный инструмент ti out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

8.На ножку 7 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется длительность импульса приходящего сигнала и выдаётся в микросекундах в параллельном коде на порт

B.Код должен принять виртуальный инструмент ti out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

164

Сложные задачи для самостоятельной работы

1.На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется относительная длительность импульса приходящего сигнала и выдаётся в параллельном коде (значение 0x64 соответствует γ = 100%) на порт B. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Duty cycle out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

2.На ножку 1 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется относительная длительность импульса приходящего сигнала и выдаётся в параллельном коде (значение 0x64 соответствует γ = 100%) на порт A. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Duty cycle out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

3.На ножку 2 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется относительная длительность импульса приходящего сигнала и выдаётся в параллельном коде (значение 0x64 соответствует γ = 100%) на порт A. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Duty cycle out. Частоту тактирования счётчика таймера сделать равной fBUS.

4.На ножку 4 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой измеряется относительная длительность импульса приходящего сигнала и выдаётся в параллельном коде (значение 0x64 соответствует γ = 100%) на порт B. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Duty cycle out.

5.На ножки 0 и 1 порта T микроконтроллера поступают две последовательности прямоугольных импульсов с одинаковой частотой, создаваемые инструментом Two Channel Generator. Написать программу, с помощью которой измеряется разность фаз между двумя сигналами и выдаётся в параллельном коде (значение 0xFF соответствует Δφ = 360°) на порт B. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Phase difference out. Частоту тактирования счётчика таймера сделать равной fBUS.

6.На ножки 2 и 3 порта T микроконтроллера поступают две последовательности прямоугольных импульсов с одинаковой частотой, создаваемые инструментом Two Channel Generator. Написать программу, с помощью которой измеряется разность фаз между двумя сигналами и выдаётся в параллельном коде (значение 0xFF соответствует Δφ = 360°) на порт A. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Phase difference out. Частоту тактирования счётчика таймера сделать равной fBUS.

7.На ножки 4 и 5 порта T микроконтроллера поступают две последовательности прямоугольных импульсов с одинаковой частотой, создаваемые инструментом Two Channel Generator. Написать программу, с помощью которой измеряется разность фаз между двумя сигналами и выдаётся в параллельном коде (значение 0xFF соответствует Δφ = 360°) на порт A. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Phase difference out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

8.На ножки 3 и 6 порта T микроконтроллера поступают две последовательности прямоугольных импульсов с одинаковой частотой, создаваемые инструментом Two Channel Generator. Написать программу, с помощью которой измеряется разность фаз между двумя сигналами и выдаётся в параллельном коде (значение

165

0xFF соответствует Δφ = 360°) на порт B. Код должен отображаться на 8-ми светодиодах, а также на панели виртуального инструмента Phase difference out. Частоту тактирования счётчика таймера сделать равной fBUS/4.

166

Лабораторная работа №2

ШИМ-модуль микроконтроллера

Содержание

В данной лабораторной работе изучается модуль широтно-импульсной модуляции микроконтроллера.

Подготовка к работе

В процессе подготовки к лабораторной работе №2 рекомендуется повторить функцию входного захвата таймера, ознакомиться с ШИМ-модулем микроконтроллера и рассмотреть пример, приведённый ниже.

Практическая часть

Пример 2.1. На ножку 0 порта T микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 50 мкс ≤ T ≤ 100 мкс: 0 ≤ γ ≤ 1, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

#include <hidef.h>

//Подключение заголовочного файла, содержащего

#include "derivative.h"

//макроопределение EnableInterrupts.

//Подключение файла, содержащего определение

#define Tmin 50

//служебных регистров.

//Пользовательское макроопределение минимального

#define Tmax 100

//значения периода, мкс.

//Пользовательское макроопределение максимального

 

//значения периода, мкс.

unsigned int TCNT_NEW, TCNT_OLD;

//Переменные, хранящие новое и старое

unsigned char T, g = 50;

//значения счётчика таймера.

//Переменная, хранящая значение

 

//измеренного периода. Относительная

 

//длительность импульса, указана в

 

//процентах.

void main() {

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

PERT |= 0x01;

//Включение подтягивающего вверх резистора на

TCTL4 = 0x01;

//ножке 0 порта T, PERT0 = 1.

//Включение обнаружения нарастающих перепадов

TFLG1 = 0xFF;

//сигнала в канале 0, EDG0B = 0, EDG0A = 1.

//Сброс всех флагов входного захвата, CxF = 1.

TFLG2 |= 0x80;

//Сброс флага переполнения таймера, TOF = 1.

TIE = 1;

//Разрешение прерываний по событию в канале 0, C0I = 1.

TSCR2 = 0x01;

//Установка делителя частоты тактирования счётчика таймера

 

167

//Использовано явное //преобразование типов данных.
//Подпрограмма прерывания по событию в //канале 0 подсистемы таймера.
//После слова interrupt указывается номер //вектора прерывания.
//Сброс флага события в канале 0. //Получение нового значения счётчика таймера. //Вычисление периода.
//Обновление старого значения счётчика //таймера.
//Вычисление параметра g.

TSCR1 = 0x80;

//равным ½. Таким образом, fCT = fBUS/2 = 1 МГц.

//Включение таймера, TEN = 1.

PWMPOL =

0x08;

//Сначала высокий уровень в течение длительности импульса,

PWMCLK =

0;

//затем состояние логического нуля.

//Источник тактирования B для канала 3, PCLK3 = 0.

PWMCAE =

0;

//ШИМ по фронту (односторонняя) для канала 3, CAE = 0.

PWMDTY3 = 100;

//Начальная длительность импульса.

PWMPRCLK

= 0;

//Установка делителя частоты для источника тактирования B

PWMPER3 = 133;

//равным 1. Т.о. fB = fBUS = 2 МГц.

//Период счётчика ШИМ-модуля. fPWM = fB/133 = 15 кГц.

PWME = 0x08;

//Включение сконфигурированного канала, PWME3 = 1.

asm CLI;

 

//Разрешение прерываний в МК.

for(;;) { }

//Бесконечный пустой цикл, ожидание прерываний.

}

interrupt 8 void IC0() {

TFLG1 = 0x01;

TCNT_NEW = TCNT;

T = TCNT_NEW – TCNT_OLD;

TCNT_OLD = TCNT_NEW;

if (T >= Tmax) { g = 100;

} else { if (T > Tmin) {

g = (unsigned int) ((unsigned int)(100*(T-Tmin)) / (unsigned char)(Tmax-Tmin));

} else g = 0;

}

PWMDTY3 = (unsigned char)((unsigned int)(g*PWMPER3) / (unsigned char)100); //Вычисление уровня сравнения для ШИМ-канала.

}

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

168

 

 

 

MCU_PORT

Разъём J2

(J6 или J7)

DAC0

 

IOC0

 

 

 

BNC-разъём

 

 

 

платформы

Разъём J2

Elvis II

DAC0

 

CH0

 

 

 

BNC-разъём

MCU_PORT

платформы

(J6 или J7)

Elvis II

PP3

 

 

CH1

Рис. 7.9. Необходимые соединения контактов на стенде

Задачи начального уровня для самостоятельной работы

1.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 30 мкс ≤ T ≤ 200 мкс: 0 ≤ γ ≤ 1, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

2.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 20 кГц. Управление осуществлять по следующему правилу: 50 мкс ≤ T ≤ 100 мкс: 0 ≤ γ ≤ 1, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

3.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 50 мкс ≤ T ≤ 100 мкс: 0.4 ≤ γ ≤ 0.8, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

4.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 50 мкс ≤ T ≤ 100 мкс: 1 ≥ γ ≥ 0, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

5.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 66 мкс ≤ T ≤ 80 мкс: 0 ≤ γ ≤ 1, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

169

6.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 10 кГц. Управление осуществлять по следующему правилу: 50 мкс ≤ T ≤ 100 мкс: 0 ≤ γ ≤ 1, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

7.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 50 мкс ≤ T ≤ 100 мкс: 0.6 ≥ γ ≥ 0.2, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

8.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота ШИМ-сигнала – 15 кГц. Управление осуществлять по следующему правилу: 40 мкс ≤ T ≤ 125 мкс: 0 ≤ γ ≤ 1, где T – период входного сигнала, γ – относительная длительность выходного. Обе импульсные последовательности вывести на осциллограф Scope.

Задачи средней сложности для самостоятельной работы

1.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Управление осуществлять по следующему

правилу: 10 кГц ≤ fin ≤ 20 кГц: 1 кГц ≤ fout ≤ 2 кГц, где fin – частота входного сигнала, fout – частота выходного. Обе импульсные последовательности вывести на осциллограф Scope.

2.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Управление осуществлять по следующему

правилу: 5 кГц ≤ fin ≤ 10 кГц: 50 Гц ≤ fout ≤ 500 Гц, где fin – частота входного сигнала, fout – частота выходного. Обе импульсные последовательности вывести на осциллограф Scope.

3.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота входного сигнала – 40 кГц.

Управление осуществлять по следующему правилу: 0 мкс ≤ ti ≤ 50 мкс: 100 Гц ≤ fout ≤ 1 кГц, где tin – длительность импульса входного сигнала, fout – частота выходного. Обе импульсные последовательности вывести на осциллограф Scope.

4.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator. Написать программу, с помощью которой этот сигнал управляет ШИМ-сигналом, создаваемым микроконтроллером. Частота входного сигнала – 20 кГц.

Управление осуществлять по следующему правилу: 0 мкс ≤ ti ≤ 25 мкс: 2 кГц ≤ fout ≤ 8 кГц, где tin – длительность импульса входного сигнала, fout – частота выходного. Обе импульсные последовательности вывести на осциллограф Scope.

5.На один из входов микроконтроллера поступает последовательность прямоугольных импульсов, создаваемая инструментом Two Channel Generator.

170