Лабораторна робота №1 Вивчення цифрового вводу виводу мікроконтролеру MSP430G2553 на MSP430 Launch

Мал. 1.5. Вікно середовища розробки програм Energia
Лабораторна робота № 1.
Вивчення мікроконтролера MSP430G2452. Цифровий вхід-вихід
Мета роботи
Вивчення основних характеристик і архітектури мікроконтролера MSP430. Вивчення інтерфейсу отладочного модуля MSP430 LaunchPad. Вивчення основних прийомів програмування портів цифрового вводу-виводу мікроконтролера MSP430G2452.
Завдання
Створення простих програм управління цифровими лініями порту вводу-виводу для налагоджувального модуля MSP430 LaunchPad за допомогою середовища програмування Energia. Прошивка мікроконтролера і перевірка роботи програм.
Теоретична частина
1. Мікроконтролери MSP430
MSP430 - сімейство мікроконтролерів фірми «Texas Instruments» з низьким енергоспоживанням [1,2]. Перший контролер з абревіатурою MSP430 з'явився в 1999 році. Відмінними характеристиками мікроконтролерів сімейства MSP430 є наступні:
Архітектура з наднизьким споживанням, що дозволяє збільшити час роботи при живленні від батарей:
ток збереження вмісту ОЗУ - не більше 0.1 мкА; струм споживання в режимі годинника реального часу - не більше 0.8 мкА; струм споживання в активному режимі - 250 мкА / MIPS.
Високоефективна аналогова підсистема, що дозволяє виконувати точні вимірювання:
таймери, керовані компаратором; багатоканальний АЦП.
16-бітове RISC ЦПУ:
великий регістровий файл усуває обмеження робочого регістра;
вироблене за меншим техпроцесом ядро дозволяє знизити споживання, таким чином знизивши розмір кристала;
оптимізовано для сучасних мов програмування високого рівня;
набір команд складається всього з 27 інструкцій; підтримується 7 режимів адресації;
векторна система переривань з розширеними можливостями.
Енергонезалежна Флеш-пам'ять або Нанд-пам'ять з можливістю внутрисхемного програмування дозволяє гнучко змінювати програмний код (в тому числі, під час експлуатації), а також виробляти збереження даних.
16-розрядний RISC-контролер MSP430 має ортогональну систему команд. Ортогональность системи команд означає, що в якості операндів в будь-якій команді можна використовувати не тільки регістри загального призначення, а й осередки основного ОЗУ і константи, відповідно можна застосовувати для кожної команди будь-який з доступних способів адресації.
MSP430 має Фоннеймановская архітектуру, з єдиним адресним простором для команд і даних. Пам'ять може адресуватися як побайтово, так і послівно. Порядок зберігання 16-розрядних слів - від молодшого до старшого (англ. Little-endian), при якому молодший байт слова зберігається в молодшій адресі пам'яті, старший байт слова - в старшій адресі.
Процесор містить 16 16-розрядних ортогональних регістрів .
Регістр R0 використовується як програмний покажчик - лічильник команд (англ. Program Counter - PC),
регістр R1 як покажчик стека (англ. Stack Pointer - SP),
регістр R2 як регістр статусу (англ. Status Register - SR), а
регістр R3 як спеціальний регістр, іменований генератор констант (англ. Constant Generator - CG). R2 також може використовуватися в якості генератора констант. Генератор констант використовується для скорочення загальної довжини команди внаслідок неявного уявлення константи в коді операції.
Регістри з R4 по R15 використовуються як регістри загального призначення.
Архітектура MSP430 представлена на рис. 1.1.
RISC ЦПУ, система тактирования, периферійні модулі об'єднані спільними шинами адреси (MAB) і даних (MDB).
Мал. 1.1. архітектура MSP430
Система тактування
розроблена спеціально для застосування в пристроях з батарейним живленням. З її допомогою реалізується режим очікування з наднизьким споживанням. Низькочастотний допоміжний тактовий сигнал ACLK формується звичайним «годинниковим» кварцом частотою 32768 Гц. Сигнал ACLK може використовуватися для періодичного «пробудження» годин реального часу, що працюють у фоновому режимі. Вбудований високочастотний генератор з цифровим керуванням може формувати основний тактовий сигнал (MCLK), який використовується ЦПУ і швидкодіючими периферійними модулями. Високочастотний основний тактовий сигнал використовується для ефективної обробки сигналів.
Адресний простір.
Сімейство MSP430 має Фоннеймановская архітектуру з єдиним адресним простором, яке розділене між регістрами спеціальних функцій (SFR), периферійними пристроями, ОЗУ і флеш-пам'яттю відповідно до рис. 1.2. Звернення до виконуваного коду завжди виконується по парних адресами. Доступ до даних може здійснюватися як побайтно, так і пословно. В даний час загальний обсяг пам'яті, що адресується становить 128 КБ.
Мал. 1.2. Карта пам'яті
Початкова адреса області флеш / ПЗУ залежить від обсягу цієї пам'яті і відрізняється для різних пристроїв.
Кінцева адреса області флеш / ПЗУ завжди дорівнює 0x1FFFF.
Флеш-пам'ять може використовуватися як для зберігання коду, так і для зберігання даних. Двухбайтное і однобайтні дані (або таблиці даних) можуть розташовуватися у флеш-пам'яті і використовуватися безпосередньо звідти, без попереднього копіювання в ОЗУ.
Таблиця векторів переривань займає верхні 16 слів нижньої області пам'яті розміром 64 КБ. При цьому вектор переривання з найвищим пріоритетом розташовується в останньому слові області за адресою 0x1FFFF.
Область ОЗУ починається з адреси 0200h.
Кінцева адреса області залежить від обсягу ОЗУ і змінюється від моделі до моделі.
ОЗУ може використовуватися як для зберігання даних, так і для зберігання програмного коду.
Регістри периферійних модулів (пристроїв) розташовуються в загальному адресному просторі.
Область адрес від 0100h до 01FFh зарезервована для 16-бітних периферійних модулів. Для звернення до таких пристроїв необхідно використовувати команди, які оперують двухбайтное значеннями. При використанні команд, які працюють з однобайтном значеннями, допускаються звернення тільки до парних адресами пам'яті, при цьому старший байт результату завжди буде дорівнює нулю.
Область адрес від 010h до 0FFh зарезервована для 8-бітних периферійних модулів. Для звернення до цих пристроїв необхідно використовувати команди, які оперують байтами. Якщо для читання з такого модуля використовувати команду, що оперує словами, то вміст старшого байта результату буде невизначеним. При запису в 8-бітний модуль двухбайтного значення в регістр пристрою буде записаний тільки молодший байт.
Деякі функції периферійних пристроїв конфігуруються за допомогою регістрів спеціальних функцій.
Ці 8-бітові регістри розташовуються в молодших 16 байт адресного простору.
Для звернення до вказаних регістрів можна використовувати тільки команди, які оперують байтами. Призначення окремих бітів регістрів спеціальних функцій описано в документації на конкретні моделі.
Однобайтні значення розташовуються по парних або непарних адресами. Двухбайтное значення розташовуються тільки по парних адресами, як показано на рис. 1.3. При використанні команд, що оперують словами, звертатися можна тільки до парних адресами пам'яті. Молодший байт двухбайтное значення завжди розташовується по парному адресою, а старший байт - за таким непарному адресою.
Наприклад, якщо слово даних розташоване за адресою xxx4h, то молодший байт значення знаходиться за адресою xxx4h, а старший байт значення - за адресою xxx5h.
Мал. 1.3. Біти, байти і слова в пам'яті з побайтовой організацією
Цифрові порти введення-виведення.
Мікроконтролери сімейства MSP430 можуть мати до восьми портів введення / виводу P1 ... P8. Всі порти містять по вісім виводів (ліній). Кожен з висновків порту індивідуально конфігурується в якості входу або виходу. Запис і читання ліній введення / виводу також може здійснюватися в індивідуальному порядку.
Порти P1 і P2 підтримують зовнішні переривання. Для кожного з висновків портів P1 і P2 можна індивідуально дозволити переривання і конфігурувати його так, щоб воно генерувалося по наростаючому чи спадающему фронту вхідного сигналу. Всі лінії введення / виводу порту P1 призначені одному вектору переривань, а всі лінії порту P2 - іншому вектору.
Цифрові порти введення / виводу мають наступні можливості:
незалежні індивідуально програмовані лінії введення / виводу;
будь-які комбінації входів або виходів; індивідуально конфігуруються переривання від виводів портів P1 і P2;
роздільні регістри даних для входів і виходів; індивідуально конфігуруються внутрішні підтягуючи резистори.
Конфігурація цифрових портів вводу / виводу здійснюється програмою користовача. Налаштування функціонування цифрових портів здійснюється за допомогою декількох спеціалізованих регістрів.
Регістр даних входу PxIN.
Кожен біт регістра PxIN відображає рівень вхідного сигналу на відповідному виводі порту, якщо цей висновок використовується в якості цифрового входу / виходу:
Біт = 0: Вхідний сигнал має НИЗЬКИЙ рівень. Біт = 1: Вхідний сигнал має ВИСОКИЙ рівень.
Регістр даних виходу PxOUT.
Значення кожного біта регістра PxOUT визначає стан відповідного висновку порту, якщо цей висновок налаштований як цифровий вихід, і внутрішній підтягаючий резистор не використовується.
Біт = 0: Вихідний сигнал має НИЗЬКИЙ рівень.
Біт = 1: Вихідний сигнал має ВИСОКИЙ рівень.
Якщо використовується внутрішній підтягаючий резистор, то значення біта регістра PxOUT визначає тип «підтяжки» на відповідному виводі порту:
Біт = 0: Висновок підтягується до загального проводу.
Біт = 1: Висновок підтягується до харчування.
Регістр напряму PxDIR.
Значення кожного біта регістра PxDIR визначає напрямок передачі даних відповідного висновку порту, незалежно від обраної для цього висновку функції. Якщо висновок використовується будь-яким периферійним модулем, то біт регістра PxDIR повинен бути встановлений відповідно до вимог даного модуля.
Біт = 0: Висновок порту перемикається на вхід.
Біт = 1: Висновок порту перемикається на вихід.
Регістр включення підтягують резисторів PxREN.
Кожен біт регістра PxREN підключає або відключає внутрішній підтягаючий резистор відповідного висновку порту. Тип «підтяжки» визначається відповідним бітом регістра PxOUT.
Біт = 0: Підтягаючий резистор відключений.
Біт = 1: Підтягаючий резистор підключений.
Невикористані висновки мікроконтролера необхідно конфігурувати як виходи портів введення / виводу і залишити непідключеними, щоб уникнути появи «плаваючих» входів і знизити струм споживання пристрою. Значення біта PxOUT для такого висновку може бути будь-яким, оскільки висновок нікуди не підключений. В якості альтернативи, щоб уникнути появи «плаваючого» входу, можна до Невикористані висновки підключити внутрішній підтягаючий резистор, встановивши відповідний біт регістра PxREN.
Дана лабораторна робота має на увазі, що ви вже отримали певні знання мови Сі ++ і мови асемблер мікроконтролерів сімейства MSP430x2xx. Якщо немає, то рекомендую звернутися до першоджерела і поповнити знання необхідною інформацією.
2. Експериментальний модуль MSP430 LaunchPad (MSP-EXP430G2)
Комплект розробника LaunchPad є частиною серії MSP430 Value Line. LaunchPad оснащений вбудованим DIP-гніздом з підтримкою до 20 контактів, що дозволяє встановлювати пристрої серії MSP430 Value Line на макетній платі LaunchPad. Крім того, вбудований засіб емуляції флеш-пам'яті дозволяє, безпосередньо підключаючись до ПК, програмувати, налагоджувати і аналізувати код. У комплект поставки включені безкоштовні середовища розробки ПО, призначені для написання і налагодження програм. Завдяки клавіатурі, світлодіодам і додатковим контактам входів / виходів, призначеним для простої інтеграції з зовнішніми пристроями, LaunchPad може бути використаний для створення інтерактивних рішень.
Вбудований емулятор флеш-пам'яті з'єднує засновані на флеш-пам'яті пристрої серії MSP430 Value Line з персональним комп'ютером за допомогою кабелю міні-USB в режимі реального часу для здійснення внутрішньо-системного програмування та налагодження.
DIP-гніздо LaunchPad дає користувачам можливість швидко встановити будь-який пристрій серії MSP430 Value Line, укладений в DIP-корпус з кількістю контактів до 20.
у MSP430G2xx що додаються до виробу завантажені зразки програм.
До складу LaunchPad входить запрограмоване пристрій MSP430G2452 (MSP430G2553). Як тільки LaunchPad підключається через роз'єм USB, демонстраційна програма запускає послідовність включення світлодіодів. Натисканням кнопки P1.3 активується режим вимірювання температури.
3. Засоби програмування мікроконтролерів MSP430
Для програмування мікроконтролерів MSP430 існує кілька компіляторів і вбудованих програмних середовищ розробки(IDE). Основними програмними пакетами, призначеними для розробки додатків з використанням MSP430, є початкова (стартова) версія пакету IAR Embedded Workbench KickStart і Code Composer Studio (CCS). Як IAR, так і CCS мають безкоштовно завантажувані версії з обмеженням коду. Ці середовища повністю функціональні на пристроях серії MSP430 Value Line, оскільки дані пристрої не перевищуватимуть граничний розмір коду 4 КБ для IAR або 16 КБ для CCS. Альтернативою цим засобам розробки є середовище розробки Energia - модифікована версія середовища Arduino IDE, розроблена спеціально для програмування LaunchPad MSP430 і поширюється безкоштовно. Інтерфейс IDE повністю збігається з прабатьком, за винятком кольору. Таким чином, за допомогою Energia можна легко використовувати тексти Arduino-програм для LaunchPad. Опис середовища Energia можна отримати на сайті [5]. Звідти ж можна зробити і завантаження драйверів і програмного забезпечення.Мова програмування в середовищі Energia - мова Arduino, досить зрозуміла і проста в освоєнні. Мова Arduino заснована на C / C ++ і підтримує всі стандартні конструкції мови C і деякі з функцій мови C ++. Він також посилається на бібліотеку AVR libc і може використовувати будь-які з її можливостей. Існує повний переклад мови Arduino, призначений для подолання мовного бар'єру [6]. Перед використанням Energia потрібно встановити драйвери для LaunchPad. Драйвери можна скачати з сторінки Energia на git-hub [7]. Якщо вже встановлено пакет Texas Instruments CCS, то установку драйверів можна опустити. Потім необхідно з тієї ж сторінки скачати завантажувальний файл Energia IDE, який, як і Arduino IDE, поставляється у вигляді zip-архіву. В розпакованому архіві є виконуваний файл energia. exe, який і запускає середу Energia з порожнім полем для тексту програми.
підключається до порту USB комп'ютера за допомогою кабелю. До складу лабораторної установки входить також п'єзокерамічний випромінювач, призначений для отримання звукових ефектів.
Мал. 1.4. Зовнішній вигляд плати LaunchPad
Мал. 1.5. Вікно середовища розробки програм Energia
У меню Tools вибрати пункт Serial Port для настройки послідовного порту. Список доступних послідовних портів видається в форматі COMXXX. Зазвичай COM-порт з максимальним номером - це порт, до якого підключений LaunchPad. Його і слід вибрати (мал. 1.6).
Мал. 1.6. Налаштування послідовного порту
У меню Tools вибрати пункт Board для настройки типу мікроконтролера. У списку допустимих контролерів вибрати мікроконтролер, встановлений в DIP-гнізді отладочного модуля LaunchPad (рис. 1.7).
Мал. 1.7. Налаштування типу мікроконтролера
Середа Energia має в своєму складі достатньо велику бібліотеку прикладів програмування модуля LaunchPad. Запуск прикладу проводиться з меню File / Examples, або за допомогою кнопки Open на панелі інструментів. Познайомитися з прийомами роботи з середовищем Energia можна на простому прикладі програмування - миганні світлодіода. Для запуску прикладу необхідно вибрати Open -> 1.Basics / Blink. У вікно Energia завантажується текст програми управління миготінням червоного світлодіода (рис. 1.8).
в тілі функції setup () викликається функція pinMode (RED_LED, OUTPUT). Вона встановлює статус виводу мікроконтролера, до якого підключений червоний світлодіод, на вихід сигналу.
Мал. 1.9. Нумерація, призначення та іменування висновків мікроконтролера MSP430G2452
Мал. 1.10. Нумерація, призначення та іменування висновків мікроконтролера MSP430G2553
const int buttonPin = PUSH2; // номер вывода для кнопки const int ledPin = GREEN_LED; // номер вывода для светодиода int buttonState = 0; // переменная для чтения статуса кнопки void setup() { pinMode(ledPin, OUTPUT); // вывод светодиода – выходной сигнал // инициализация вывода кнопки на входной сигнал // с подключением внутреннего подтягивающего резистора // к линии источника питания pinMode(buttonPin, INPUT_PULLUP); } void loop(){ buttonState = digitalRead(buttonPin); // чтение статуса кнопки в переменную // проверка нажатия кнопки // если нажата if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); // включение светодиода } else { digitalWrite(ledPin, LOW); // выключение светодиода } }
В этой программе есть секция описаний. В ней декларируются две константы (номера выводов микроконтроллера, к которым подключены зеленый светодиод и пользовательская кнопка), и одна переменная целого типа, в которую читается текущее состояние кнопки.
В теле функции setup() инициализируются выводы микроконтроллера на выход (для светодиода) и на вход (для кнопки).
В теле функции loop() читается состояние кнопки. Если кнопка нажата, включается светодиод, иначе он выключается. Таким образом, результатом работы программы будет включение зеленого светодиода при нажатой пользовательской кнопке и выключение его при отпущенной.
При обработке нажатия кнопки возможны ложные срабатывания программы из-за дребезга контактов. Для устранения этого эффекта новое состояние кнопки считывают не сразу после его изменения, а через некоторый промежуток времени.
Пример программы устранения дребезга контактов можно загрузить в среде Energia:
Open -> 2.Digital/Debonce.
Кроме того, часто требуется реализовать реакцию программы не на статическое текущее состояние кнопки, а на изменение этого состояния. Например, реакция программы должна следовать только на нажатие кнопки, но не на отпускание.
Пример, в котором действие активизируется изменением состояния кнопки, можно загрузить:
Open -> 2.Digital/StateChangeDetection.
На цифровой выход может быть выдан прямоугольный сигнал определенной частоты с заполнением 50%. Для генерации таких сигналов используются функции tone() и noTone(). Продолжительность генерации сигнала может быть указана в аргументах функции tone(). Если длительность не указана, то сигнал будет длиться до вызова функции noTone(). Вывод может быть подключен к пьезоизлучателю либо другому излучателю для проигрывания звука.
В определенный момент времени может генерироваться только один сигнал. Если на любом выводе уже есть сигнал, то вызов
функции tone() не даст эффекта. Вызов функции tone() применительно к выводу, на котором уже есть сигнал, изменяет частоту сигнала на этом выводе.
Синтаксис функции tone():
tone(pin, frequency);
· tone(pin, frequency, duration).
Параметры:
pin: вывод, на котором должен генерироваться сигнал;
frequency: частота сигнала [Гц];
duration: длительность сигнала [мс] (опционально).
Синтаксис функции noTone(): noTone(pin).
Параметры:
pin: вывод, на котором необходимо прекратить генерацию сигнала.
6. Меры безопасности
Во время выполнения лабораторной работы необходимо:
· соблюдать правила включения и выключения вычислительной техники;
· не подключать кабели, разъемы и другую аппаратуру к компьютеру, не относящиеся к лабораторной установке;
· при включенном напряжении сети не отключать, не подключать и не трогать кабели, соединяющие различные устройства компьютера;
· в случае обнаруженной неисправности в работе оборудования или нарушения правил техники безопасности сообщить руководителю лабораторной работы;
· не пытаться самостоятельно устранить неисправности в работе аппаратуры;
· по окончании работы привести в порядок рабочее место.
ВНИМАНИЕ! При работе за компьютером необходимо помнить: к каждому рабочему месту подведено опасное для жизни напряжение. Поэтому во время работы надо быть предельно внимательным и соблюдать все требования техники безопасности!
7. Задание
7.1. Подключить отладочный модуль MSP430 LaunchPad с установленным в DIP-гнездо микроконтроллером MSP430G2452 при помощи кабеля к разъему порта USB компьютера. Запустить среду разработки Energia. Произвести настройку связи среды разработки Energia с отладочным модулем LaunchPad.
7.2. Загрузить примеры программ Blink, Button, Debonce, StateChangeDetection в среде разработки Energia. Изучить программные коды и произвести прошивку микроконтроллера для всех этих программ. Проверить экспериментально правильность работы программ на отладочном модуле LaunchPad.
7.3. Подключить пьезокерамический излучатель между выводами 20 (GND) и 15 (цифровой выход P1.7) микроконтроллера. Написать и отладить программу генерации последовательности звуковых сигналов (не менее трех), сопровождающихся миганием светодиодов. Произвести прошивку программы в микроконтроллер и проверить ее работу.
7.4. Написать и отладить программу имитации работы счетчика нажатий кнопки.
Варианты заданий:
· коэффициент счета счетчика должен быть равен номеру рабочего места плюс 2;
· переход счетчика в новое состояние должен происходить: при нажатии кнопки для нечетных рабочих мест и при отпускании кнопки – для четных.
Произвести прошивку программы в микроконтроллер и проверить ее работу.
8. Методика выполнения задания
8.1. Настройку программной среды Energia производить в соответствии с указаниями раздела 5
8.2. При изучении примеров программ использовать сведения из раздела 5 и описание языка Arduino из [6].
8.3. При выполнении пункта 7.3 использовать пример программы toneMultiple. Запуск последовательности звуковых сигналов осуществлять по нажатию кнопки. Каждый звук сопроводить миганием светодиодов – индивидуальным для каждого звука. Текст программы должен содержать подробные комментарии.
8.4. Составить таблицу состояний и переходов счетчика. Каждому состоянию счетчика поставить в соответствие индивидуальную комбинацию мигания светодиодов. Изменение состояния кнопки должно обрабатываться программно для устранения дребезга контактов. Переход счетчика в новое состояние должен сопровождаться звуковым сигналом. Текст программы должен содержать подробные комментарии.
9. Требования к содержанию и оформлению отчета
Отчет по лабораторной работе должен содержать:
· краткие теоретические сведения;
· формулировку задания на лабораторную работу;
· описание последовательности выполнения работы;
· изображения рабочих окон с текстами программ;
· тексты программ, не помещающихся в рабочем окне;
· выводы по лабораторной работе.
10. Контрольные вопросы
10.1. Каково назначение и основные характеристики микроконтроллеров MSP430?
10.2. По какой архитектуре построены микроконтроллеры MSP430?
10.3. Какое назначение имеют основные модули микроконтроллеров MSP430?
10.4. Как распределяется память микроконтроллеров MSP430 и как организовано хранение информации в ней?
10.5. Как организуется работа цифровых портов ввода-вывода в микроконтроллерах MSP430?
10.6. Каковы назначение, основные параметры и состав отладочного модуля MSP430 LaunchPad?
10.7. Каким образом отладочный модуль MSP430 LaunchPad связывается с компьютером и с устройствами ввода-вывода?
10.8. Какие программные средства используются для программирования работы микроконтроллеров MSP430?
10.9. Какими основными возможностями располагает среда разработки Energia?
10.10. Какие основные конструкции реализованы в языке программирования Arduino?
10.10. Как производится программирование цифрового ввода и вывода в среде разработки Energia?
Критерии оценки выполнения лабораторной работы
Лабораторная работа считается выполненной в том случае, если:
- студент выполнил все задания в соответствии с представленной методикой;
- результаты выполнения работы, представленные в виде отчета
и DSP и ARM да еще и Ардуиновская среда, хотя как по мне, лучше бы простой Бейсик туда интегрировали,
тогда армия разработчиков увеличилась бы в разы.
нанопотреблением и с возможностью программирования в среде Ардуино которая у Texas Instruments
называется Energia, дает огромные возможности для творчества. Нужно здесь сообщество
Energia-Arduino создавать.