Пособие HCS12 & Elvis II v.7.01
.pdfРис. 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 |
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