Весь ассортимент компании "Симметрон электронные компоненты" вы можете
приобрести в розницу в фирменных магазинах "Микроника".
Лабораторный практикум по TWR-S08LH64. Микроконтроллер MC9S08LH64. Лабораторные работы 1 и 2
Модуль TWR-S08LH64
Рис. 1 TWR-S08LH64-KIT Freescale Tower System
Модуль TWR-S08LH64 является составной частью Freescale Tower System — модульной платформы для разработки, позволяющей быстро создавать прототипы и неоднократно использовать инструментальные средства путём изменения аппаратной конфигурации. Выведите вашу разработку на новый уровень — начните собирать свою систему Tower уже сегодня.
Рис. 2
Джамперы (перемычки) на модуле микроконтроллера Tower установлены в положение, разрешающее запуск приложения Quick Start (Быстрый старт), записанного во флэш-память микроконтроллера MC9S08LH64.
TWR-S08LН64 — Лабораторные работы 1 и 2
Введение
MC9S08LH64 — это один из микроконтроллеров Freescale с пониженным энергопотреблением, с интегрированным драйвером ЖК-дисплея, с 16-битным АЦП, имеющим канал дифференциального входа и до 8 несимметричных входов. Модуль TWR-S08LH64 содержит встроенные аналоговые входные каналы, которые позволяют разработчикам исследовать возможности нового мощного АЦП. Кроме того, он оснащён встроенным дисплеем, благодаря чему разработчики могут анализировать создаваемое ПО с помощью интегрированного драйвера ЖК-дисплея. Данное руководство поможет вам за считанные минуты подготовиться к разработке своего следующего измерительного или ЖК-приложения на базе микроконтроллера MC9S08LH64. Примечание. Прежде чем приступить к лабораторным работам, описанным в данном руководстве, выполните все шаги руководства Quick Start Guide (Быстрый старт), полностью установите требуемое программное обеспечение и загрузите документацию.
Использование кода Quick Start, запуск CodeWarrior и открытие проекта
В данной лабораторной работе показаны возможности микроконтроллера MC9S08LH64 и приложения Quick Start (Быстрый старт).
Нажимая кнопку SW2, можно выбрать одно из четырёх состояний:
Состояние 1. Пониженное энергопотребление и отображение времени
Состояние 2. Потенциометр и светочувствительный датчик
Состояние 3. Демо-режим акселерометра, вывод координат X, Y и Z через порт SCI
Состояние 4. Демо-режим АЦП — в состоянии АЦП при нажатии кнопки SW4 номер канала увеличивается на 1, конвертируется в шестнадцатеричный вид и отображается на дисплее
Установите программное обеспечение и инструментальные средства в соответствии с указаниями руководства Quick Start Guide (Быстрый старт).
Откройте приложение CodeWarrior для микроконтроллеров. Для этого в меню Пуск Windows выберите Programs > Freescale CodeWarrior > CW for Microcontroller 6.3 > CodeWarriorIDE.
Нажмите кнопку Start Using CodeWarrior (Запустить CodeWarrior).
В меню приложения CodeWarrior выберите File > Open (Файл > Открыть) и откройте файл PE_LH64 Quick_Start.mcp, который находится на диске c:/ в каталоге с распакованными проектами. Этот файл представляет собой проект Quick Start, в котором для инициализации устройства используется инструментальное средство Processor Expert программы CodeWarrior.
Знакомство с окном проекта Quick Start
На Рис. 3 показаны закладки Processor Expert и Files (Файлы).
Рис. 3
В окне проекта есть четыре закладки: Files (Файлы), Link Order (Порядок подключения), Target (Целевой микроконтроллер), Processor Expert. На каждой закладке отображается содержимое проекта, соответствующее её названию. Код пользователя отображается на закладке Files (Файлы).
Установка модуля TWR-S08LH64
Подключитесь к 10-контактному разъёму на модуле, помеченному COM PORT и J3 (см. Рис. 4). В состояниях 2, 3 и 4 данные пересылаются через порт SCI микроконтроллера на консоль терминала вашего компьютера.
Подсоедините разъём DB9 гибкого кабеля RS232 к последовательному порту компьютера.
Рис. 4
Запуск инструментального средства P&E для разработки приложений программатора/отладчика
Откройте инструментальное средство P&E Multilink Toolkit Launch Pad и окно терминала. В меню Пуск Windows выберите Programs > P&E Embedded Multilink Toolkit > Toolkit Launchpad.
Запустите консоль терминала и настройте параметры COM-порта компьютера: Скорость — 19 200 бит/с, Биты данных — 8, Стоп-биты — 1, Чётность — нет.
С помощью ПО CodeWarrior скомпилируйте код и перепрограммируйте микроконтроллер MC9S08LH64, записав в него приложение — для этого кликните по кнопке Debug (Отладка) или нажмите клавишу F5 на клавиатуре, запускающую программатор и отладчик BDM с открытым исходным кодом (OSBDM).
Если микроконтроллер остановлен и находится в состоянии с низким энергопотреблением, вы можете увидеть сообщение «There is currently no communication» (Подключения отсутствуют). Нажмите OK. Восстановите подключение, нажав кнопку SW2 и выбрав пункт Component > Set Connection (Компонент > Установить соединение), укажите HCS08 и FSL open source BDM (HCS08 и FSL OSBDM). Подключение по интерфейсу BDM восстановится.
Рис. 5
Когда появится сообщение «Loading a new application will stop execution of the current one» (Загрузка нового приложения приведёт к остановке выполняемого приложения), нажмите OK.
Рис. 6
Когда появится сообщение «The debugger is going to mass erase the non-volatile memory of the current device, then program the application» (Отладчик полностью очистит содержимое энергонезависимой памяти текущего устройства, а затем перепрограммирует приложение), нажмите OK.
Рис. 7
Окно отладчика
Откроется новая среда отладчика. В основном меню выберите Run > Start/Continue (Запуск > Старт/Продолжение) или нажмите кнопку . Начнётся выполнение программы в режиме реального времени.
Рис. 8 Отображение времени
При включении питания или сбросе все сегменты на ЖК-дисплее загорятся, затем погаснут, зуммер издаст звук, далее появятся надписи 9LH64 и CL. После этого микроконтроллер перейдёт в режим пониженного энергопотребления с отображением времени/дня недели. При инициализации показаний дисплея используются значения времени, температуры и дня недели. Микроконтроллер отслеживает время с помощью модуля TOD, в котором используется часовой кварц с частотой 32.768 кГц. Температура и уровень заряда батареи измеряются с помощью 16-битного АЦП (ADC16) и отображаются на дисплее.
Рис. 9
В режиме останова и пониженного энергопотребления задействованы следующие функции с использованием ADC16: измерение показаний внутреннего датчика температуры, опорного напряжения (bandgap) и времени (TOD), а также управление модулем ЖК-дисплея. В режиме останова работает функция мигания сегментов ЖК-дисплея.
Функции отображения и управления
1) Нажмите кнопку SW2 и удерживайте её более двух секунд, чтобы переключить дисплей между режимами отображения температуры и отображения значения секунд (две верхних цифры на дисплее).
2) Нажмите кнопку SW1 и удерживайте её для входа в режим установки времени и дня недели. В результате на экране временно отобразится CL, затем SE (режим установки времени) и цифра часа начнёт мигать.
Установка часов: нажатие на кнопку SW1 увеличивает значение, на кнопку SW2 — уменьшает.
Нажмите и удерживайте в течение двух секунд обе кнопки SW1 и SW2 для перехода в режим установки минут.
Установка минут: нажатие на кнопку SW1 увеличивает значение, на кнопку SW2 — уменьшает.
Нажмите и удерживайте в течение двух секунд обе кнопки SW1 и SW2 для перехода в режим установки дня недели.
Установка дня недели: нажатие на кнопку SW1 увеличивает значение, на кнопку SW2 — уменьшает.
Нажмите и удерживайте в течение двух секунд обе кнопки SW1 и SW2 для выхода из режима установки времени.
Дисплей вернется в исходное состояние с отображением времени и температуры.
Измерение тока. Чтобы измерить средний ток микроконтроллера, снимите джампер «MCU IDD» JP2 и подключите амперметр между двумя выводами JP2. Произведите сброс модуля TWR_S08LH64 нажатием кнопки Сброс. Показания должны быть ниже 3 мкА. Интервал пробуждения. Микроконтроллер возобновляет работу каждую секунду и обновляет значение программного счётчика секунд. Чтобы сократить энергопотребление, можно установить временной интервал пробуждения микроконтроллера равным 60 с. Это уменьшит число переключений микроконтроллера из режима остановки в рабочий режим с обновлением показаний времени на ЖК-дисплее.
В файле LH64_Demo.c код, включающий 60-секундный интервал пробуждения, закомментирован. В функции void StopClock(void) сделайте комментарием строку, которая начинается с vfnTOD_Init, и удалите символы комментария «//» в начале следующей строки. После перезаписи нового кода микроконтроллер будет активироваться каждые 60 с. Таким образом, секундный интервал отменён. Снова измерьте значение тока и сравните с предыдущим. Возможно, придётся закрыть окно отладчика, чтобы активировать режим с пониженным энергопотреблением.
Потенциометр и светочувствительный датчик
В этом состоянии для считывания показаний потенциометра и встроенного светочувствительного датчика используются два канала АЦП. Нажмите кнопку SW2, и программа перейдёт в состояние Потенциометр и светочувствительный датчик. На дисплее отобразится LI, а также показания потенциометра (большими символами в нижней части экрана) и показания светочувствительного датчика (справа вверху двумя символами меньшего размера). Третьим отображаемым символом будет <, > или =, сравнивающий показания POT (потенциометра) и светочувствительного датчика. Одновременно показания пересылаются через SCI-порт на скорости 19 200 бит/с.
Запустите утилиту Serial Grapher из программы PEMICRO UTILITY LAUNCH PAD.
Выберите COM-порт компьютера (как правило, это COM1) и установите: Скорость — 19 200 бит/с, Биты данных — 8, Стоп-биты —1, Чётность — нет.
Кликните по Open Serial Port and Start Demo (Открыть последовательный порт и запустить демо-приложение). В окне терминала должен появиться примерно такой текст: "POT = FD Light Sensor Z1 = 56 " "POT = FD Light Sensor Z1 = 58 " "POT = FD Light Sensor Z1 = 65 "
Микроконтроллер измеряет показания светочувствительного датчика RZ1 через резистор цепи обратной связи в буфере операционного усилителя с выделенной парой контактов (DADP0 и DADM0) дифференциального входа. Отрегулируйте потенциометр, измените уровень освещённости светочувствительного датчика и посмотрите, как изменились показания на дисплее. Если значения POT и RZ1 совпадают, то зуммер издаст звук, а на дисплее отобразится знак =.
Графическое отображение работы акселерометра
Нажмите кнопку SW2, программа перейдёт в состояние Демо-режим акселерометра. В этом состоянии для измерения и вывода данных по трём направлениям используется трёхкоординатный акселерометр, каналы АЦП и SCI-порт. При тех же настройках, что и для Состояния 2, можно получить графическое отображение движения акселерометра при перемещении модуля. В Лабораторной работе 2 представлена более полная демонстрация возможностей акселерометра.
Рис. 10 Демонстрация возможностей АЦП
Нажмите кнопку SW2 ещё раз, программа перейдёт в состояние Демо-режим АЦП. На ЖК-дисплее отобразится ADC. В рамках этой демонстрации результаты 32 измерений усредняются, переводятся в шестнадцатеричный вид, после чего на дисплее тремя символами отображаются 12 младших битов 16-битного результата, а также номер канала (два верхних символа справа). При нажатии на кнопку SW4 номер канала увеличивается на 1, преобразуется в шестнадцатеричный вид и выводится на дисплей.
В этом состоянии производятся измерения и отображение данных для выбранного канала АЦП с одновременной отправкой данных на SCI-выход. При тех же установках терминала, что и в Состоянии 2, в окне терминала можно увидеть текст, аналогичный приведённому в Табл. 2. В Табл. 1 дано краткое описание каждой колонки текстового вывода. Более подробное описание регистров, значения которых отображаются в окне терминала, можно найти в справочном руководстве по микроконтроллеру LH64.
Таблица 1
Колонка
Обозначение
Описание
1
CFG1
Конфигурационный регистр 1
2
PG
Посткалибровочные положительные поправки
3
CLPD
4
CLPS
5
CLP4
6
CLP3
7
CLP2
8
CLP1
9
CLP0
10
MG
Посткалибровочные отрицательные поправки
11
CLMD
12
CLMS
13
CLM4
14
CLM3
15
CLM2
16
CLM1
17
CLM0
18
Offset
Значение калибровочного смещения
19
CHNLA
Канал данных A
20
DATAA
Результат A
21
VREFT
Переменная VERF
Таблица 2
Значения после СБРОСА
CFG1=
7D
CFG2=
4
SC2=
0
SC3=
7
SC1A=
9B
SC1B=
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CFG1
PG
CLPD
CLPS
CLP4
CLP3
CLP2
CLP1
CLP0
MG
CLMD
CLMS
CLM4
CLM3
CLM2
CLM1
CLM0
Offset
CHNLA
DATAA
VREFT
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
448
40
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
597
41
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
644
42
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
06D4
43
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
816
44
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
0D76
45
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
1504
46
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
1AAF
47
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
1E91
48
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
2137
49
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
2252
4A
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
21AF
4B
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
2017
4C
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
1DA9
4D
7D
8278
17
29
272
013C
9F
52
29
82B4
16
2A
02BE
015A
A9
53
2A
3
0
1B45
4E
Распределение каналов АЦП приведено в Табл. 3.
Для смены канала и его просмотра на ЖК-дисплее и SCI-выходе нажмите SW4. Обратите внимание: канал VREFO (0x13) изменяется, так как циклический код постоянно меняет настройки этого опорного напряжения. Таким образом, имеется возможность установки или регулировки выходного напряжения VREF.
Таблица 3
Регистр ADCH
Канал
Вход
Управляющий вывод
0
AD0
ADP0
ADPC0
1
AD1
Зарезервирован
ADPC1
10
AD2
Зарезервирован
ADPC2
11
AD3
Зарезервирован
ADPC3
100
AD4
PTA0/ADP4
ADPC4
101
AD5
PTA1/ADP5
ADPC5
110
AD6
PTA2/ADP6
ADPC6
111
AD7
PTA3/ADP7
ADPC7
1000
AD8
PTA4/ADP8
—
1001
AD9
PTA5/ADP9
—
1010
AD10
PTA6/ADP10
—
1011
AD11
PTA7/ADP11
—
1100
AD12
ADP12
ADPC12
10000
AD16
Зарезервирован
—
10001
AD17
Зарезервирован
—
10010
AD18
Зарезервирован
—
10011
AD19
VREFO
—
10100
AD20
Зарезервирован
—
10101
AD21
Зарезервирован
—
10110
AD22
Зарезервирован
—
10111
AD23
VLCD
—
11000
AD24
VLL1
—
11001
AD25
Зарезервирован
—
11010
AD26
Датчик температуры
—
11011
AD27
Внутренний источник опорного напряжения (bandgap)
—
11100
AD28
Зарезервирован
—
11101
VREFH
VREFH
—
11110
VREFL
VREFL
—
11111
Модуль отключён
Нет
—
В Табл. 4 и 5 приведено распределение каналов АЦП при подключении к модулю Tower. Подпрограмма обработки прерываний пропускает зарезервированный канал и переходит к следующему.
Таблица 4
Канал (hex)
Функция
0
Выделенный дифференциальный вход
1A
Датчик температуры
1B
Опорное напряжение (bandgap)
1D
VREFH
Таблица 5
Канал (hex)
Функция 1
Функция 2
Функция 3
4
Потенциометр
Нулевое ускорение
5
Ось X
6
Ось Y
7
Ось Z
8
SW3
J2-B27
9
Подключение отсутствует
J2-B28
0A
Светочувствительный датчик RZ1
SW1
J1-A27
0b
SW2
J1-A28
0C
JP10
J1-A29
13
VREFO
17
VLCD
18
VLL1
1A
Датчик температуры
1B
Опорное напряжение
1D
VREFH
1E
VREFL
Демонстрация возможностей акселерометра
В данной лабораторной работе вы познакомитесь с рабочими характеристиками микроконтроллера MC9S08LH64, а также убедитесь в простоте его сопряжения с датчиком. Кроме того, вы подробно познакомитесь с одной из множества программных утилит, включённых в комплект поставки модуля TWR-S08LH64.
Приложение акселерометра считывает с трёхкоординатного акселерометра в модуле TWR-S08LH64 координаты по осям X, Y и Z с помощью 16-битного АЦП микроконтроллера. Оно выводит необработанные значения данных акселерометра на последовательный коммуникационный интерфейс микроконтроллера.
При нажатии на SW1 программа переключается в режим вывода скользящего среднего необработанных данных акселерометра.
Нажатие SW2 включает режим вывода фильтрованных значений. При нажатии на SW3 снова выводятся необработанные данные.
Открытие кода Accelerometer и программирование микроконтроллера с его помощью
Убедитесь в том, что все джамперы находятся в положениях по умолчанию.
В приложении CodeWarrior выберите File > Open (Файл > Открыть) и откройте файл TWR9S08LH64_Accelerometer.mcp из каталога с распакованными проектами на диске c:/.
Скомпилируйте код и перепрограммируйте микропроцессор, нажав кнопку Debug (Отладка), запускающую отладчик.
Когда появится сообщение «Loading a new application will stop execution of the current one» (Загрузка нового приложения приведёт к остановке выполняемого приложения), нажмите OK.
Когда появится сообщение «The debugger is going to mass erase the non-volatile memory of the current device, then program the application» (Отладчик полностью очистит содержимое энергонезависимой памяти текущего устройства, а затем перепрограммирует приложение), нажмите OK.
Откроется среда отладчика. В основном меню выберите Run > Start/Continue (Запуск > Старт/Продолжение). Начнётся выполнение программы в режиме реального времени.
Запустите утилиту акселерометра из приложения PEMICRO TOOLKIT LAUNCH PAD и выберите Accelerometer (Акселерометр).
Настройте COM-порт компьютера, установите скорость 19 200 бит/с и кликните по Open Serial Port and Start Demo (Открыть последовательный порт и запустить демонстрационное приложение).
Запуск демонстрации и просмотр графиков
Обратите внимание на гистограмму со столбцами X, Y, Z и C, а также на окно границ (Scope) на графике для акселерометра. Если изменения значений слишком малы, то выделите прямоугольник вокруг графических данных и нажмите кнопку воспроизведения в окне графика.
Вы получите необработанные координаты XYZ на графике с большим увеличением. Нажмите кнопку SW2 — активируется «усреднение». Обратите внимание на столбец C (счётчик циклов) гистограммы — с увеличением числа циклов наблюдается эффект сглаживания координат XYZ при перемещениях модуля.
Рис. 11
Нажмите кнопку SW1 — начнётся исполнение алгоритма FIR-фильтрации. Значение счётчика циклов снова возрастёт, и масштаб графика изменится. Вы увидите это на графике.
При нажатии на кнопку SW3 произойдёт возврат к потоковой передаче необработанных данных с акселерометра.