ГлавнаяРегистрацияВход Сайт Сокола Сергея Вторник, 26.11.2024, 20:47
  Каталог статей Приветствую Вас Гость | RSS

 
 
Главная » Статьи » Мои статьи

Микроконтроллеры MSP430 для начинающих (статья 1)

В отличие от PIC и AVR, микроконтроллеры MSP430 имеют 16-битную архитектуру. Кроме того, диапазон питающего напряжения их варьируется от 1,8 до 3,6 В, что вместе с пониженным энергопотреблением позволяет создавать на их базе устройства с батарейным питанием. Контроллеры MSP430 изначально ориентированы на асинхронную работу процессора и периферийных модулей. Для нас, как разработчиков, это значит, что для тактирования процессора, таймеров, АЦП, интерфейсных модулей могут использоваться разные источники тактового сигнала, которых в одном микроконтроллере имеется до 4 штук. Таким образом можно добиться оптимального соотношения производительность/ энергопотребление. Что касается периферийных устройств, то тут однозначной характеристики дать нельзя, поскольку для разных подсемейств набор периферийных модулей может весьма существенно отличаться. В целом же, имеющиеся для продажи в наших магазинах контроллеры имеют сходный набор периферии с продуктами фирм Microchip и Atmel.

Касательно имеющейся в наличии литературы по контроллерам MSP430 можно с сожалением отметить, что тут они однозначно и явно поигрывают своим конкурентам. Автору удалось найти не более десятка русскоязычных книг, посвященных программированию данных контроллеров. Однако на сайте производителя имеется довольно обширный набор примеров исходных кодов с подробным описанием (естественно, на английском языке) [3].

Сложность программирования данных микроконтроллеров по большому счету такая же, как и для PIC или AVR. Конечно, имеются некоторые нюансы, связанные с переходом на 16-битную архитектуру, а также с другим способом организации памяти, но при программировании на Си эти отличия нивелируются.

С чего же начать знакомство с новыми контроллерами? Вам потребуются: собственно контроллеры, средство для прошивки контроллеров и программная среда для написания кода и создания исполняемого кода.

Тут фирма Texas Instruments сделала всем большой подарок, выпустив отладочную плату MSP-EXP430G2 LaunchPad [4], внешний вид которой представлен на рис. 1.

Рисунок 1 – Внешний вид отладочной платы MSP-EXP430G2 LaunchPad

Плата эта мгновенно завоевала огромную популярность среди зарубежных радиолюбителей, и постепенно набирает обороты и на постсоветском пространстве. Чем же она так привлекательна? На страницах журнала «Радио» уже публиковалась информация о ней в качестве альтернативы плате Arduino [5].

Что же получает покупатель, приобретя данный комплект?

Встроенный flash-эмулятор для программирования и отладки. Таким образом, производитель сразу избавляет разработчиков от необходимости самостоятельно собирать программатор для прошивки памяти контроллера. Кроме того, пользователь получаем сразу и отладчик, который позволяет не только прошивать контроллер, а и осуществлять отладку со всеми необходимыми функциями: точки останова, пошаговое выполнение программы, просмотр всех переменных и регистров контроллера в реальном времени.
На плате распаяна цанговая панелька для подключения микроконтроллеров MSP430 в 14- и 20-выводных DIP-корпусах а также два однорядных штекерных разъема, на которые выведены все ножки микроконтроллера, что позволяет легко наращивать функциональность платы путем изготовления собственных модулей расширения.
Для первичного тестирования программ на плате также распаяно две кнопки (одна из которых – RESET), а также два светодиода.
И самое главное, в комплект входит два микроконтроллера подсемейства MSP430G2xx. Тут надо быть внимательным: с января 2012 года компания Texas Instruments выпустила новую ревизию отладочной платы. Старая ревизия (rev. 1.4) имела в своем составе следующие микросхемы:

MSP430G2211IN14 – 2 кбайт flash-памяти, 128 байт ОЗУ, 10 линий ввода-вывода, один 16-битный таймер, сторожевой таймер, детектор пониженного напряжения, аналоговый компаратор
MSP430G2231IN14 – 2 кбайт flash-памяти, 128 байт ОЗУ, 10 линий ввода-вывода, один 16-битный таймер, сторожевой таймер, детектор пониженного напряжения, модуль универсального интерфейса, 10-битный АЦП.

В новой ревизии (rev. 1.5) в комплект входят уже другие контроллеры:

MSP430G2553IN20: 16 кбайт flash-памяти, 512 байт ОЗУ, 16 линий ввода-вывода с поддержкой емкостного сенсорного интерфейса, два 16-битных таймера, сторожевой таймер, детектор пониженного напряжения, аналоговый компаратор, 10-битный АЦП, модуль универсального последовательного интерфейса.
 MSP430G2452IN20: 8 кбайт flash-памяти, 256 байт ОЗУ, 16 линий ввода-вывода с поддержкой емкостного сенсорного интерфейса, один 16-битный таймер, сторожевой таймер, детектор пониженного напряжения, аналоговый компаратор, 10-битный АЦП, модуль универсального последовательного интерфейса.

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

В качестве приятного дополнения в комплект входят разъемы BLS для подключения плат расширения, кварцевый резонатор на 32768 кГц, который можно впаять при необходимости, а также кабель mini-USB для подключения платы к компьютеру.

Но самое главное – это стоимость данного комплекта. В интернет-магазине Texas Instruments его можно заказать за 9,99 $. Можно сказать, что цена довольно приемлемая, учитывая, что доставка по всему миру осуществляется бесплатно. В местных магазинах стоимость приблизительно в два раза выше, что, однако, тоже является вполне доступным, принимая во внимание комплектацию.

К сожалению, не обходится без небольшой, но ложки дегтя. В комплект не входит диск с программным обеспечением, которое предлагается скачать из Интернета. Но в эпоху повсеместного широкополосного доступа к сети скачать 150 МБ не составляет особой сложности.

Итак, приобретая отладочную плату MSP-EXP430G2 LaunchPad, пользователь сразу получает программатор-отладчик и два микроконтроллера, которые в новой ревизии (rev. 1.5) имеют характеристики сравнимые с таковыми у распространенных ATMega8 или PIC16F876, а по некоторым показателям даже превосходящие их. В дальнейшем при написании данного цикла автор будет использовать именно эту плату.

Осталось разобраться только с программным обеспечением для написания и отладки собственных программ. Какие же программные продукты можно использовать для работы с MSP430?

Во-первых, это собственная разработка фирмы Texas Instruments – среда Code Composer Studio. На официальном сайте можно скачать бесплатную версию, имеющую ограничение на объем кода в 16 килобайт [6]. Учитывая тот факт, что максимальный объем flash-памяти у микроконтроллеров семейства MSP430 в DIP-корпусах на данный момент составляет как раз 16 килобайт, можно смело говорить о полной функциональности данного программного продукта. К недостаткам его можно отнести высокую требовательность к системе. На компьютере с объемом ОЗУ менее 1 ГБ ставить Code Composer Studio смысла не имеет, иначе процесс компиляции и прошивки занимает весьма много времени. В общем, рекомендовать данную среду можно только владельцам мощных компьютеров, собирающимся мириться с неудобствами ради возможности написания кода большего объема.

Во-вторых, это программный пакет известного создателя ПО для микроконтроллеров – фирмы IAR Systems, именуемый IAR Embedded Workbench. С сайта Texas Instruments можно скачать бесплатную версию этой среды, которая называется IAR Embedded Workbench Kickstart [7]. К сожалению, в бесплатной версии ограничение объема кода составляет всего 4 килобайта. Но, учитывая, что поначалу вряд ли написанные коды программ будут превышать данный объем, автор при написании данного цикла будет ориентироваться именно на эту среду разработки. В отличие от ПО Texas Instruments, она имеет более низкие системные требования, при этом выполняя все те же функции, что и Code Composer Studio, но несколько быстрее.

В-третьих, можно использовать бесплатное ПО MSPGCC [8], но в настоящее время это оно представляет собой набор исполняемых из командной строки файлов без графического интерфейса, поэтому рекомендовать ее для начинающих на взгляд автора не стоит.

Теперь можно считать, что имеется все необходимое для разработки устройств на микроконтроллерах MSP430. Пора перейти к практике и написать первую программу. В дальнейшем изложении будет описан порядок действий при работе со средой IAR Embedded Workbench Kickstart.

Для начала нужно перейти на страничку [7] и скачать оттуда бесплатную версию среды IAR Embedded Workbench Kickstart. Процесс установки стандартный, лучше выбрать способ «Complete», чтобы установить все модули программы.

После того, как программное обеспечение будет установлено, следует подключить к компьютеру отладочную плату через разъем mimi-USB. Операционная система сама найдет и установит необходимые драйверы. Если же на экране появится запрос на установку нового оборудования, нужно выбрать «Автоматическая установка», и нужный драйвер будет загружен.

После этого в системе появится новый виртуальный СОМ-порт (рис. 2).

Рисунок 2 – Новый виртуальный СОМ-порт

Поскольку в контроллер зашита демонстрационная программа, то при подаче питания сразу же начнут перемигиваться светодиоды LED1 и LED2 с частотой примерно 2 Гц.

Когда вы убедились, что драйвера на отладочную плату установлены, можно запускать программную среду IAR через меню «Пуск».

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

1. В меню «Project» нужно выбрать пункт «Create new project…» и в появившемся окне сразу нажать на экранную кнопку «ОК», ничего не меняя.

2. Далее следует сохранить вновь созданный проект под выбранным именем. Автор рекомендует для каждого проекта создавать отдельную папку. Для первого проекта можно дать имя папке «Lesson 1», и проект также назвать «Lesson1».

3. В меню «File» выбрать пункт «New», и в открывшемся списке снова «File». В результате в поле редактирования появляется файл «Untitled1».

4. В меню «File» выбрать теперь пункт «Save As…» и сохранить файл в ту же папку, где ранее был сохранен проект. Расширение для файла необходимо выбрать «*.с», если программа будет написана на языке Си, или «*.asm», если текст будет на Ассемблере. Автором рекомендуется называть файлы программ «main» для стандартизации. Поэтому назвать файл можно «main.c».

5. В меню «Project» выбрать пункт «Add Files…» и в открывшемся окне указать вновь созданный файл «main.c». Теперь файл с будущим текстом программы включен в проект.

6. В меню «Project» выбрать пункт «Options…». В появившемся окне сразу открывается категория «General Options», где во вкладке «Target» в поле «Device» необходимо указать тип установленного на плате контроллера. Поскольку изначально в плате находится контроллер MSP430G2553, то нужно выбрать его в выпадающем списке. Затем следует перейти в категорию «Debugger» и там во вкладке «Setup» в поле «Driver» вместо «Simulator» выбрать «FET Debugger». Это нужно для того, чтобы созданный файл прошивки загружался в подключенный контроллер, а не во встроенный в среду разработки симулятор контроллера. Более ничего менять не нужно, и можно нажимать экранную кнопку «ОК».

Теперь можно писать собственную программу, которая в дальнейшем будет загружена в контроллер. Вместо обычного мигания светодиодом предлагается написать программу, реализующую следующую задачу. При подаче питания включается светодиод LED1, а LED2 погашен. При нажатии и удержании кнопки S2 светодиод LED1 гаснет, а LED2 включается. При отпускании кнопки S2 все возвращается в исходное состояние.

 Текст программы, реализующий указанную задачу, приведен ниже.

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

int main(void)             //2.Главная функция программы

{                          //3.

 WDTCTL = WDTPW|WDTHOLD;   //4.Остановка сторожевого таймера

 P1DIR = BIT0|BIT6;        //5.Перевод линий, на которых находятся LED1и LED2, на выход

 P1REN = BIT3;             //6.Включение подтягиваюющего резистора на линии кнопки S2

 P1OUT = BIT3;             //7.Подключение подтягивающего резистора к плюсу питания

 while (1)                 //8.Бесконечный цикл

 {                         //9.

  if (P1IN&BIT3)           //10.Если кнопка S2 не нажата,

  {                        //11.

    P1OUT |= BIT0;         //12.то включить светодиод LED1

    P1OUT &=~BIT6;         //13.и выключить LED2

  }                        //14.

  else                     //15.Иначе

  {                        //16.

    P1OUT |= BIT6;         //17.включить светодиод LED2

    P1OUT &=~BIT0;         //18.и выключить LED1

  }                        //19. 

 }                         //20.

}                          //21.

 

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

Для того чтобы перейти в режим отладки, нужно нажать экранную кнопку «Download and Debug», которая имеет вид зеленого треугольника над параллелограммом и расположена в верхней правой части панели инструментов. После ее нажатия при первом запуске процесса отладки программа выдаст окно с запросом сохранения файла рабочего пространства «Workspace». Можно сохранить его под именем «Workspace» в папке с проектом. После этого автоматически начнется процесс компиляции и компоновки исполняемого кода, и при отсутствии ошибок в коде программы созданный исполняемый код будет загружен в установленный на плате контроллер.

При наличии ошибок будет выдано соответствующее предупреждение с указанием вида ошибок и строк, в которых они были обнаружены.

Если же процесс прошел без ошибок, среда разработки перейдет в режим отладки, что будет видно по двум появившимся панелям инструментов (рис. 3). Для начала достаточно знать назначение всего нескольких экранных кнопок на них.

Рисунок 3 – Окно программы в режиме отладки

Экранная кнопка «Go», в виде трех синих стрелок над параллелограммом запускает процесс отладки программы в реальном времени. При ее нажатии загруженная в контроллер программа начинает свое исполнение. При ее нажатии можно видеть, что на отладочной плате загорелся красный светодиод LED1. При нажатии на кнопку S2, расположенную на плате, он гаснет, и зажигается зеленый светодиод LED2. При отпускании кнопки S2 снова загорается красный светодиод. Написанная программа работает.

Экранная кнопка «Stop Debugging» в виде красного крестика останавливает процесс отладки. При ее нажатии окно среды разработки возвращается в первоначальное состояние, но запущенная в контроллере прошивка продолжает выполняться, если включена экранная кнопка «Leave Target Running» в виде трех синих стрелок над красным крестиком.

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

Прежде чем переходить к рассмотрению текста программы, следует сделать небольшое теоретическое введение, касающееся конфигурирования и использования портов ввода-вывода. В микроконтроллерах MSP430 порты имеют следующее обозначение: вначале идет буква «Р», а затем номер порта (Р1, Р2, Р3 и т.д.) Каждый порт может объединять до 8 линий ввода-вывода. Все порты являются двунаправленными.

В семействе MSP430 для работы с каждым из портов ввода-вывода связано от 6 до 9 регистров контроллера. Для понимания написанной в данной статье программы нужно знать назначение только четырех из них.

Для задания направления передачи данных используется регистр PxDIR (где х – номер порта). Если какой-то бит данного регистра равен 0, то соответствующий ему вывод работает как цифровой вход, а если 1, то как цифровой выход. В любом режиме работы вывода его текущее состояние отражается в соответствующем ему бите регистра PxIN. В некоторых микроконтроллерах MSP430 имеется возможность задействовать внутренние подтягивающие резисторы, подключенные к выводам контроллера. За эту функцию отвечает регистр PxREN. Если какой-либо бит этого регистра равен 0, то подтягивающий резистор, подключенный к соответствующему выводу, отключен, если же бит равен 1, то подтягивающий резистор включен. Ну и, наконец, регистр PxOUT. Он выполняет двоякую функцию. Если вывод функционирует как цифровой выход, то значение каждого бита регистра PxOUT определяет уровень выходного сигнала соответствующего вывода: 0 – низкий уровень, 1 – высокий уровень. Если же вывод функционирует как вход, то значение битов этого регистра определяет способ подключения подтягивающего резистора: 0 – вывод подтягивается к общему проводу, 1 – вывод подтягивается к проводу питания.

Рассмотрим теперь работу программы. Для удобства все строки в ней пронумерованы (рис. 3). При описании программы считается, что читатель знаком с синтаксисом языка Си. Для первого раза программа будет описана построчно, в дальнейшем ранее рассматривавшиеся конструкции будут опускаться.

Строка 1. К файлу текста программы директивой компилятора include подключается файл «msp430.h». В этом файле содержатся ссылки на заголовочные файлы всех известных среде IAR микроконтроллеров семейства MSP430. Имя нужного контроллера было указано ранее в меню «Options…». Теперь среда разработки загружает необходимый заголовочный файл автоматически. Данная строка должна присутствовать всегда.

Строка 2. Объявление главной функции программы main. Тип возвращаемого функцией значения может быть любым: int, void, char. Параметры в данную функцию не передаются.

Строки 3 и 21. Определяют границы функции main.

Строка 4. С нее начинается собственно текст основной программы. Как обычно принято при написании программ для микроконтроллеров сначала идет раздел инициализации. В этой строке производится отключение сторожевого таймера контроллера. В отличие от микроконтроллеров AVR и PIC, в MSP430 сторожевой таймер по умолчанию включен, и если в нем нет необходимости, то его приходится отключать. Поэтому в большинстве случаев раздел инициализации начинается именно с этой строки.

Строка 5. Перевод выводов Р1.0 и Р1.6 на выход. В заголовочных файлах контроллеров MSP430 описаны макроопределения BIT0, BIT1, …, BIT7, которые равны соответственно 0х01, 0х02,… 0х80. Таким образом, в макроопределении BIT0 записана логическая «1» только в нулевом бите, а все остальные равны «0», в BIT1 логическая «1» только в первом бите и т.д. Исходя из вышесказанного, запись P1DIR = BIT0|BIT6 можно трактовать следующим образом: вначале выполняется операция побитового «ИЛИ» между BIT0 и BIT6, в результате которой получается байт с логическими единицами в нулевом и шестом бите, а затем полученное значение сохраняется в регистре P1DIR.

Почему мы используем как выходы именно выводы P1.0 и Р1.6? Если скачать с сайта компании Texas Instruments руководство пользователя отладочной платы MSP-EXP430G2 LaunchPad [9] и найти в ней принципиальную электрическую схему платы, то можно увидеть, что аноды светодиодов LED1 и LED2 подключены к выводам Р1.0 и Р1.6 соответственно, а катоды – к общему проводу.

Строка 6. Включение подтягивающего резистора на входе Р1.3. Именно к этому входу подключена кнопка S2 [9], а поскольку внешний подтягивающий резистор на плате отсутствует, то приходится использовать внутренний.

Строка 7. Подключение вывода Р1.3 к выводу питания через подтягивающий резистор. Теперь, если кнопка не нажата, то на выводе Р1.3 будет присутствовать высокий уровень напряжения, а при нажатии – низкий, поскольку кнопка замыкает вывод на общий провод.

Строка 8. Объявление бесконечного цикла. Строки 4-7, которые были описаны до начала этого цикла, выполнятся один раз после запуска программы. А строки 10-19, входящие в цикл, будут выполняться постоянно, пока контроллер находится в режиме работы.

Строки 9 и 20. Определяют границы бесконечного цикла.

Строка 10. Проверка состояния кнопки S2. Для проверки используется стандартный прием – побитовое логическое «И» регистра P1IN и макроопределения BIT3. Условие будет истинным только в том случае, если третий бит регистра P1IN будет равен 1, то есть, если кнопка не нажата, поскольку, как было написано выше, регистр P1IN содержит текущее состояние выводов порта.

Строки 11 и 14. Определяют границы действий, выполняемых при отпущенной кнопке.

Строка 12. В нулевой бит регистра P1OUT записывается логическая единица. Здесь снова используется стандартный прием – побитовое логическое «ИЛИ» регистра P1OUT и макроопределения BIT0 с сохранением результата в P1OUT. При этом в регистре P1OUT устанавливается в «1» только нулевой бит. После выполнения этой строки светодиод LED1 включится, поскольку на выходе P1.0 окажется высокий логический уровень.

Строка 13. В шестой бит регистра P1OUT записывается логический ноль. Тут применяется еще один стандартный прием – побитовая инверсия значения BIT6 и побитовое логическое «И» полученного значения и регистра P1OUT с сохранением результата в P1OUT. При этом в регистре P1OUT сбрасывается в «0» только шестой бит. После выполнения этой строки светодиод LED2 выключится, поскольку на выходе P1.6 окажется низкий логический уровень.

Строка 15. Начало альтернативной ветви, которая выполняется, если условие в строке 10 ложно (то есть, если кнопка S2 нажата).

Строки 16 и 19. Определяют границы действий, выполняемых при нажатой кнопке S2.

Строка 17. По структуре аналогична строке 12, за исключением того, что при ее выполнении включается светодиод LED2.

Строка 18. По структуре аналогична строке 13, за исключением того, что при ее выполнении выключается светодиод LED1.

Вот в принципе и все, что касается описания работы программы. Человек, хотя бы поверхностно знакомый с языком Си, разберется в ней без особого труда.

Еще одно замечание относительно семейства MSP430. Все микроконтроллеры этого семейства в DIP-корпусах имеют полную совместимость выводов. Это значит, что написанная программа без всяких изменений будет работать на любом контроллере, входящем в комплект MSP430 LaunchPad (и новой ревизии, и старой), нужно только задать его название в опциях проекта. Такая совместимость является большим плюсом, поскольку позволяет легко производить обновление существующего проекта путем замены контроллера на более мощный без существенных изменений в написанной ранее программе.

 

Перечень ссылок

Страница микроконтроллеров семейства MSP430 на сайте производителя. – <http://www.ti.com/lsds/ti/microcontroller/16-bit_msp430/overview.page>
Страница микроконтроллеров подсемейства Value Line на сайте производителя. – <http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/ultra-low_power/msp430g2x/overview.page>
Страница для скачивания архива с примерами программ для микроконтроллеров семейства MSP430. –<http://www.ti.com/tool/msp430ware?DCMP=msp430ware&HQS=msp430ware-bhp>
Страница отладочной платы MSP430 LaunchPad на сайте производителя. – <http://www.ti.com/tool/msp-exp430g2>
Стародубцев М. Arduino или LaunchPad – что лучше? – Радио. 2011. №11. с. 29-31.
Страница для скачивания программного пакета Code Composer Studio. – <http://processors.wiki.ti.com/index.php/Download_CCS>
Страница для скачивания программного пакета IAR Embedded Workbench Kickstart. – <http://processors.wiki.ti.com/index.php/IAR_Embedded_Workbench_for_TI_MSP430>
Страница для скачивания программного пакета MSPGCC. –  <http://sourceforge.net/projects/mspgcc/files/Windows/mingw32/>
Руководство пользователя отладочной платы MSP430 LaunchPad. – <http://www.ti.com/lit/pdf/slau318>

Категория: Мои статьи | Добавил: mimino (22.07.2014)
Просмотров: 18943 | Комментарии: 22 | Рейтинг: 0.0/0
Всего комментариев: 2
2 mimino  
0
Добрый день!

Там в списке только контроллеры в DIP корпусе. А так, поскольку MSP430F2274 имеет интерфейс SBW, то LaunchPad вполне должен его поддерживать. У него есть только проблемы с поддержкой более новых контроллеров, там надо уже и более новый LaunchPad

1 ice  
0
Добрый день.

А MSP-EXP430G2 LaunchPad точно работает с MPS430f2274 ?
Почему-то я не увидел в перечне этого МК в описании к отладочной. http://www.ti.com/lit/ug/slau318g/slau318g.pdf

Имя *:
Email *:
Код *:
 
 
Категории раздела
Мои статьи [20]

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Вход на сайт

Поиск

Посетители

Погода
GISMETEO: Погода по г.Мариуполь

 

Copyright MyCorp © 2024
Бесплатный конструктор сайтов - uCoz