Каждый раз, когда приходится настраивать очередной периферийный модуль MSP430, мы сталкиваемся с рядом сложностей. К таким сложностям можно отнести незнание списка регистров конкретного модуля, отличительные особенности конкретного микроконтроллера или плохое понимание англоязычных документаций. В любом из перечисленных случаев Grace может стать полезным.
После установки CCS выбираем Project→New CCS Project, в облати Project templates and examples выбираем Empty Project→Empty Grace (MSP430) Project, в области Device не забудьте указать микроконтроллер из списка.
Как только появится экран «Grace — Welcome», нажимаем клавишу Device Overview. Перед Вами появится следующая картинка.
Кликнув по конкретному устройству на ней, Вы перейдёте к его настройке, которую можно производить в нескольких режимах. Режимы могут отличаться для разных устройств, но обычно это Basic User, Power User и Registers. Basic User и Power User предназначены для быстрой настройки периферийного устройства интуитивно. Registers отображает список всех регистров устройства и позволяет менять их значения.
Совет: в datasheet к микроконтроллеру не всегда содержится полная информация об интересующем устройстве, про все регистры и параметры обычно можно прочитать в файле MSP430xxxx Family User’s Guide, который можно скачать на сайте Texas Instruments.
Поскольку для работы я уже привык использовать Workbench, после завершения настройки, все конфигурационные данные требуется перенести туда. Для этого нажимаем Project→Build All, находим в папке проекта директорию /src/csl/, в ней и находятся все *.c файлы с конфигурацией каждого устройства.
- #include «msp430f2274.h»
- #include <string>
- void UARTWriteString(string str);
- bool watchdogReset = true;
- void main(void)
- {
- WDTCTL = WDT_MRST_32; // Watchdog автоматически
- // перезапустит систему через 32ms.
- BCSCTL1 = CALBC1_1MHZ; // Устанавливаем тактовую частоту Basic Clock System.
- DCOCTL = CALDCO_1MHZ; // Устанавливаем тактовую
- // частоту Digital Controlled Oscillator.
- P3SEL = BIT4 + BIT5; // Выбираем функцию P1.4/P1.5 как TXD/RXD для UART.
- UCA0CTL1 |= UCSWRST; // Этот бит блокирует работу прерываний от UART и работу
- // сдвигового регистра чтобы не мешать
- // настройке (грубо говоря отключает UART).
- UCA0CTL1 |= UCSSEL_2; // Наш UART будет работать от
- // SMCLK (Sub-main clock), тоесть от 1MHZ.
- UCA0BR0 = 0x68; // Делитель частоты для SMCLK (1000000 / 9600).
- UCA0BR1 = 0x00;
- UCA0MCTL = 0x04; // Определяет маску модуляции.
- // Это помогает минимизировать ошибки.
- UCA0CTL1 &= ~UCSWRST; // Включаем UART обратно.
- P1DIR |= BIT0; // Настройка светодиодов.
- P1DIR |= BIT1;
- P1OUT &= ~BIT0;
- P1OUT &= ~BIT1;
- UARTWriteString(«—Привет, Хабр!—«);
- unsigned char data;
- while(true)
- {
- while (!(IFG2&UCA0RXIFG)) // Проверка готовности буфера приёма.
- if(watchdogReset)
- WDTCTL = WDTPW + WDTCNTCL; // Сброс таймера watchdog в ноль.
- data = UCA0RXBUF;
- if(data == 0x01)
{ - UARTWriteString(«—Погасить зеленый светодиод.—«);
- P1OUT &= ~BIT1;
- }
- else if(data == 0x02)
- {
- UARTWriteString(«—Зажечь зеленый светодиод.—«);
- P1OUT |= BIT1;
- }
- else if(data == 0x03)
- {
- UARTWriteString(«—Переключить состояние красного светодиода.= BIT0;
- }
- else
- {
- UARTWriteString(«—Принятые данные не соответствуют.—«);
- watchdogReset = false;
- }
- }
- }
- void UARTWriteString(string str)
- {
- int strSize = str.length();
- for(int i = 0; i < strSize; i++)
- {
- WDTCTL = WDTPW + WDTCNTCL; // Сброс таймера watchdog в ноль.
- while (!(IFG2&UCA0TXIFG)); // Проверка готовности буфера отправки.
- UCA0TXBUF = str[i];
- }
- }
Небольшое видео, которое позволит понять что именно делает пример.
В отличии от предыдущих статей, я постарался дать внятные комментарии прямо в коде программы. Не вижу смысла в этот раз пояснять каждый использованный в коде регистр. Хочу лишь обратить внимание на некоторые аспекты.
Я надеюсь, что эта статья оказалась полезна тебе, читатель.
Когда я нашел USB-программатор TI ez430, он выглядел как один из самых простых способов начать работу с MCU. Как я могу ошибаться, это есть в названии ez! Оказывается, это на самом деле легко … в основном.
Ez430 отлично подходит, если вы хотите использовать маленькие целевые платы, которые продает TI, но недостаток информации для истинного новичка расстраивает при попытке перейти к программированию внешних микросхем, а объем технической информации от Texas Instruments огромен.
В этой краткой статье я надеюсь показать, как начать работу с теми DIP-образцами, которые вы заказали у TI с помощью ez430. Я буду работать с тем же микроконтроллерным блоком (MCU), что и на целевой плате ez430, а именно с MSP430F2013. Любой MSP430x2xx будет работать с тем же методом, и, насколько я знаю, вся линия MSP430 использует одни и те же программные соединения. Если вы используете пакет, отличный от пакета с двумя встроенными устройствами (DIP или DIL), или устройство, отличное от MSP430x2xx, то вам нужно будет обратиться к таблице данных для устройства, чтобы найти подходящие местоположения контактов.
Для программирования msp430 есть только несколько частей, которые вам нужны. Вот список:
провод
Микросхема
MSP430 MCU
eZ430
4-контактный разъем (.050 сетка)
Краткое примечание о 4-контактном разъеме. В руководстве пользователя ez430 указан номер детали Mill-Max. Когда я последний раз проверял их, Mouser.com имел их в наличии, и Mill-Max может предложить образцы.
Для программирования MSP430 требуется только 4 провода, включая соединения Vcc и Vss. Схема ниже должна помочь. Это единственные соединения, необходимые для загрузки программы в MCU.
Я построил две платы программирования. Первый использует небольшой макет, ZIF-разъем и 4 провода от старого кабеля IDE с 4-контактным разъемом, припаянным к одному концу. Разъем Zero Insertion Force просто экономит усилия при перемещении MCU.
Второй использует DIP-разъем от Mill-Max и несколько выводов, которые у меня были, а также некоторые другие компоненты. Я завернул большинство соединений. Нужно было только припаять 4-контактный разъем. По сути это протоплата без генератора. Смотрите здесь для схемы прото платы.
Как я уже говорил, когда у вас есть готовое оборудование, ez430 прост в использовании. Программа IAR Kickstart, входящая в комплект устройства, поможет вам быстро приступить к работе. Прилагается пример программы, которая мигает светодиодом, подключенным к порту 1.0. Чтобы запустить пример программы на вашей плате, просто добавьте светодиод и резистор на контакте 2 и подтягивающий резистор на 47 кОм на контакте 10, и вы должны быть выключены и мигать.
Другой ресурс программирования, чтобы научиться использовать msp430 можно найти на этом сайте.
Вот и все. Есть несколько других примеров программ. Если вы хотите попробовать их, прежде чем приступить к программированию, быстрый поиск «проектов msp430» должен принести вам немало результатов. Удачи и счастливого программирования!
Страница TI MSP430
Руководство пользователя ez430
MSP430x2xx Руководство пользователя
Техническое описание Mill-Max Socket
Страница Леона Хеллера
MSP430 Программирование
Просто купил стартовую панель MSP430
Прочитал материал, но я не могу узнать из всех этих подробных источников, как придерживать мою программу C внутри микроконтроллера, Они не объективны (я начал с руководств, которые попали внутрь, а затем после нескольких сотен ссылок на веб-сайте texas, Они плохо информативны),
ИМЕТЬ В ВИДУ:
Ниже, мои шаги, предпринятые до сих пор: (Они НЕ работали, Вот почему я спрашиваю здесь, Я бы оценил очень объективную процедуру/исправления сначала, а затем, мозговой штурм)
Скачан mspgcc-20120406-p20120911
Installed that on Code::Blocks, using Settings > Compiler — Toolchain Executables tab
(Я пробовал Energia, но не кажется очень ортодоксальным редактором ,c И мне нравятся кодовые блоки, или devcpp, или, в качестве третьего варианта, блокнот ++ или даже Eclipse)
I’ve also tried CodeComposerStudio, After downloading packages and starting a full project answering neverending questions, I still don’t know how to flash the code,
Я даже сделал простую программу, чтобы моргнуть во главе:
#include
#include
#include
void ConfigureCpu(void)
{
WDTCTL = 0x5a80;
// ACLK = 32768 Hz
// MCLK = 16000000 Hz
// SMCLK = 16000000 Hz
DCOCTL = 0x74;
BCSCTL1 = 0x0F;
BCSCTL2 = 0x88;
BCSCTL3 = 0x84;
P4DIR = 0xff;
}
void delayms(t)
{
int i, x;
for(i=0;i
Это не работает по двум причинам:
'DCOCTL' undeclared (first use in this function)|
And if I comment those registers, I get the following:
cannot open linker script file memory,x||No such file or directory|
,
L: \ MSP \ — мой каталог для всего, что связано с этим путешествием
Пример:
L: \ MSP \ НКУ
L: \ MSP \ Flasher \
L:\MSP\Programs //my ,c are stored here
(Code :: Blocks устанавливается в корень C 🙂
Я хотел бы, чтобы кто-то сказал мне, что мне нужно узнать (шаг за шагом, если возможно, с самого начала, до самого конца — от выбора инструментов, до загрузки на контроллер)
LaunchPad является простым в использовании средством разработки, предназначенным для начинающих и опытных пользователей, создающих приложения на основе микроконтроллеров. За 4,30 долл. LaunchPad обеспечивает все, что вам нужно для начала разработки собственных проектов.
Комплект разработчика LaunchPad является частью серии MSP430 Value Line. LaunchPad снабжен встроенным DIP-гнездом с поддержкой до 20 выводов, что позволяет устанавливать устройства серии MSP430 Value Line на макетной плате LaunchPad. Кроме того, встроенное средство эмуляции флэш-памяти позволяет, напрямую подключаясь к ПК, без труда программировать, отлаживать и анализировать код. В комплект поставки включены бесплатные среды разработки ПО, предназначенные для написания и отладки программ. Благодаря клавиатуре светодиодам и дополнительным выводам входов/выходов, предназначенным для простой интеграции с внешними устройствами, LaunchPad может быть использован для создания интерактивных решений.
Почему LaunchPad?
LaunchPad – это простой в использовании, доступный и масштабируемый проводник в мир микроконтроллеров и семейства MSP430.
Простой – LaunchPad содержит все оборудование и ПО, необходимые для начала работы. Проекты на основе открытого исходного кода и примеры кода помогут пользователям быстро освоиться и начать работу.
Доступный – За 4,30 долл. можно приобрести комплект LaunchPad, в состав которого входит макетная плата, 2 программируемых микроконтроллера MSP430, кабель мини-USB, соединители для печатной платы, внешний кристалл для обеспечения более высокой точности тактовой частоты и бесплатно загружаемые интегрированные среды разработки ПО (IDE) – все, что необходимо для того, чтобы начать работу прямо сегодня.
Масштабируемый – LaunchPad является простым средством для ознакомления с семейством микроконтроллеров MSP430. По мере того как требования приложений изменяются, разработанные при помощи LaunchPad программы могут быть перенесены на старшие модели устройств серии MSP430.
С чего начать?
Обзор Code Composer Studio 4.1
Запуск MSP430 и программирование GPIO
Использование аналого-цифрового преобразователя ADC10
Работа с прерываниями и тактовым генератором
Оптимизация кода для маломощных операций
Использование последовательных интерфейсов
Компания TI зафиксировала беспрецедентный спрос на средство MSP430 Value Line LaunchPad, создавший экстраординарный наплыв пользователей на наших серверах и вылившийся в поток заказов в первые же дни продаж. Мы ценим вашу поддержку и воодушевление, которое вы подарили нам своим вниманием, и приносим извинения за задержки в запуске интернет-магазина.
Входящие в комплект устройства | Описание | Документация |
MSP430G2211IPN14 | 2 КБ флэш-память, 128 Б RAM, 10 GPIO, 1 16-разр. таймер, WDT, BOR, компаратор | Техническое описание |
MSP430G2231IPN14 | 2 КБ флэш-память, 128 Б RAM, 10 GPIO, 1 16-разр. таймер, WDT, BOR, USI (I2C, SPI), внутр. термодатчик, 8-канальный 10-разр. АЦП | Техническое описание |
Видео «Распаковываем LaunchPad»
Для MSP430 существует множество других компиляторов и встроенных сред разработки (IDE), в том числе Rowley Crossworks и MSPGCC. Однако примеры проектов создавались с использованием IAR Embedded Workbench KickStart и Code Composer Studio (CCS). Как IAR, так и CCS имеют бесплатно загружаемые версии с ограничением кода. Эти среды полностью функциональны на устройствах серии MSP430 Value Line, поскольку данные устройства не будут превышать предельный размер кода 4 КБ для IAR или 16 КБ для CCS.
Приведенные выше ссылки указывают на бесплатные версии с ограничением по размеру кода. IAR Embedded Workbench KickStart является бесплатной версией с ограничением размера кода до 4 КБ, а CCS v4 предоставляет бесплатную версию с ограничением размера кода до 16 КБ. Поскольку устройства серии MSP430 Value Line находятся в пределах этих ограничений, то бесплатные версии каждой из сред разработки (IDE) будут полнофункциональны на устройствах серии MSP430 Value Line.
В настоящее время операционная система Linux официально не поддерживается. IAR Embedded Workbench работает под управлением WINE в Ubuntu 10.04, но LaunchPad сам не адресуется на порт /dev/ttyUSB*, устанавливаясь на /dev/ACM0. Linking com1 под управлением WINE на ACM0 не позволяет осуществлять отладочное подключение через среду.
В настоящее время операционная система Mac OS X официально не поддерживается. См. MSP430 LaunchPad Mac OS X, содержащий некоторые приблизительные, неофициальные инструкции по компиляции mspgcc и mspdebug для Mac OS X.
LaunchPad содержит исходные коды микропрограмм, графического интерфейса, файлы Gerber/PCB, схемы, спецификации материалов и другие проектные файлы. Предоставляя исходные коды, LaunchPad обеспечивает пользователям полноценную гибкую среду разработки. Загрузить проектные файлы в разделе Интернет-ресурсы.
DIP-гнездо LaunchPad дает пользователям возможность быстро установить любое устройство серии MSP430 Value Line, заключенное в DIP-корпус с количеством выводов до 20. В настоящее время поддерживаются устройства, перечисленные в приведенной ниже таблице. LaunchPad также будет поддерживать новые устройства серии MSP430 Value Line.
Серия микроконтроллеров MSP430 Value Line (MSP430G2xx) обеспечивает производительность 16-разрядных устройств по цене 8-разрядных, при стоимости устройства от 0,25 долл. (для партий от 100 тыс. единиц). Экономически эффективные устройства MSP430G2xx снабжены основанными на флэш-технологии микроконтроллерами с производительностью до 16 MIPS, рабочим напряжением 1,8–3,6 В и сверхмалым энергопотреблением. Имеются модификации с маломощным задающим генератором (VLO), внутренними согласующими резисторами и уменьшенным количеством выводов.
Руководство пользователя устройств серии MSP430G2xx Value Line
Устройство серии MSP430 Value Line | Заказ бесплатных образцов | Программа (КБ) | SRAM (Б) | I/O | 16-разр. таймеры | Сторож. схема | BOR | USI (I2C/SPI) | Комп. A+ | Термодатчик | АЦП кан/рес | Цена (партия от 1 тыс. шт.) |
MSP430G2001 | Образцы прямо сейчас! | 0,5 | 128 | 10 | 1 | Y | Y | — | — | — | — | 0,34 долл. |
---|---|---|---|---|---|---|---|---|---|---|---|---|
MSP430G2101 | Образцы прямо сейчас! | 1 | 128 | 10 | 1 | Y | Y | — | — | — | — | 0,44 долл. |
MSP430G2121 | Образцы прямо сейчас! | 1 | 128 | 10 | 1 | Y | Y | Y | — | — | — | 0,46 долл. |
MSP430G2201 | Образцы прямо сейчас! | 2 | 128 | 10 | 1 | Y | Y | — | — | — | — | 0,47 долл. |
MSP430G2221 | Образцы прямо сейчас! | 2 | 128 | 10 | 1 | Y | Y | Y | — | — | — | 0,48 долл. |
MSP430G2111 | Образцы прямо сейчас! | 1 | 128 | 10 | 1 | Y | Y | — | Y | — | — | 0,46 долл. |
MSP430G2211 | Образцы прямо сейчас! | 2 | 128 | 10 | 1 | Y | Y | — | Y | — | — | 0,48 долл. |
MSP430G2131 | Образцы прямо сейчас! | 1 | 128 | 10 | 1 | Y | Y | Y | — | Y | 8-кан./АЦП10 | 0,49 долл. |
MSP430G2231 | Образцы прямо сейчас! | 2 | 128 | 10 | 1 | Y | Y | Y | — | Y | 8-кан./АЦП10 | 0,52 долл. |
Здесь размещены демонстрации созданных сообществом проектов – ознакомьтесь с ними!
Исходная температура замеряется при активации режима и может быть измерена заново еще одним нажатием кнопки P1.3. LaunchPad сигнализирует о повышении или понижении температуры изменением яркости красного или зеленого светодиодов соответственно. Данные о температуре также передаются на ПК через USB при помощи обратного универсального асинхронного интерфейса и могут быть отображены в поставляемом графическом интерфейсе или в терминале.
Данное демонстрационное приложение использует интегрированную в кристалл периферию устройства MSP430G2231. Так, например, 10-разрядный АЦП используется для опроса внутреннего термодатчика, а 16-разрядные таймеры для – управления яркостью встроенных светодиодов и обеспечения взаимодействия программного асинхронного интерфейса с ПК.
Исходные коды этого демонстрационного приложения доступны для загрузки в разделе Завершенные проекты. Кроме того, доступны исполняемые и исходные файлы графического интерфейса, который отображает данные, переданные на ПК с платы LaunchPad.
Следуйте указаниям данного учебного пособия, чтобы быстро освоить использование CCS и LaunchPad. Видео и PDF-документ объясняет раскладку выводов LaunchPad, знакомит с Code Composer Studio и демонстрирует, как использовать примеры кода для того, чтобы добиться мигания встроенных в LaunchPad светодиодов.
Мигание светодиодов с использованием CCS и LaunchPad – PDF-версия пособия.
Данный архив содержит исходные коды приложений для различных устройств серии MSP430G2xx Value Line, а также подобным образом настроенных устройств MSP430F20xx. Прочтите находящийся в архиве файл «readme.txt», чтоб узнать, коды каких примеров больше подходят вам и текущие настройки устройства.
Полную коллекцию исходных кодов для всех устройств MSP430 можно увидеть на странице Библиотека примеров для MSP430.
Функция | Описание | Имя файла |
Термодатчик (Заранее загруженная демонстрация, поставляемая в комплекте LaunchPad) | Для использования устройств серии MSP430 Value Line со встроенным 8-канальным 10-разрядным АЦП. Встроенный АЦП считывает внутреннюю температуру микроконтроллера. Он также использует 16-разрядные таймеры устройства MSP430G2231 для управления ШИМ, изменяющими яркость светодиодов и взаимодействия с обратным асинхронным интерфейсом, передающим данные на ПК. Исходный код графического интерфейса, созданного с использованием Обработки, также доступен для загрузки. | Загрузить проект Исходные файлы пользовательского интерфейса |
Заинтересованы в обучении или преподавании с MSP430 Value Line и LaunchPad?
Подпишитесь на нашу Университетскую рассылку
и посетите ti.com/msp430university
Для получения технической поддержки размещайте свои вопросы на http://e2e.ti.com. Пожалуйста, размещайте здесь только те комментарии, которые относятся к статье о MSP430 LaunchPad (MSP-EXP430G2).
Стартовые наборы LaunchPad & BoosterPack от Texas Instruments доступны как для микроконтроллеров семейства MSP430, так и для представителей Tiva C и C2000.
Набор разработчика состоит из базовой платы LaunchPad и плат-расширений BoosterPack, которые могут быть подключены к плате LaunchPad для расширения её функциональных возможностей.
Приведем обзор одной из базовых плат LaunchPad для MSP430 — MSP-EXP430G2.
Плата LaunchPad для MSP430 предназначена скорее для знакомства с серией MSP430G2 и основными возможностями целевого микроконтроллера, чем на создание конечных приложений.
Состав платы:
В комплект разработчика входят два микроконтроллера серии MSP430G2x, которые могут быть установлены на оценочную плату: MSP430G2553 и MSP430G2452.
Заказать MSP-EXP430G2
Узнать о других доступных LaunchPad
Платы-расширения BoosterPack
Платы-расширения BoosterPack выпускаются как Texas Instruments, так и третьими фирмами.
|
TPL0501EVM – плата-расширение, позволяющая интегрировать в отладочный комплекс на основе LaunchPad цифровой потенциометр TPL0501 производства Texas Instruments. Поддерживается два режима работы:
Заказать TPL0501EVM |
|
TMP006 BoosterPack (430BOOST-TMP006) имеет в своем составе плату TMP006EVM (бесконтактный датчик температуры) и плату-переходник, позволяющую использовать базовую плату LaunchPad для работы с одной или двумя TMP006EVM.
Заказать 430BOOST-TMP006 |
|
CC110L RF BoosterPack (CC110L RF) – плата-расширение для разработки конечных приложений на основе микроконтроллера MSP430G2xxx и радиочастотного приемопередатчика CC110L. Плата напрямую подключается к LaunchPad и содержит модуль CC110L и площадку для макетирования.
Заказать CC110L RF |
|
EM Adapter BoosterPack (BOOST-CCEMADAPTER) является переходником между базовой платой LaunchPad и различными модулями для беспроводных коммуникаций от Texas Instruments. Плата-переходник позволяет получить доступ ко всем линиям ввода/вывода обоих модулей.
Заказать BOOST-CCEMADAPTER |
|
Capacitive Touch BoosterPack (430BOOST-SENSE1) – расширение для работы с емкостными интерфейсами. На плате реализованы:
Заказать 430BOOST-SENSE1 |
|
Audio Capacitive Touch BoosterPack (430BOOST-C55AUDIO1) сочетает в себе функции сенсорных интерфейсов платы-расширения 430BOOST-SENSE1 (см. выше) и элементы для работы с изображением и звуком, а именно:
Заказать 430BOOST-C55AUDIO1 |
Узнать о других доступных BoosterPack
В юности мне довелось работать с процессором на ядре PDP-11. В то время этот процессор был одним из передовых и программирование на Ассемблере доставляло настоящее удовольствие.
Прошли годы, появилось много различных архитектур и ядер. Следуя любопытству познакомился со многими. Но в один прекрасный день попадается в руки микроконтроллер с ядром MSP430. При изучении даташита я был поражен и обескуражен. В памяти проснулись юношеские воспоминания и теплота давно забытых чувств. Это был «сын» PDP-11!
Все ядра микроконтроллеров так или иначе схожи. Изучив одно из них можно достаточно быстро осваивать все остальные от простых к более сложным. Микроконтроллеры отличаются набором периферии, выводов, частотами. Для всех них написано множество языков программирования, компиляторов и сред разработки. Можно писать на языках высокого уровня или Ассемблере. И все это будет понятно и прозрачно.
Но MSP430 поражает воображение на любом уровне. При программировании на С++ процесс выглядит как творение шедевра художником, при программировании на Ассемблере – изобретение чего-то быстрого и послушного. На этапе проектирования схем – полет фантазии архитектора самого современного небоскреба. Вы можете себе представить, что практически любому выводу микроконтроллера вы можете назначать нужные вам функции? А наличие огромного количества источников тактовой частоты? А что ваше устройство может работать годами от одной батарейки?
Почему же MSP430 не имеет такого большого распространения как AVR или C51? Возможно отпугивает первоначальная стоимость программатора, возможно малое количество людей с полетом фантазии соответствующей этому ядру, возможно сложность приобретения «стартовых комплектов».
В нашем новом проекте «TiTAN» Вы узнаете что такое MSP430. Мы планируем помочь начинающим и профессионалам в освоении этого ядра и огромного семейства микроконтроллеров с ядром MSP430. В проект входит широкий модельный ряд «стартовых комплектов» и средств отладки, множество библиотек с примерами работы со всей периферией.
Уроки здесь => https://titan-project.com/category/blog-ru/uroki-msp430/
Необходимое программное обеспечение вы найдете здесь => https://titan-project.com/soft/
Целью данной статьи является помощь в начале освоения микроконтроллеров MSP430 фирмы Texas Instruments.
Была сделана попытка систематизировать действия, которые позволят минимальными усилиями сделать первые шаги в освоении данного типа микроконтроллеров, не перегружая при этом специфичными и иногда трудными (если не сказать отталкивающими) сведениями. Статья не претендует на полноту обзора указанных микроконтроллеров, а лишь позволяет сделать первые шаги на пути их освоения.
Преимущества MSP430:
1. Очень широкая линейка для практически любых задач.
2. Очень широкий ряд корпусов, от DIP до очень мелких типа pqfp.
Весь доступный ряд можно посмотреть с помощью удобной странички от TI:
Перейдя по ссылкам слева и выбирая нужную серию попадаем в каталог:
Где можно выбрать нужный себе кристалл по объему Flash-памяти, ОЗУ, наличию USART, АЦП, корпуса и т.д. Сразу скажу, что я не использовал корпуса типа DIP. Корпус типа SOIC легко распаивается на самодельную плату изготовленную по технологии ЛУТ. Достаточно стабильно у меня получаются платы и для корпусов типа PW (расстояние между ногами 0,65мм).
3. Сверхнизкое потребление питания (бывает ну крайне важно). На этом остановимся поподробнее ниже с примерами и цифрами.
4. Мне также например нравиться то, что для одного и того же типа корпуса расположение ног для разных серий и типов в пределах серии одинаково. Это дает возможность легко заменить один тип на другой без изменения печатной платы.
5. Немаловажно, что все типы микроконтроллеров можно бесплатно заказать у TI для освоения.
В качестве примера два разных MSP430 в одинаковом корпусе, MSP430f2619 и MSP430f149:
Для начала освоения выберем msp430f1232 или msp430f1222, они отличаются только объемом flash памяти и абсолютно идентичны по расположению ног. Я считаю этот микроконтроллер самым ходовым в радиолюбительской практике. Его плюсом можно также назвать наличие модели его младшего брата msp430f1121 (без usart) в Proteus.
На этой странице есть даташит, а по этой ссылке прочие документы.
Документация от TI имеет особенность (для тех кто уже знаком с микроконтроллерами от, например AVR ATMEL). В даташите указываются специфичные именно для этого камня особенности (количество памяти, наличие USART, электрические характеристики и т.д.). А описание регистров находятся в документе MSP430x1xx Family User’s Guide (Rev. F) для серии msp430f1xx. Этот документ общий для всей серии.
Есть также настольные книги «руководство пользователя» и «рекомендации по применению».
А также примеры исходных кодов для семейства msp430f1x по ссылке.
Итак, начнем.
Минимальная обвязка для включения микроконтроллера:
Сперва нам понадобятся макетка и программатор.
Пример моей макетки в файле к статье.
Теперь небольшое отступление на предмет программатора.
Микроконтроллеры msp430 могут быть запрограммированы следующим образом:
4-х проводной JTAG (прошивка и отладка (очень удобно)) бывает LPT и USB.
2-х проводной JTAG, так называемый Spyi-Bi-wire (прошивка и отладка) только USB.
BSL – последовательный интерфейс (только прошивка). COM или USB-COM.
Не все микроконтроллеры могут быть зашиты всеми указанными программаторами. Смотреть надо в даташите на каждый камень. (Так рекомендуемые для начала работы MSP430F1232 можно шить только по 4-х проводному JTAGу или по BSL) .
Где взять программатор? Естественно можно купить. Есть дорого фирменные от TI или от Olimex, а также море китайских клонов.
Например BSL (хотя bsl можно сделать из любого шнурка от сотового в котором есть линии RTS и DTR) можно найти на AliExpress.
JTAG через USB
JTAG через LPT
Также на сайте TI можно почти за даром заказать LaunchPad:
Который в своем составе имеет 2-х проводной JTAG Spy-Bi-Ware USB, но к сожаленью этот Spy-Bi-Wire есть не во всех камнях. Я поигрался. Мне не пригодилось (у меня практически не было камней с поддержкой spy-bi-wire) и я его отдал другу для освоения.
Также программатор можно сделать и самостоятельно. Где взять детали, смотрите в конце статьи.
В архиве программатор bsl.rar схема BSL программатора на переходнике USB-COM
В архиве программатор JTAG LPT-FET.rar схема и печатка для программатора LPT-FET. Необходимо отметить, что это упрощенная мной схема LPT-FET от Olimex
И ей требуется внешнее питание 3.3В от платы микроконтроллера. Плата получилась компактная и умещается в корпус DB-25.
Для BSL программатора корпуса еще нет, но скорее всего это будет кусок кабель-канала нужного сечения.
Выходные сигналы BSL программатора выведены на разъемы типа PLS. И отдельно выведено питание 3.3В (бонусом так сказать)
Оба типа мной собраны и работают.
Программировать через JTAG можно из среды разработки. А для программирования через BSL используется бесплатная и удобная программа от Kurt-а MSPFET. (Приложена в архиве или может быть скачана по ссылке)
Разработка кода может вестись в различных средах
Я использую IAR. Причем я не беру IAR от TI с ограничением кода, а спокойно зарегистрировавшись на iar.com скачиваем 30 дневную полнофункциональную версию IAR для msp430. (а потом можно и еще раз скачать и т.д.) по ссылке
Итак, допустим макетка сделана (нам в первую очередь нужно запаять стабилизатор на 3.3Вольта, светодиод на ножку P1.0 и разъем для LPT-FET. Кварц и прочее можно допаять позже). Программатор LPT-FET тоже.
Устанавливаем и запускаем IAR. Нажимаем create new project:
Выбираем шаблон:
Даем свое название и вот окно проекта с типовым шаблоном.
Перво наперво правой кнопкой мыши кликаем по: название – debug -> option
Выбираем наш микроконтроллер
Меняем тип отладчика
Задаем, что у нас программатор lpt от olimex на lpt1
В окне сишного кода меняем весь на код из файла demo led.c, нажимаем F7 и видим:
Нажимаем зеленый треугольник и происходит заливка кода в микроконтроллер:
В открывшемся окне нажимаем «GO» старт программы:
В итоге, видим мигающий светодиод на плате.
Если у вас программатор типа BSL, то порядок действий следующий: вВ IAR выбираем нужный контроллер. Пишем код (например demo led.с).
Правой кнопкой по debug, option и ставим настройки в пункте linker как на рисунке:
Жмем F7. Запускаем MSPFET от Kurta. Открывается окно. Нажимаем Setup. Выбираем программатор BSL.
Ставим настройки для выходных ног, патча бутлодера (есть фишка, но нам сейчас не надо), скорости (тоже пока не надо) и т.д.
Для программатора сделанного из TUSB3410 настройки выглядят так.
В выпадающем списке выбираем нужный микроконтроллер.
Меню, открыть, и идем в каталог где лежит наш тестовый проект. В нем ищем каталог Debug. В нем ищем каталог EXE:
И там выбираем файл прошивки с расширением .a43:
Открываем. Нажимаем кнопку auto. Все процесс пошел. В случае удачных действий получаем картинку
И мигающий светодиод. (Если в настройках msp-fet от Kurta поставить галочку перегружать файл, то в дальнейшем нет необходимости повторять все действия. Изменил прошивку в IAR. Нажал F7. Зашел в MSPFET. Нажал auto.)
Теперь вкратце об особенностях микрконтроллеров msp430.
Супер гибкая система тактирования. В примере мы использовали внутренний генератор на 750кГц. Можно изменять его частоту регистрами настройки DCO (смотри руководство пользователя). Можно на ноги XIN XOUT повесить кварц часовой или высокочастотный (причем для часового кварца конденсаторы уже есть внутри камня и их номинал можно выбирать). В программе можно легко переключаться с одного источника тактирования на другой. В купе с разными режимами спячки можно обеспечить беспрецедентное снижение энергопотребления. Например, затактировать таймер от ACKL настроенный на 32768Гц от часового кварца. Разрешить прерывание от таймера. В прерывании разбудить ядро и настроить тактирование ядра на максимальную частоту, быстро сделать необходимые вычисления и уйти опять в глубокий сон. Подробное описание систем тактирования и режимов питания смотрите в руководстве пользователя.
Вот простой пример для повторения.
Зашьем код из файла norma.c
Включаем через миллиамперметр и видим, что в моменты когда светодиод не горит ток потребления 230мкА.
Зашьем код из файла LPM0.c
Включаем через миллиамперметр и видим, что ток потребления 50мкА. (Данные замеры проводились тестером на пределе 20мА, но в качестве иллюстрации сойдет). Особенно целесообразно применение данных микроконтроллеров в паре с ЖК экранами, где столь малое энергопотребление проявляется в полной мере.
Кстати такое низкое потребление порождает и соответствующие проблемы, связанные с паразитным питанием. Особенно если учесть, что для питания достаточно 1.8В. При довольно насыщенной схеме, контроллер стартует от всего подряд, вплоть до usart. Поэтому будьте внимательны. Часто, микроконтроллер не выходит на связь с JTAG, пока не отключишь внешние схемы (если не приняты меры по исключению паразитного питания и согласования уровней).
Что не очень понравилось в MSP430 0- так это неудобно реализованная работа с Flash памятью для хранения каких либо переменных пользователя. Так называемая память info разбита на сегменты по 128 байт и беда в том, что записать можно в каждую ячейку отдельно, но только один раз. Для изменения ранее записанной ячейки необходимо стереть весь сегмент и заново записать в нужную ячейку. Это приводит к тому, что перед изменением любой ячейки необходимо сначала прочитать в ОЗУ все используемые ячейки, изменить необходимую, стереть весь сегмент и записать из ОЗУ все во info flash.
Итак, первый проект Вы удачно сделали и зашили в контроллер. Что дальше?
Для освоения периферии мне очень помогли примеры использования MSP430 от TI, ранее упомянутые в статье. Много примеров и проектов есть в книге “рекомендации по применению” от КОМПЭЛ.
Раздел на форуме по MSP430
Если вы решили сами собрать программатор для MSP430, то я рекомендую зарегистрироваться на сайте TI с указанием своего реального номера телефона и может быть даже выдуманным местом работы.
Заказать в качестве бесплатных образцов следующие компоненты:
– MSP430F1222IDW корпус soic
– MSP430F1232IDW корпус soic
– преобразователь COM-usb tusb3410 (для bsl программатора)
– стабилизатор reg104-3.3 в корпусе SOT223-5
Привезут в течении недели, возможно перед этим позвонят и спросят на русском языке зачем Вам это необходимо. Тут уж каждый сам за себя. Придумывайте что хотите. Как привезут, позвонят еще раз из службы доставки. Именно поэтому должен быть правильный телефон и адрес.
Скачать файлы к статье
Автор: Трухов Виктор Павлович
MSP-EXP430G2 — это средство разработки , также известное как LaunchPad, предоставляемое Texas Instruments для изучения и практики использования их микроконтроллеров. Эта плата относится к категории MSP430 Value Line, где мы можем программировать все микроконтроллеры серии MSP430. Изучение , как использовать микроконтроллеры TI , определенно было бы мощным инструментом в нашем рукаве, потому что TI действительно огромна и предлагает широкий выбор микроконтроллеров по очень менее конкурентоспособной цене.
Подробную статью об использовании Energia IDE с MSP430 мы уже рассматривали. В этом руководстве мы узнаем о Code Composer Studio и о том, как его использовать для программирования MSP430 . Это руководство написано для очень новичков, и для него не требуется никакого оборудования, кроме платы MSP430 и компьютера. В конце этого руководства мы сможем мигать встроенным светодиодом MSP430 .
MSP-EXP430G2 Макетная плата:Великолепная плата красного цвета — это плата разработки MSP-EXP430G2.Эта плата может программировать микроконтроллеры TI, относящиеся к серии MSP430. Основная цель этой платы — загрузить код с компьютера в MCU и прочитать последовательные данные из MCU для целей отладки. Он также предоставляет распиновку для каждого контакта MCU, а также два светодиода и кнопку, чтобы упростить разработку. Плата претерпела значительные изменения с момента своего запуска, и ниже показана плата MSP_EXP430G2 Rev1.5 .
MSP430G2553 имеет лучшие характеристики, чем другие серии , он также имеет модуль UART, который будет очень удобен при отладке с использованием Code Composer Studio .Следовательно, в этой серии руководств мы будем использовать MSP430G2553 для изучения всех функций этого комплекта разработчика.
Питание и Тестирование платы разработки :Прежде чем мы начнем что-либо, TI уже загрузил образец программы на ваш микроконтроллер MSP430G2553, так что давайте включим плату и проверим, работает ли она. Вы можете подключить плату через мини-разъем USB, и как только вы это сделаете, вы должны заметить, что светодиоды (красный и зеленый) в нижнем левом углу вашей платы поочередно светятся.Затем вы можете нажать кнопку, подключенную к P1.3, чтобы проверить, работает ли внутренний датчик температуры. Да, MSP2553 имеет внутренний датчик температуры , после нажатия кнопки просто потрите пальцами, чтобы нагреть его, и поместите его на микросхему, вы можете заметить, что красный светодиод загорается, указывая на повышение температуры. Прохладный!! Верно?? Хорошо, теперь перейдем к программной среде.
Программное обеспечение для программирования (IDE) для MSP430 LaunchPad:Texas Instruments позволяет нам программировать их микроконтроллеры в различных средах.Официальной является Code Composer Studio, широко известная как CCS . Это программное обеспечение доступно бесплатно. Кроме того, это требует минимального опыта работы с микроконтроллерами. Не волнуйтесь, мы рассмотрим каждый шаг, чтобы познакомиться с CCS.
Для написания нашей программы доступна еще одна IDE, то есть Energia IDE . Итак, в чем разница между CCS и Energia IDE. Мы уже рассмотрели Energia IDE в нашем предыдущем учебном пособии.
Energia IDE vs.Code Composer Studio:Energia — это бесплатная среда с открытым исходным кодом, которая позволяет нам легко программировать микроконтроллеры TI. Основная цель Energia — сделать программирование микроконтроллеров TI таким же простым, как программирование в Arduino. Итак, Energia является эквивалентом Arduino , который поддерживает микроконтроллеры Texas Instruments. Люди, которые использовали Arduino, согласятся с этим после загрузки и запуска Energia IDE.
Code Composer Studio (CCS) — это более универсальная профессиональная IDE, которая имеет больше функций и возможностей с точки зрения доступа к внутренней архитектуре микроконтроллера.Он имеет встроенную функцию отладки, которая может проверять ошибки в вашем коде, и вы можете запускать свой код построчно, что помогает находить ошибки без какой-либо головной боли. Потребуется время, чтобы освоиться с CCS. После того, как вы установите это замечательное программное обеспечение, поверьте мне, вы узнаете что-нибудь о конкретном микроконтроллере. Вы должны воспользоваться таблицей данных микроконтроллера, чтобы написать свою программу.
Если вы закончили с Arduino iDE или Energia IDE, измените среду кодирования на CCS, — это наиболее требовательное программное обеспечение в Industries .
Загрузка и запуск Code Composer Studio:Это программное обеспечение доступно на веб-сайте Texas Instrument бесплатно. Итак, вы можете скачать его по данной ссылке Ссылка для скачивания. Мы будем использовать Code Composer Studio V7, но вы также можете скачать последнюю версию, процедура остается той же.
Можно либо загрузить все программное обеспечение с помощью веб-установщика, либо загрузить установщик / автономный установщик. Это программное обеспечение довольно тяжелое, около 1 ГБ, поэтому вам нужно дождаться его загрузки.
После загрузки программного обеспечения откройте его и установите.
При нажатии на кнопку «Настройка», как и в случае с любым другим программным обеспечением, вам будет предложено согласиться с условиями и выбрать папку для установки. После этого вам нужно выбрать доски, для которых вы хотите скачать файлы. В нашем случае мы используем MCU MSP430, выберите первый вариант . Вы можете скачать более одного файла доски.
Следующее окно предназначено для выбора зонда отладки.По умолчанию доступен один вариант, поэтому нажмите на него и закончите. Теперь ваша установка начнется, поэтому просто дождитесь ее завершения.
После установки он спрашивает о папке рабочего пространства, поэтому выберите папку, в которой вы хотите сохранить файлы, и нажмите ОК.
Итак, давайте посмотрим на первое окно, которое мы увидим.
Это простой интерфейс, в котором вы можете увидеть меню «Начало работы», в котором вы можете начать работу над своим проектом. Рядом с «Начало работы» находится обозреватель ресурсов .Это потрясающая функция этого программного обеспечения, в которой вы можете найти каждую деталь продукта TI, такую как таблицы данных, документацию и т. Д. Нет необходимости искать таблицы в Интернете, просто нажмите на проводник ресурсов и выберите устройство, которое вы хотите изучить, после чего вы сможете увидеть каждую деталь о продукте.
Создание первого проекта в Code Composer Studio: мигание светодиода:Создание проекта в CCS:
Шаг 1: — Нажмите File -> New -> CCS project.Как показано ниже
Шаг 2: — Затем вам нужно выбрать плату MSP, которую вы используете. Я использую MSP430G2553, поэтому выберу его, как показано.
Дайте название вашему проекту и нажмите «Готово».
Как только вы нажмете «Готово», откроется новое окно с уже записанным в него кодом строк.
Запись кода в CCS:
Давайте посмотрим на структуру уже приведенного кода .Первая строка — это наш заголовочный файл, который зависит от варианта, который мы выбираем при создании проекта. Как я уже сказал, я использую MSP430G2553, поэтому я переименую файл заголовка в
.#include
Следующая строка — это основная функция . В основной функции вы увидите инициализацию таймера Watchdog . MSP430 и другие микроконтроллеры на базе TI имеют специальный тип таймера, известный как Watchdog timer .Работа этого таймера состоит в том, чтобы сбрасывать микроконтроллер, когда он начинает зависать или перестает реагировать. В нашем коде мы не будем использовать сторожевой таймер , потому что он выше точки зрения новичка. Когда мы ВКЛЮЧАЕМ микроконтроллер, сторожевой таймер включен по умолчанию, поэтому мы должны ВЫКЛЮЧИТЬ этот таймер , написав эту строку
WDTCTL = WDTPW | WDTHOLD;
Теперь нам нужно записать код для мигания встроенного светодиода , который подключен к P1.0 . К P1.6 подключен еще один светодиод. Мы будем использовать только первый светодиод. Вы можете написать код для переключения этих двух светодиодов также после того, как поймете программу мигания.
Во-первых, мы должны объявить эти PINS, поскольку мы используем их как INPUT или OUTPUT.
Существует много типов регистров, то есть блоков памяти, используемых для управления ПОРТАМИ. Итак, для определения ПОРТА как ВХОДА или ВЫХОДА, используется регистр PXDIR (X — номер порта) (регистр направления данных). Если PXDIR равен 1, он действует как ВЫХОД, а 0 — как ВХОД.Наш светодиод находится в порту нет. 1, поэтому мы будем писать как P1DIR.
Нам нужно настроить PIN 0, так как наш светодиод подключен к этому PIN, и это ВЫХОД. Каждый порт имеет 8 бит, и мы хотим, чтобы Bit0 был ВЫСОКОМ, чтобы он стал ВЫХОДНЫМ. Итак, мы назначаем P1DIR как
P1DIR = 0b00000001; он находится в двоичном формате, мы также можем записать его в шестнадцатеричном формате, т.е. P1DIR = 0x01;
Затем мы должны установить конкретный вывод конкретного порта как высокий или низкий. Для этой цели мы должны использовать P1OUT , регистр , 1 для высокого и 0 для низкого . Сначала я включаю светодиод, устанавливая BIT0, так как 1 другой остается нулевым.
P1OUT = 0b00000001 ; P1OUT = 0x01; // в шестнадцатеричной системе счисления
Поскольку в MSP430 нет встроенной функции задержки, мы должны использовать для цикла , чтобы обеспечить задержку.
Итак, на следующем шаге мы должны объявить переменную ‘i’ для задержки, которая может быть записана как
Беззнаковое int i;
Сначала мы сделаем PIN0 ВЫСОКИМ и зададим некоторую задержку, используя цикл FOR , после чего сделаем PIN-код НИЗКИМ.Таким образом, мы получаем эффект моргания. Программу пишем так:
P1OUT = 0X01; // делаем бит0 ВЫСОКИМ for (i = 0; i <20000; i ++) {// задержка до тех пор, пока светодиод не станет ВЫСОКИМ } P1OUT = 0X00; // делаем бит 0 НИЗКИМ for (i = 0; i <20000; i ++) {// задержка, пока светодиод не станет LOW }
Вы можете написать этот код и другим способом. Вы можете использовать оператор BITWISE, чтобы сократить количество строк кода. Доступны побитовые операторы OR, AND и XOR.= 0X01; // переключаем биты for (i = 0; i <20000; i ++) {// задержка, пока вы не сделаете светодиод LOW HIGH } }
Загрузите код в MSP430:
Полная программа CCS приведена в конце страницы. Итак, наш код готов к записи в MSP430. Итак, подключите MSP к ноутбуку с помощью USB-кабеля.
Теперь нам нужно скомпилировать / собрать наш код , для этого нажмите Project -> Build All. Проверьте отчет о компиляции в поле консоли в нижней части окна.Будет показано « Build Finished ».
Пора загрузить программу. Щелкните Run -> Debug . После нажатия кнопки «Отладка» вы увидите окно, связанное с энергосбережением, просто нажмите «Продолжить». В опции отладки перейдите к Run-> Resume . Если ваши параметры отключены, не беспокойтесь, перейдите к View-> Debug , а затем снова перейдите к Run-> Resume .
Как только вы отлаживаете код, ваша программа загружается в MSP.Быстрый способ - просто нажать кнопку воспроизведения / паузы на экране. Экран отладки будет выглядеть, как показано ниже
Если светодиод не мигает, то Сбросьте плату или снова подключите USB.
Итак, вот как вы можете написать простую программу в Code Composer Studio, чтобы мигать светодиодом, используя MSP430 .
MSP430F1:
MSP430F110, MSP430F1101, MSP430F1101A, MSP430F1111A, MSP430F112, MSP430F1121, MSP430F1121A, MSP430F1122, MSP430F1132, MSP430F122, MSP430F1222, MSP430F123, MSP430F1232, MSP430F133, MSP430F135, MSP430F147, MSP430F1471, MSP430F148, MSP430F1481, MSP430F149, MSP430F1491, MSP430F155, MSP430F156, MSP430F157, MSP430F1610 , MSP430F1611, MSP430F1612, MSP430F167, MSP430F168, MSP430F169, MSP430F169-M
MSP430F2:
MSP430F2001, MSP430F2002, MSP430F2003, MSP430F2011, MSP430F2012, MSP430F2013, MSP430F2101, MSP430F2111, MSP430F2112, MSP430F2121, MSP430F2122, MSP430F2131, MSP430F2132, MSP430F2232, MSP430F2234, MSP430F2252, MSP430F2254, MSP430F2272, MSP430F2274, MSP430F233, MSP430F2330, MSP430F235, MSP430F2350, MSP430F2370, MSP430F2410 , MSP430F2416, MSP430F2417, MSP430F2418, MSP430F2419, MSP430F247, MSP430F2471, MSP430F248, MSP430F2481, MSP430F249, MSP430F2491, MSP430F2616, MSP430430926F
MSP430AFE2:
MSP430AFE221, MSP430AFE222, MSP430AFE223, MSP430AFE231, MSP430AFE232, MSP430AFE233, MSP430AFE251, MSP430AFE252, MSP430AFE253
MSP430G2:
MSP430G2001, MSP430G2101, MSP430G2102, MSP430G2111, MSP430G2112, MSP430G2113, MSP430G2121, MSP430G2131, MSP430G2132, MSP430G2152, MSP430G2153, MSP430G2201, MSP430G2202, MSP430G2203, MSP430G2210, MSP430G2211, MSP430G2212, MSP430G2213, MSP430G2221, MSP430G2230, MSP430G2231, MSP430G2232, MSP430G2233, MSP430G2252, MSP430G2253 , MSP430G2302, MSP430G2303, MSP430G2312, MSP430G2313, MSP430G2332, MSP430G2333, MSP430G2352, MSP430G2353, MSP430G2402, MSP430G2403, MSP430G2412, MSP430G2413, MSP430G2432, MSP430G2433, MSP430G2444, MSP430G2452, MSP430G2453, MSP430G2513, MSP430G2533, MSP430G2544, MSP430G2553, MSP430G2744, MSP430G2755, MSP430G2855, MSP430G2955
MSP430i2:
SP430i2020, MSP430i2021, MSP430i2030, MSP430i2031, MSP430i2040, MSP430i2041
MSP430T:
MSP430TCH5E
MSP430F4:
MSP430F412, MSP430F412-FW, MSP430F413, MSP430F413-FW, MSP430F4132, MSP430F415, MSP430F415-FW, MSP430F4152, MSP430F417, MSP430F417-FW, MSP430F423, MSP430F4230, MSP430F423A, MSP430F423A, MSP430F425, MSP430F4250, MSP430F425A, MSP430F425A, MSP430F4260, MSP430F427, MSP430F4270 , MSP430F427A, MSP430F427A, MSP430F435, MSP430F435-100P, MSP430F4351, MSP430F436, MSP430F436-100P, MSP430F4361, MSP430F437, MSP430F437-100P, MSP430F4371, MSP430F447, MSP430F448, MSP430F4481, MSP430F449, MSP430F4491, MSP430F4616, MSP430F46161, MSP430F4617, MSP430F46171, MSP430F4618, MSP430F46181 , MSP430F4619, MSP430F46191, MSP430F47126, MSP430F47127, MSP430F47163, MSP430F47166, MSP430F47167, MSP430F47173, MSP430F47176, MSP430F47177, MSP430F47183, MSP430F47186, MSP430F47187, MSP430F47193, MSP430F47196, MSP430F47197, MSP430F477, MSP430F478, MSP430F4783, MSP430F4784, MSP430F479, MSP430F4793, MSP430F4794
MSP430FE4:
MSP430FE423, MSP430FE4232, MSP430FE423A, MSP430FE423A, MSP430FE4242, MSP430FE425, MSP430FE4252, MSP430FE425A, MSP430FE425A, MSP430FE427, MSP430FE427, MSP430FE427, MSP430FE427
MSP430FG4:
MSP430FG4250, MSP430FG4260, MSP430FG4270, MSP430FG437, MSP430FG438, MSP430FG439, MSP430FG4616, MSP430FG4617, MSP430FG4618, MSP430FG46194, MSP4000
MSP430FW4:
MSP430FW423, MSP430FW425, MSP430FW427, MSP430FW428, MSP430FW429
MSP430F5:
MSP430BT5190, MSP430F5131, MSP430F5132, MSP430F5151, MSP430F5152, MSP430F5171, MSP430F5172, MSP430F5212, MSP430F5213, MSP430F5214, MSP430F5217, MSP430F5218, MSP430F5219, MSP430F5222, MSP430F5223, MSP430F5224, MSP430F5227, MSP430F5228, MSP430F5229, MSP430F5232, MSP430F5234, MSP430F5237, MSP430F5239, MSP430F5242, MSP430F5244 , MSP430F5247, MSP430F5249, MSP430F5252, MSP430F5253, MSP430F5254, MSP430F5255, MSP430F5256, MSP430F5257, MSP430F5258, MSP430F5259, MSP430F5304, MSP430F5308, MSP430F5309, MSP430F5310, MSP430F5324, MSP430F5325, MSP430F5326, MSP430F5327, MSP430F5328, MSP430F5329, MSP430F5333, MSP430F5335, MSP430F5336, MSP430F5338, MSP430F5340 , MSP430F5341, MSP430F5342, MSP430F5358, MSP430F5359, MSP430F5418, MSP430F5418A, MSP430F5419, MSP430F5419A, MSP430F5435, MSP430F5435A, MSP430F5436, MSP430F5436A, MSP430F5437, MSP430F5437A, MSP430F5438, MSP430F5438A, MSP430F5500, MSP430F5501, MSP430F5502, MSP430F5503, MSP430F5504, MSP430F5505, MSP430F5506, MSP430F5507, MSP430F5508 , MSP430F5509, MSP430F5510, MSP430F5513, MSP430F5514, MSP430F5515, MSP430F5517, MSP430F5519, MSP430F5521, MSP430F5522, MSP430F5524, MSP430F5525, MSP430F5526, MSP430F5527, MSP430F5528, MSP430F5529, MSP430F5630, MSP430F5631, MSP430F5632, MSP430F5633, MSP430F5634, MSP430F5635, MSP430F5636, MSP430F5637, MSP430F5638, MSP430F5658, MSP430F5659, MSP430SL5438A
MSP430F6:
MSP430F6433, MSP430F6435, MSP430F6436, MSP430F6438, MSP430F6458, MSP430F6459, MSP430F6630, MSP430F6631, MSP430F6632, MSP430F6633, MSP430F6634, MSP430F6635, MSP430F6636, MSP430F6637, MSP430F6638, MSP430F6658, MSP430F6659, MSP430F6720, MSP430F6720A, MSP430F6721, MSP430F6721A, MSP430F6723, MSP430F6723A, MSP430F6724, MSP430F6724A , MSP430F6725, MSP430F6725A, MSP430F6726, MSP430F6726A, MSP430F6730, MSP430F6730A, MSP430F6731, MSP430F6731A, MSP430F6733, MSP430F6733A, MSP430F6734, MSP430F6734A, MSP430F6735, MSP430F6735A, MSP430F6736, MSP430F6736A, MSP430F6745, MSP430F67451, MSP430F67451A, MSP430F6745A, MSP430F6746, MSP430F67461, MSP430F67461A, MSP430F6746A, MSP430F6747 , MSP430F67471, MSP430F67471A, MSP430F6747A, MSP430F6748, MSP430F67481, MSP430F67481A, MSP430F6748A, MSP430F6749, MSP430F67491, MSP430F67491A, MSP430F6749A, MSP430F67621, MSP430F67621A, MSP430F67641, MSP430F67641A, MSP430F6765, MSP430F67651, MSP430F67651A, MSP430F6765A, MSP430F6766, MSP430F67661, MSP430F67661A, MSP430F6766A, MSP430F6767, MSP430F67671, MSP430F67671A, MSP430F6767A, MSP430F6768, MSP430F67681, MSP430F67681A, MSP430F6768A, MSP430F6769, MSP430F67691, MSP430F67691A, MSP430F6769A, MSP430F6775, MSP430F67751, MSP430F67751A, MSP430F6775A, MSP430F6776, MSP430F67761, MSP430F67761A, MSP430F6776A, MSP430F6777, MSP430F67771, MSP430F67771A, MSP430F6777A, MSP430F6778, MSP430F67781, MSP430F67781A, MSP430F6778A, MSP430F6779, MSP430F67791, MSP430F67791A, MSP430F6779A
MSP430FG6:
MSP430FG6425, MSP430FG6426, MSP430FG6625, MSP430FG6626
MSP430FR2:
MSP430FR2000, MSP430FR2032, MSP430FR2033, MSP430FR2100, MSP430FR2110, MSP430FR2111, MSP430FR2153, MSP430FR2155, MSP430FR2310, MSP430FR2311, MSP430FR2353, MSP430FR2355, MSP430FR2422, MSP430FR2433, MSP430FR2475, MSP430FR2476, MSP430FR2512, MSP430FR2522, MSP430FR2532, MSP430FR2533, MSP430FR2632, MSP430FR2633, MSP430FR2675, MSP430FR2676, MSP430FR2672 , MSP430FR2673
MSP430FR4:
MSP430FR4131, MSP430FR4132, MSP430FR4133
MSP430FR5:
MSP430FR5041, MSP430FR5043, MSP430FR50431, MSP430FR5720, MSP430FR5721, MSP430FR5722, MSP430FR5723, MSP430FR5724, MSP430FR5725, MSP430FR5726, MSP430FR5727, MSP430FR5728, MSP430FR5729, MSP430FR5730, MSP430FR5731, MSP430FR5732, MSP430FR5733, MSP430FR5734, MSP430FR5735, MSP430FR5736, MSP430FR5737, MSP430FR5738, MSP430FR5739, MSP430FR5847, MSP430FR58471 , MSP430FR5848, MSP430FR5849, MSP430FR5857, MSP430FR5858, MSP430FR5859, MSP430FR5867, MSP430FR58671, MSP430FR5868, MSP430FR5869, MSP430FR5870, MSP430FR5872, MSP430FR58721, MSP430FR5887, MSP430FR5888, MSP430FR5889, MSP430FR58891, MSP430FR5922, MSP430FR59221, MSP430FR5947, MSP430FR59471, MSP430FR5948, MSP430FR5949, MSP430FR5957, MSP430FR5958, MSP430FR5959 , MSP430FR5962, MSP430FR5964, MSP430FR5967, MSP430FR5968, MSP430FR5969, MSP430FR59691, MSP430FR5970, MSP430FR5972, MSP430FR59721, MSP430FR5986, MSP430FR5987, MSP430FR5988, MSP430FR5989, MSP430FR59891, MSP430FR5992, MSP430FR5994, MSP430FR59941
MSP430FR6:
MSP430FR6005, MSP430FR6007, MSP430FR6037, MSP430FR60371, MSP430FR6035, MSP430FR6041, MSP430FR6043, MSP430FR60431, MSP430FR6045, MSP430FR6047, MSP430FR60471, MSP430FR6820, MSP430FR6822, MSP430FR68221, MSP430FR6870, MSP430FR6872, MSP430FR68721, MSP430FR6877, MSP430FR6879, MSP430FR68791, MSP430FR6887, MSP430FR6888, MSP430FR6889, MSP430FR68891, MSP430FR6920 :
CC-430F5:
CC-430F5123, CC-430F5125, CC-430F5133, CC-430F5135, CC-430F5137, CC-430F5143, CC-430F5145, CC-430F5147
CC-430F6:
CC-430F6125, CC-430F6126, CC-430F6127, CC-430F6135, CC-430F6137, CC-430F6143, CC-430F6145, CC-430F6147
RF430F:
RF430F5134, RF430F5144, RF430F5155, RF430F5175, RF430FRL152H, RF430FRL153H, RF430FRL154H, RF430TAL152H, RF430TAL160H
MSP430F1:
MSP430F110, MSP430F1101, MSP430F1101A, MSP430F1111A, MSP430F112, MSP430F1121, MSP430F1121A, MSP430F1122, MSP430F1132, MSP430F122, MSP430F1222, MSP430F123, MSP430F1232, MSP430F133, MSP430F135, MSP430F147, MSP430F1471, MSP430F148, MSP430F1481, MSP430F149, MSP430F1491, MSP430F155, MSP430F156, MSP430F157, MSP430F1610 , MSP430F1611, MSP430F1612, MSP430F167, MSP430F168, MSP430F169, MSP430F169-M
MSP430F2:
MSP430F2001, MSP430F2002, MSP430F2003, MSP430F2011, MSP430F2012, MSP430F2013, MSP430F2101, MSP430F2111, MSP430F2112, MSP430F2121, MSP430F2122, MSP430F2131, MSP430F2132, MSP430F2232, MSP430F2234, MSP430F2252, MSP430F2254, MSP430F2272, MSP430F2274, MSP430F233, MSP430F2330, MSP430F235, MSP430F2350, MSP430F2370, MSP430F2410 , MSP430F2416, MSP430F2417, MSP430F2418, MSP430F2419, MSP430F247, MSP430F2471, MSP430F248, MSP430F2481, MSP430F249, MSP430F2491, MSP430F2616, MSP430430926F
MSP430AFE2:
MSP430AFE221, MSP430AFE222, MSP430AFE223, MSP430AFE231, MSP430AFE232, MSP430AFE233, MSP430AFE251, MSP430AFE252, MSP430AFE253
MSP430G2:
MSP430G2001, MSP430G2101, MSP430G2102, MSP430G2111, MSP430G2112, MSP430G2113, MSP430G2121, MSP430G2131, MSP430G2132, MSP430G2152, MSP430G2153, MSP430G2201, MSP430G2202, MSP430G2203, MSP430G2210, MSP430G2211, MSP430G2212, MSP430G2213, MSP430G2221, MSP430G2230, MSP430G2231, MSP430G2232, MSP430G2233, MSP430G2252, MSP430G2253 , MSP430G2302, MSP430G2303, MSP430G2312, MSP430G2313, MSP430G2332, MSP430G2333, MSP430G2352, MSP430G2353, MSP430G2402, MSP430G2403, MSP430G2412, MSP430G2413, MSP430G2432, MSP430G2433, MSP430G2444, MSP430G2452, MSP430G2453, MSP430G2513, MSP430G2533, MSP430G2544, MSP430G2553, MSP430G2744, MSP430G2755, MSP430G2855, MSP430G2955
MSP430i2:
SP430i2020, MSP430i2021, MSP430i2030, MSP430i2031, MSP430i2040, MSP430i2041
MSP430T:
MSP430TCH5E
MSP430F4:
MSP430F412, MSP430F412-FW, MSP430F413, MSP430F413-FW, MSP430F4132, MSP430F415, MSP430F415-FW, MSP430F4152, MSP430F417, MSP430F417-FW, MSP430F423, MSP430F4230, MSP430F423A, MSP430F423A, MSP430F425, MSP430F4250, MSP430F425A, MSP430F425A, MSP430F4260, MSP430F427, MSP430F4270 , MSP430F427A, MSP430F427A, MSP430F435, MSP430F435-100P, MSP430F4351, MSP430F436, MSP430F436-100P, MSP430F4361, MSP430F437, MSP430F437-100P, MSP430F4371, MSP430F447, MSP430F448, MSP430F4481, MSP430F449, MSP430F4491, MSP430F4616, MSP430F46161, MSP430F4617, MSP430F46171, MSP430F4618, MSP430F46181 , MSP430F4619, MSP430F46191, MSP430F47126, MSP430F47127, MSP430F47163, MSP430F47166, MSP430F47167, MSP430F47173, MSP430F47176, MSP430F47177, MSP430F47183, MSP430F47186, MSP430F47187, MSP430F47193, MSP430F47196, MSP430F47197, MSP430F477, MSP430F478, MSP430F4783, MSP430F4784, MSP430F479, MSP430F4793, MSP430F4794
MSP430FE4:
MSP430FE423, MSP430FE4232, MSP430FE423A, MSP430FE423A, MSP430FE4242, MSP430FE425, MSP430FE4252, MSP430FE425A, MSP430FE425A, MSP430FE427, MSP430FE427, MSP430FE427, MSP430FE427
MSP430FG4:
MSP430FG4250, MSP430FG4260, MSP430FG4270, MSP430FG437, MSP430FG438, MSP430FG439, MSP430FG4616, MSP430FG4617, MSP430FG4618, MSP430FG46194, MSP4000
MSP430FW4:
MSP430FW423, MSP430FW425, MSP430FW427, MSP430FW428, MSP430FW429
MSP430F5:
MSP430BT5190, MSP430F5131, MSP430F5132, MSP430F5151, MSP430F5152, MSP430F5171, MSP430F5172, MSP430F5212, MSP430F5213, MSP430F5214, MSP430F5217, MSP430F5218, MSP430F5219, MSP430F5222, MSP430F5223, MSP430F5224, MSP430F5227, MSP430F5228, MSP430F5229, MSP430F5232, MSP430F5234, MSP430F5237, MSP430F5239, MSP430F5242, MSP430F5244 , MSP430F5247, MSP430F5249, MSP430F5252, MSP430F5253, MSP430F5254, MSP430F5255, MSP430F5256, MSP430F5257, MSP430F5258, MSP430F5259, MSP430F5304, MSP430F5308, MSP430F5309, MSP430F5310, MSP430F5324, MSP430F5325, MSP430F5326, MSP430F5327, MSP430F5328, MSP430F5329, MSP430F5333, MSP430F5335, MSP430F5336, MSP430F5338, MSP430F5340 , MSP430F5341, MSP430F5342, MSP430F5358, MSP430F5359, MSP430F5418, MSP430F5418A, MSP430F5419, MSP430F5419A, MSP430F5435, MSP430F5435A, MSP430F5436, MSP430F5436A, MSP430F5437, MSP430F5437A, MSP430F5438, MSP430F5438A, MSP430F5500, MSP430F5501, MSP430F5502, MSP430F5503, MSP430F5504, MSP430F5505, MSP430F5506, MSP430F5507, MSP430F5508 , MSP430F5509, MSP430F5510, MSP430F5513, MSP430F5514, MSP430F5515, MSP430F5517, MSP430F5519, MSP430F5521, MSP430F5522, MSP430F5524, MSP430F5525, MSP430F5526, MSP430F5527, MSP430F5528, MSP430F5529, MSP430F5630, MSP430F5631, MSP430F5632, MSP430F5633, MSP430F5634, MSP430F5635, MSP430F5636, MSP430F5637, MSP430F5638, MSP430F5658, MSP430F5659, MSP430SL5438A
MSP430F6:
MSP430F6433, MSP430F6435, MSP430F6436, MSP430F6438, MSP430F6458, MSP430F6459, MSP430F6630, MSP430F6631, MSP430F6632, MSP430F6633, MSP430F6634, MSP430F6635, MSP430F6636, MSP430F6637, MSP430F6638, MSP430F6658, MSP430F6659, MSP430F6720, MSP430F6720A, MSP430F6721, MSP430F6721A, MSP430F6723, MSP430F6723A, MSP430F6724, MSP430F6724A , MSP430F6725, MSP430F6725A, MSP430F6726, MSP430F6726A, MSP430F6730, MSP430F6730A, MSP430F6731, MSP430F6731A, MSP430F6733, MSP430F6733A, MSP430F6734, MSP430F6734A, MSP430F6735, MSP430F6735A, MSP430F6736, MSP430F6736A, MSP430F6745, MSP430F67451, MSP430F67451A, MSP430F6745A, MSP430F6746, MSP430F67461, MSP430F67461A, MSP430F6746A, MSP430F6747 , MSP430F67471, MSP430F67471A, MSP430F6747A, MSP430F6748, MSP430F67481, MSP430F67481A, MSP430F6748A, MSP430F6749, MSP430F67491, MSP430F67491A, MSP430F6749A, MSP430F67621, MSP430F67621A, MSP430F67641, MSP430F67641A, MSP430F6765, MSP430F67651, MSP430F67651A, MSP430F6765A, MSP430F6766, MSP430F67661, MSP430F67661A, MSP430F6766A, MSP430F6767, MSP430F67671, MSP430F67671A, MSP430F6767A, MSP430F6768, MSP430F67681, MSP430F67681A, MSP430F6768A, MSP430F6769, MSP430F67691, MSP430F67691A, MSP430F6769A, MSP430F6775, MSP430F67751, MSP430F67751A, MSP430F6775A, MSP430F6776, MSP430F67761, MSP430F67761A, MSP430F6776A, MSP430F6777, MSP430F67771, MSP430F67771A, MSP430F6777A, MSP430F6778, MSP430F67781, MSP430F67781A, MSP430F6778A, MSP430F6779, MSP430F67791, MSP430F67791A, MSP430F6779A
MSP430FG6:
MSP430FG6425, MSP430FG6426, MSP430FG6625, MSP430FG6626
MSP430FR2:
MSP430FR2000, MSP430FR2032, MSP430FR2033, MSP430FR2100, MSP430FR2110, MSP430FR2111, MSP430FR2153, MSP430FR2155, MSP430FR2310, MSP430FR2311, MSP430FR2353, MSP430FR2355, MSP430FR2422, MSP430FR2433, MSP430FR2475, MSP430FR2476, MSP430FR2512, MSP430FR2522, MSP430FR2532, MSP430FR2533, MSP430FR2632, MSP430FR2633, MSP430FR2675, MSP430FR2676, MSP430FR2672 , MSP430FR2673
MSP430FR4:
MSP430FR4131, MSP430FR4132, MSP430FR4133
MSP430FR5:
MSP430FR5041, MSP430FR5043, MSP430FR50431, MSP430FR5720, MSP430FR5721, MSP430FR5722, MSP430FR5723, MSP430FR5724, MSP430FR5725, MSP430FR5726, MSP430FR5727, MSP430FR5728, MSP430FR5729, MSP430FR5730, MSP430FR5731, MSP430FR5732, MSP430FR5733, MSP430FR5734, MSP430FR5735, MSP430FR5736, MSP430FR5737, MSP430FR5738, MSP430FR5739, MSP430FR5847, MSP430FR58471 , MSP430FR5848, MSP430FR5849, MSP430FR5857, MSP430FR5858, MSP430FR5859, MSP430FR5867, MSP430FR58671, MSP430FR5868, MSP430FR5869, MSP430FR5870, MSP430FR5872, MSP430FR58721, MSP430FR5887, MSP430FR5888, MSP430FR5889, MSP430FR58891, MSP430FR5922, MSP430FR59221, MSP430FR5947, MSP430FR59471, MSP430FR5948, MSP430FR5949, MSP430FR5957, MSP430FR5958, MSP430FR5959 , MSP430FR5962, MSP430FR5964, MSP430FR5967, MSP430FR5968, MSP430FR5969, MSP430FR59691, MSP430FR5970, MSP430FR5972, MSP430FR59721, MSP430FR5986, MSP430FR5987, MSP430FR5988, MSP430FR5989, MSP430FR59891, MSP430FR5992, MSP430FR5994, MSP430FR59941
MSP430FR6:
MSP430FR6005, MSP430FR6007, MSP430FR6037, MSP430FR60371, MSP430FR6035, MSP430FR6041, MSP430FR6043, MSP430FR60431, MSP430FR6045, MSP430FR6047, MSP430FR60471, MSP430FR6820, MSP430FR6822, MSP430FR68221, MSP430FR6870, MSP430FR6872, MSP430FR68721, MSP430FR6877, MSP430FR6879, MSP430FR68791, MSP430FR6887, MSP430FR6888, MSP430FR6889, MSP430FR68891, MSP430FR6920 :
CC-430F5:
CC-430F5123, CC-430F5125, CC-430F5133, CC-430F5135, CC-430F5137, CC-430F5143, CC-430F5145, CC-430F5147
CC-430F6:
CC-430F6125, CC-430F6126, CC-430F6127, CC-430F6135, CC-430F6137, CC-430F6143, CC-430F6145, CC-430F6147
RF430F:
RF430F5134, RF430F5144, RF430F5155, RF430F5175, RF430FRL152H, RF430FRL153H, RF430FRL154H, RF430TAL152H, RF430TAL160H
Code Composer Studio (CCS) - это IDE для разработки программного обеспечения для микроконтроллеров от Texas Instruments, таких как MSP430 , MSP432 , Tiva / Stellaris и т. Д. CCS основан на платформе Eclipse и поддерживает архитектуру plug and play, в которой несколько компиляторы / отладчики могут использоваться для разработки и отладки программного обеспечения.
В этом руководстве мы научимся разрабатывать программное обеспечение для семейства микроконтроллеров MSP430 с помощью платы разработки Launchpad.Здесь мы будем использовать как собственный компилятор TI, так и бесплатный компилятор mspgcc с открытым исходным кодом для построения кода.
Загрузка Code Composer Studio
Code Composer Studio можно загрузить с веб-сайта Texas Instruments.
CCS доступен для платформ Windows, Linux и Mac OSX.
CCS доступен как для онлайн, так и для автономной установки.
Создание проекта панели запуска MSP430 в Code Composer Studio (CCS)
После установки кода Composer Studio на компьютер щелкните значок на рабочем столе, чтобы запустить среду IDE.
CCS можно использовать для разработки встроенного программного обеспечения, используя как C , так и Ассемблер . Здесь мы будем иметь дело в первую очередь с языком C.
Затем IDE попросит вас выбрать рабочую область для хранения ваших текущих настроек и предпочтений. Нажмите OK, чтобы продолжить. Ваши исходные коды также будут сохранены в этом месте.
Из строки меню,
Выберите проект → Новый проект CCS ...
, который вызовет диалог New CCS Project .
Используйте раскрывающееся меню « Target », чтобы выбрать семейство MSP430, которое вы будете использовать.
Поскольку мы используем отладочную плату Launchpad, выберите MSP430Gxxx Family . (показано ниже)
После того, как вы выбрали Семейство, используйте соседнее раскрывающееся меню, чтобы выбрать устройство, которое вы будете использовать. Здесь MSP430G2553 .
После этого дайте название вашему проекту. Здесь " My-MSP430-Project ".
Выбор компилятора для проекта MSP430 в Code Composer Studio
Code Composer Studio поставляется с возможностью выбора нескольких компиляторов для сборки вашего проекта MSP430. Два наиболее часто используемых компилятора - это
.Вы можете выбрать компиляторы с помощью раскрывающегося меню « Compiler version » в диалоговом окне New CCS Project , как показано ниже.
Компилятор по умолчанию в CCS - Texas Instruments Properietary Compiler (TI v16.9.7 LTS) . Компилятор TI имеет ограниченный код, но его будет достаточно для разработки программного обеспечения для MSP430G2553.
Компилятор mspgcc с открытым исходным кодом должен быть установлен отдельно.
mspgcc имеет открытый исходный код и не имеет ограничений по количеству кода по сравнению с компилятором TI.
Установка MSP430 GCC в Code Composer Studio
MSP430GCC можно легко установить с помощью Code Composer Studio App Center.
Вы можете легко получить доступ к Центру приложений со страницы « Начало работы ».
или перейдя в справку → Центр приложений CCS
Затем вы можете легко установить необходимое программное обеспечение, щелкнув опцию MSP430 GCC в Центре приложений.
Теперь вернемся к диалогу проекта CCS,
После того, как вы выбрали компилятор, который хотите использовать (TI или msp430gcc), нажмите Finish , и вы увидите следующий рисунок.
Создание проекта MSP430 в Code Composer Studio
Теперь мы можем написать небольшую программу, которая будет включать светодиоды, подключенные к контактам P1.0 и P1.6 на панели запуска MSP430.
Вы можете ввести приведенную ниже программу в файл main.c внутри CCS IDE.
После того, как вы написали программу, вы можете построить файл c, перейдя в Project → Build Project
Если в вашем коде есть какие-либо проблемы, такие как отсутствие точки с запятой, компилятор покажет ошибки на вкладке Problems внизу.
Еще одна отличная особенность CCS7 IDE - это окно Advice , которое дает полезные советы относительно того, как оптимизировать вашу программу для повышения производительности или низкого энергопотребления.
Загрузка кода в панель запуска MSP430 с помощью Code Composer Studio
Подключите плату разработчика MSP430 Launchpad к компьютеру и убедитесь, что она обнаружена компьютером, перейдя в диспетчер устройств.Если панель запуска обнаружена, ее можно увидеть в разделе Порты в Диспетчере устройств , как показано ниже.
Вы можете запустить сеанс отладки в студии Code Composer, нажав F11 или перейдя в Run → Debug . Это запускает отладчик, который получает контроль над целью (здесь плата MSP430 Launchpad), стирает целевую память, программирует целевую память с приложением, а затем сбрасывает микроконтроллер.
После нажатия кнопки отладки появится диалоговое окно ULP Advisor . Нажмите кнопку «Продолжить» , чтобы продолжить.
Code Composer Studio соберет ваш проект, сгенерирует шестнадцатеричный файл и автоматически загрузит его на вашу доску разработки.
После этого среда IDE перейдет в режим отладки , как показано ниже.
Отладка панели запуска MSP430 с использованием Code Composer Studio
После того, как вы вошли в режим отладки, вы можете запускать свою программу непрерывно или шаг за шагом.
Теперь вы можете запустить программу, загруженную в память микроконтроллера, нажав F8 или Run → Resume.
После того, как вы запустили программу на микроконтроллере, вы можете сбросить ее, перейдя в Run → Reset.
В Code Composer Studio
доступны два типа сброса.Вы также можете пошагово выполнять выполнение кода, используя пошаговые команды.
Вы можете установить точки останова в студии создания кода, перейдя в Run → Toggle Breakpoints.
Вы можете увидеть точки останова на изображении ниже в виде голубых точек с левой стороны.
В режиме отладки Code Composer Studio позволяет просматривать внутренние регистры используемого вами варианта MSP430.
Изображение ниже показывает изменение в регистрах после выполнения P1DIR | = BIT0 + BIT6; инструкция.
Вы можете видеть биты, которые выполняются инструкцией , выделенные желтым цветом в CCS IDE .
Чтобы выйти из режима отладки, перейдите к Выполнить → Завершить или нажмите CTRL + F2 .это вернет пользователя к просмотру редактора кода.
Учебное пособие по языку ассемблера дляПанель запуска Texas Instruments - удобный инструмент для оценки и изучения микроконтроллеров серии MSP430 Value Line. В этом руководстве для знакомства с программированием на языке ассемблера MSP430 используется LaunchPad с включенным в него процессором MSP430G2231.Разработана небольшая программа, которая считывает состояние кнопки LaunchPad. Пока кнопка не нажата, красный светодиод LaunchPad горит. При нажатии кнопки загорается зеленый светодиод.
Хотя эта первая программа короткая - всего 20 строк кода, - руководство охватывает очень многое. Помимо обзора основного синтаксиса и структуры языка ассемблера MSP430, предоставляется информация о том, как:
Представленный здесь синтаксис основан на TI Code Composer Studio (CCS), поэтому для выполнения этого упражнения вам потребуется загрузить и установить CCS на свой компьютер.Бесплатная версия CCS доступна на сайте TI.
Исходная программа на языке ассемблера - это текстовый файл, состоящий из ряда исходных операторов. Исходный оператор будет содержать один или несколько из следующих элементов:
Следующий пример исходной инструкции содержит все эти элементы:
метка мнемонический операнд список комментарий Бит Mainloop.b # 00001000b, & P1IN; Чтение переключателя на P1.3 |
Самым фундаментальным из элементов является мнемоника машинных команд, поскольку они напрямую связаны с функциями ЦП микроконтроллера. Полный набор инструкций MSP430 состоит из 27 основных инструкций. Есть еще 24 эмулируемых инструкции, которые программа ассемблера переводит в базовые инструкции. По сравнению с набором команд некоторых языков более высокого уровня, эти машинные инструкции являются очень простыми и выполняют такие задачи, как математические и логические операции, запись и получение значений из памяти, а также переход к различным разделам кода.
Например, инструкция инструкции:
берет число 10, добавляет его к значению, хранящемуся в общем регистре R5, и сохраняет результат обратно в R5.Пока инструкция по эксплуатации:
переместит выполнение программы в точку, отмеченную меткой Delay.Операнды очень гибкие. В двух приведенных выше примерах используются три разных типа операндов - число 10, общий регистр R5 и определяемая пользователем метка символа Delay.Всего существует семь различных режимов адресации, а также поддержка множества типов констант, включая двоичные, десятичные, шестнадцатеричные и ASCII.
По своей природе директивы ассемблера сильно отличаются от машинных инструкций. В то время как машинные инструкции относятся непосредственно к работе самого микроконтроллера, директивы ассемблера - это инструкции, относящиеся к процессу сборки. Несколько общих функций директив включают определение символов, инициализацию памяти и указание библиотек, из которых ассемблер может получать макросы.
Директивы ассемблера можно отличить от машинных инструкций по их начальной точке, например:
- это директива, которая сообщает ассемблеру, что он достиг последнего исходного оператора программы.
Ярлыки необязательны. При использовании они должны быть первым символом строки. Они не могут начинаться с числа или содержать пробел, но могут включать буквенно-цифровые символы A – Z, a – z, 0–9, _ и $.Ярлыки по умолчанию чувствительны к регистру, но их можно настроить как нечувствительные к регистру. После метки может следовать двоеточие (:), но это не обязательно, и двоеточие не рассматривается как часть имени метки, когда на него ссылаются в другом месте программы.
Комментарии также необязательны. Они могут использовать любой символ ASCII, включая пробелы. Когда комментарий начинается с первого символа в строке, он может начинаться либо звездочкой (*), либо точкой с запятой (;), если он не начинается с первого символа, он может начинаться только с точки с запятой.
Первым символом строки может быть только метка, звездочка, точка с запятой или пробел. Первый символ не может быть мнемоническим, иначе ассемблер будет рассматривать его как метку.
Регистр - чрезвычайно важное понятие в программировании микроконтроллеров. На MSP430 все операции, кроме инструкций выполнения программы, реализованы как операции с регистрами. Чтобы установить частоту таймера, значение записывается в регистр.Чтобы получить статус входного вывода, значение считывается из регистра. Чтобы сохранить значение на будущее, это значение записывается в регистр. С точки зрения ЦП все эти операции функционально одинаковы - бит, байт или слово записываются в указанное место или считываются из него. После того, как вы освоите базовые методы управления этими битами, байтами и словами, обучение реализации функции MSP430 станет в значительной степени вопросом использования руководств и других ресурсов для изучения регистров, связанных с этой функцией, чтобы выяснить, какая конфигурация будет производить желаемый результат.
Задача чтения и записи в регистры как дискретные ячейки памяти значительно упрощается за счет использования символьных псевдонимов в программе ассемблера. Вместо использования числовых адресов регистры и биты обычно обозначаются более или менее значимыми именами, такими как SP для «указателя стека» или P1OUT для «выходного регистра порта 1».
Ниже приведен пример программы для учебника. Как объяснялось ранее, это простая программа, привязанная к встроенному оборудованию LaunchPad.Если кнопка нажата, горит зеленый светодиод; если кнопка не нажата, горит красный светодиод. Код полностью прокомментирован, и вам, вероятно, будет легко следовать базовой логике, просто читая комментарии.
; ------------------------------------------------- ----------------------------- ; Пример цифрового ввода-вывода для LaunchPad ; Считайте состояние встроенной кнопки - P1.3 ; (Обратите внимание, что P1.3 равен «1», когда кнопка открыта. ; и «0» при закрытой кнопке) ; Красный свет, если кнопка не нажата - P1.0 ; Зеленый свет, если кнопка нажата - P1.6 ; Сборка с помощью Code Composer Studio ; ------------------------------------------------- ----------------------------- .cdecls C, СПИСОК, "msp430g2231.h"; cdecls сообщает ассемблеру разрешить ; файл заголовка c ; ------------------------------------------------- ----------------------------- ; Основной код ; ------------------------------------------------- ----------------------------- .текст; запуск программы .global _main; определить точку входа _main mov.w # 0280h, SP; инициализировать указатель стека mov.w # WDTPW + WDTHOLD, & WDTCTL; остановите сторожевой таймер bis.b # 01000001b, & P1DIR; сделать вывод P1.0 и P1.6 ; все остальные - входы по умолчанию Бит основного контура. B # 00001000b, & P1IN; переключатель чтения на P1.3 jc Off; если P1.3 открыть ответвление на Off label На bic.b # 00000001b, & P1OUT; очистить P1.0 (красный не горит) bis.b # 01000000b, & P1OUT; установите P1.6 (зеленый горит) jmp Подождите; перейти к процедуре задержки Выкл. Bis.b # 00000001b, & P1OUT; установить P1.0 (красный горит) bic.b # 01000000b, & P1OUT; очистить P1.6 (зеленый не светится) Подождите mov.w # 1834, R15; загрузить R15 со значением задержки L1 dec.w R15; декремент R15 jnz L1; если R15 не равен нулю, переход к L1 jmp Mainloop; перейти к метке Mainloop ; ------------------------------------------------- ----------------------------- ; Векторы прерывания ; ------------------------------------------------- ----------------------------- .секта ".reset"; Вектор сброса MSP430 .short _main .конец |
Вы можете (а можете и не захотеть) загрузить и собрать код перед его изучением. Следующие шаги для создания проекта сборки с использованием CCS очень сокращены из Руководства пользователя CCS.
.cdecls C, СПИСОК, "msp430g2231.h"; cdecls сообщает ассемблеру разрешить ; файл заголовка c ; ------------------------------------------------- ----------------------------- ; Основной код ; ------------------------------------------------- ----------------------------- .text; запуск программы .global _main; определить точку входа _main mov.w # 0280h, SP; инициализировать указатель стека mov.w # WDTPW + WDTHOLD, & WDTCTL; остановите сторожевой таймер |
Первые строки нашего кода, повторенные выше, - это то, что можно назвать служебными задачами. Это необходимые базовые настройки, которые в той или иной форме появятся в большинстве ваших программ. Неизбежно эти задачи настройки сводятся к нескольким концепциям, таким как «точка входа» и «указатель стека», которые выходят за рамки вводных понятий, предназначенных для учебника.По мере изучения этих шагов будут описаны эти функции, но основное внимание будет уделено языку ассемблера и синтаксису. Когда вы собираетесь разрабатывать свои собственные программы, вы можете сначала просто скопировать эти операторы в качестве шаблона.
Перемежающиеся комментариями, первые три оператора являются директивами ассемблера. Директива .cdecls сообщает ассемблеру разрешить использование файла заголовка программы C. Когда вы устанавливали CCS, он поставлялся с заголовочными файлами для всех вариантов MSP430.Эти файлы содержат много полезной информации о конкретном устройстве, которое вы программируете, включая определения символов, которые мы будем использовать для ссылки на регистры. Соответствующий файл заголовка для LaunchPad MSP430G2231 указан в кавычках - msp430g2231.h. Директива .text указывает начало блока кода. Директива .global используется здесь для объявления символа _main доступным во внешних модулях, чтобы при его использовании в следующем операторе ассемблер распознал его как точку входа в программу.
Последние две строки этого служебного кода содержат первую машинную инструкцию программы - mov. Здесь мы дважды используем команду mov; один раз для установки начального значения указателя стека и еще раз для отключения сторожевого таймера. Стек - это особая и важная область памяти, используемая для сохранения значений во время подпрограмм, прерываний и при выполнении определенных машинных инструкций. Стек должен быть установлен в начале работы микроконтроллера - обычно в верхней части памяти.Сторожевой таймер используется для автоматического перезапуска процессора в случае возникновения программной проблемы. Сторожевой таймер активен по умолчанию, поэтому, если он не используется в вашей программе, его следует отключить, чтобы избежать неожиданных перезапусков.
Команда mov загружает значение, указанное первым операндом (исходный операнд), в место, указанное вторым операндом (операнд-адресат). Из-за надежной и гибкой природы адресации MSP430 исходный операнд может быть буквальным значением, загружаемым в место назначения, или может так же легко относиться к значению, хранящемуся в регистре или другом месте памяти.В случае обеих этих строк источником является значение операнда. Этот режим адресации называется непосредственным режимом и обозначается хешем (#) перед операндом. Заявление:
загружает указатель стека с номером 280h, где h указывает, что это число в шестнадцатеричном формате. .W после оператора mov указывает, что это словесная операция. Все инструкции с одним и двумя операндами могут быть байтовыми (8-битными) или словесными (16-битными) инструкциями с использованием.b или .w расширения. Если расширение не используется, инструкция представляет собой словесную инструкцию, но включение .w для ясности не повредит. Поскольку SP является одним из 16 регистров, которые являются частью самого ЦП, он использует адресацию в регистровом режиме и может указываться здесь без префикса.
Следующее утверждение:
mov.w # WDTPW + WDTHOLD и WDTCTL |
на первый взгляд сбивает с толку.С помощью этой инструкции mov мы загружаем в контрольный регистр сторожевого таймера значение, которое отключит таймер. WDTCTL - это символический псевдоним, равный адресу регистра управления сторожевого таймера; он был определен в заголовочном файле. Амперсанд (&) указывает, что этот операнд будет использовать режим абсолютной адресации, означающий, что число, представленное псевдонимом, является адресом регистра. WDTPW и WDTHOLD - два псевдонима, которые также были загружены с заголовком. WDTPW - это значение пароля сторожевого таймера, которое должно быть первой половиной любой операции записи в регистр WDTCTL.WDTHOLD равен биту 7, который является стоповым битом WDTCTL. При сложении и загрузке в WDTCTL они остановят сторожевой таймер.
Разобравшись с домашними делами, пора приступить к написанию кода. Первое, что нам нужно сделать, это настроить выводы микроконтроллера для ввода и вывода (I / O). MSP430G2231 имеет 10 контактов ввода / вывода, каждый из которых можно настроить индивидуально. Восемь контактов реализованы на порту P1, а оставшиеся два контакта - на порту P2.Контакты порта пронумерованы от 0 до 7 и обозначаются комбинацией номера их порта и контактов, так что порт 1 Контакт 3 имеет значение P1.3.
Каждый из портов P1 и P2 имеет регистр - P1DIR и P2DIR соответственно - который используется для управления тем, является ли вывод входом или выходом. Это 8-битные регистры, каждый бит которых соответствует выводу ввода-вывода. Если бит установлен, то контакт является выходом, если бит очищен, то контакт является входом. Как и в случае с номерами контактов, номера битов в регистре всегда начинаются с 0; 8-битные регистры - это 0-7, а 16-битные регистры - 0-15.
Вам часто нужно будет указать регистровый бит в операнде машинной инструкции. При выражении регистров в виде числовых значений создается двоичное число, где каждый бит в регистре соответствует цифре в числе с самым низким битом (0), крайним правым: бит 0 выражается как двоичное 00000001, а бит 7 выражается как двоичное 10000000. Обратите внимание, что хотя двоичное число представляет позицию бита, фактическое значение двоичного числа не равно десятичному числу бита.Двоичный 10000000 равен десятичному 128 и шестнадцатеричному 80; ассемблер примет любой из этих форматов для бита 7 при условии, что они выражены в правильном синтаксисе. Вы часто будете видеть шестнадцатеричные числа, используемые с этими типами команд, но это вопрос выбора и удобства. Двоичные выражения могут быть полезны при визуализации отдельных битов, но они подвержены ошибкам, которые бывает трудно найти, особенно при работе с 16-битными числами.
В этом проекте нас интересуют три контакта ввода / вывода.На LaunchPad красный светодиод подключен к P1.0, зеленый светодиод подключен к P1.6, а кнопка, которую мы хотим использовать, подключена к P1.3. Следовательно, в нашем примере программы биты 0 и 6 регистра P1DIR должны быть установлены, а биты P.3 должны быть очищены. Мы могли бы сделать это, еще раз используя mov для загрузки значения в регистр P1DIR, однако есть еще одна инструкция, bis - инструкция «установки битов», которая полезна для установки отдельных битов и более часто используется для записи в регистры PxDIR. :
бис.b # 01000001b, & P1DIR; сделать вывод P1.0 и P1.6 ; все остальные - входы по умолчанию |
bis ведет себя совершенно иначе, чем mov. При использовании bis любой бит, который равен «1» в исходном операнде, будет установлен в операнде-адресате, но остальные биты не будут затронуты. В этом случае весь регистр P1DIR был бы очищен при запуске, поэтому нет необходимости делать что-либо для сброса бита для P.3, и конфигурация контактов завершена.
Быстро просматривая некоторые из синтаксиса, использованного в этом последнем операторе, расширение .b мнемоники указывает, что это байтовая операция, префикс # к исходному операнду указывает на использование немедленной адресации, суффикс b исходного операнда указывает на двоичный число, а префикс & перед операндом-адресатом указывает на абсолютную адресацию.
Пользовательская метка Mainloop - хороший показатель того, что мы достигли сути программы.В качестве метки Mainloop не выполняет никаких действий, но служит маркером для начала блока кода, который будет повторяться бесконечно по мере выполнения программы. Позже в коде будет выполнена инструкция для ветвления потока программы обратно к этой точке.
Эти первые две строки кода Mainloop будут работать вместе, чтобы получить статус кнопки LaunchPad и использовать этот статус, чтобы определить, переходить ли к другому разделу или нет:
Бит Mainloop.b # 00001000b, & P1IN; переключатель чтения в P1.3 jc Off; если P1.3 открыть ответвление на Off label |
Здесь мы рассматриваем другой регистр для P1, регистр P1IN, который отражает значение входных сигналов на соответствующих контактах ввода / вывода порта. Битовая или «битовая проверка» команда считывает биты в операнде-адресате, как указано в исходном операнде - здесь бит 3. Однако, в отличие от предыдущих инструкций mov и bis, битовая инструкция не изменяет операнд-адресат, а вместо этого влияет только на группа битов регистра состояния ЦП, которую удобно называть битами состояния.В этом случае нас будет интересовать бит C или «перенос», который устанавливается, когда операция битового теста возвращает 1. Команда jc или «переход при переносе» будет читать бит переноса, и если он установлен, будет переходить к расположение указано его единственным операндом - здесь метка Off. Если бит переноса сброшен, выполнение программы продолжится со следующего оператора. В ассемблере MSP430 есть семь различных инструкций условного перехода, которые полезны при создании таких конструкций IF / THEN.
В качестве важного дополнения обратите внимание, что кнопки LaunchPad подключены так, что бит P1IN установлен на «1», когда они открыты, и сбрасывается на «0», когда они нажимаются.Это обычная инженерная практика, но делает код несколько нелогичным на данном этапе, когда мы можем ожидать, что 1 будет соответствовать состоянию включения.
Если кнопка нажата и бит 3 P1IN возвращает 0, то инструкция jc не перейдет к метке Off, и выполнение продолжится со следующего блока кода:
На bic.b # 00000001b, & P1OUT; очистить P1.0 (красный не горит) bis.b # 01000000b, & P1OUT; установите P1.6 (зеленый горит) jmp Подождите; перейти к процедуре задержки |
Метка On здесь излишняя, потому что ничто другое в коде не относится к ней, но она делает этот блок немного более читаемым и не добавляет никаких накладных расходов на выполнение программы. Следующие две инструкции будут записывать в регистр P1OUT, который, как вы уже могли догадаться, является регистром для управления состоянием контактов P1, которые были установлены как выходы.Команда bic или «очистка бита» является функциональной противоположностью bis - любой бит, который равен «1» в исходном операнде, очищается в операнде-адресате, но остальные биты не затрагиваются. Вместе эти строки сбрасывают бит 0 в P1 и устанавливают бит 6, который гарантирует, что красный индикатор не горит, а зеленый горит. Инструкция jmp или "jump" - это безусловный переход, который перемещает выполнение программы на метку. Подождите несколько операторов далее в коде, пропуская блок, который предназначен для выполнения, когда кнопка находится в выключенном состоянии.
Если кнопка не нажата и бит 3 P1IN возвращает 1, то выполнение инструкции jc переходит к метке Off:
Выкл. Bis.b # 00000001b, & P1OUT; установить P1.0 (красный горит) bic.b # 01000000b, & P1OUT; очистить P1.6 (зеленый выключен) |
Этот блок кода по сути является зеркальным отображением блока On.Инструкция bis включает красный светодиод, а инструкция bic выключает зеленый светодиод.
Независимо от того, выполняются ли блоки кода On или Off, оба пути ведут к следующему блоку кода, который начинается с пользовательской метки Wait:
Подождите mov.w # 1834, R15; загрузить R15 со значением задержки L1 dec.w R15; декремент R15 jnz L1; если R15 не равен нулю, переход к L1 jmp Mainloop; перейти к метке Mainloop |
Процедура ожидания включена, чтобы обеспечить элементарный дребезг переключателя.Механические переключатели, как известно, издают шум при открытии и закрытии, и они имеют тенденцию «подпрыгивать» между состояниями на короткое время, прежде чем успокоиться. Хотя возможность отскока не представляет большой проблемы в этом простом приложении, мы рассмотрим его для хорошей меры и представим очень распространенную процедуру сборки - цикл задержки. Как здесь написано, этот цикл будет обеспечивать задержку около 5 миллисекунд (тысячных долей секунды) между показаниями в качестве простого способа дать переключателю возможность стабилизироваться.
Сначала рассмотрим сам код. Предпосылка цикла задержки состоит в том, чтобы тратить время на выполнение нефункциональной процедуры через сотни или тысячи итераций. Первая строка этого блока использует инструкцию mov для загрузки десятичного значения 1834 в R15. MSP430 имеет 12 регистров общего назначения R4-R15, которые полезны для временного хранения значения в ситуациях, подобных этой. Это значение будет количеством повторений цикла. Следующие две инструкции образуют цикл, который будет вычитать 1 из R15 на каждой итерации, эффективно отсчитывая, пока R15 не станет равным нулю.Команда dec или «декремента» вычитает 1 из операнда-адресата и сохраняет результат обратно в операнд. Кроме того, команда dec повлияет на бит состояния Z или «ноль». Бит Z устанавливается, когда результат операции с байтом или словом равен 0, и сбрасывается, когда результат не равен 0. Команда jnz или «переход, если не ноль» считывает бит Z и, если он не установлен, переводит выполнение программы на операнд - здесь метка L1. Когда R15 наконец становится равным 0, вместо цикла до L1 поток программы снова переходит к следующей инструкции, где безусловный переход отправляет выполнение полностью обратно на метку Mainloop, и весь процесс чтения кнопки и установки светодиодов начнется снова.
Количество итераций для цикла задержки определяется путем вычисления количества циклов команд в цикле и количества циклов команд, которые потребуются для затрачивания необходимого времени для задержки. В режиме запуска по умолчанию MSP430G2231 будет работать на частоте около 1,1 МГц, что дает время цикла команд 909 наносекунд (миллиардных долей секунды). Не каждая инструкция будет выполняться за один цикл. Количество циклов зависит от режима адресации и конкретной инструкции.Здесь инструкция dec занимает 1 тактовый цикл, а jnz - 2 тактовых цикла, поэтому общее время на итерацию этого цикла составляет 3 тактовых цикла. Базовая формула: Циклы = Задержка / (Время цикла * Циклы команд в цикле), которая в этом случае будет 1834 = 0,005 с / (0,000000909 с * 3).
Этот простой пример - отправная точка для понимания и работы с задержками и проблемами времени. Имейте в виду, что MSP430 может быть настроен для работы как на более высоких, так и на более низких тактовых частотах и предоставляет множество более сложных опций для чрезвычайно точной синхронизации.
; ------------------------------------------------- ----------------------------- ; Векторы прерывания ; ------------------------------------------------- ----------------------------- .sect ".reset"; Вектор сброса MSP430 .short _main .конец |
Последние строки программы можно рассматривать как вспомогательные, и снова их можно просто скопировать в качестве шаблона при первом написании собственного кода.Что здесь происходит, так это то, что вектор сброса настраивается так, чтобы указывать обратно на точку входа в программу, если возникает условие сброса, такое как отключение электроэнергии. Директива ассемблера .sect создает именованные разделы с перемещаемыми адресами, которые могут содержать код или данные. Директива .short инициализирует одно или несколько 16-битных целых чисел.
Наконец, директива .end является необязательной и отмечает конец программы. При использовании он должен быть последним исходным оператором программы, поскольку любые последующие операторы будут проигнорированы.
Если вы еще не загрузили следующие документы с веб-сайта Texas Instruments, это, вероятно, должно стать вашим следующим шагом.
Все эти руководства содержат более 1000 страниц важной информации об инструментах ассемблера, наборе инструкций, электрических характеристиках и особенностях семейства микроконтроллеров.Одна из целей этого руководства - представить язык ассемблера MSP430 как можно более прямо и просто и дать быстрый старт программированию. Тем не менее, к настоящему времени должно быть ясно, что научиться программировать MSP430 нетривиально. Многие важные темы были представлены лишь вкратце, а бесчисленное множество других даже не упоминалось. Надеюсь, мы подогрели ваш аппетит к этой платформе и заложили основу, на которой вы сможете начать свое понимание и набор инструментов.
Об авторе: Ральф Хеймсфельд является основателем и руководителем Sully Station Solutions. Его интересы включают искусственный интеллект, машинное обучение, робототехнику и встроенные системы. Его статьи по другим различным темам регулярно появляются здесь и в Интернете.
Аналоговые датчики и панель запуска MSP430
Флексинол и другие мышечные волокна из нитинола
Buster - Робот-манипулятор Raspberry Pi с голосовым управлением
iCE40 и рабочий процесс IceStorm с открытым исходным кодом FPGA
Спроектируйте и соберите собственного робота
Нейронная сеть Arduino
Переход на 1284P
Начало работы с двухмоторной коробкой передач Tamiya
Energia - это платформа для прототипирования электроники с открытым исходным кодом, созданная Робертом Весселсом в январе 2012 года с целью перенести структуру Wiring и Arduino на LaunchPad на базе Texas Instruments MSP430.Energia IDE является кроссплатформенной и поддерживается в Mac OS, Windows и Linux. Energia использует компилятор mspgcc Питера Бигота и основан на фреймворке Wiring и Arduino. Energia включает интегрированную среду разработки (IDE), основу которой составляет Processing IDE (Processing → Wiring → Arduino → Energia). Energia также представляет собой переносимый уровень фреймворка / абстракции, который можно использовать в других популярных IDE. Используйте среду на основе веб-браузера с Texas Instruments CCS Cloud на dev.ti.com или мощную среду разработки CCS Desktop IDE от TI.
В основе Energia и Arduino лежит структура Wiring, разработанная Эрнандо Барраганом. Фреймворк продуманно создан для дизайнеров и художников, чтобы создать сообщество, в котором новички и эксперты со всего мира обмениваются идеями, знаниями и своим коллективным опытом. Команда Energia придерживается философии обучения на практике и стремится упростить работу напрямую с оборудованием. Профессиональные инженеры, предприниматели, производители и студенты могут извлечь выгоду из простоты использования микроконтроллера Energia.
Energia начала с внедрения фреймворка Wiring и Arduino в Texas Instruments MSP430 LaunchPad. Texas Instruments предлагает MSP430, MSP432x, TM4C, C2000, CC32xx и CC13xx LaunchPad. LaunchPad - это недорогая плата микроконтроллера, произведенная Texas Instruments. Последний выпуск Energia поддерживает большинство продуктов LaunchPad. Энергия представляет
Вместе с Energia LaunchPad можно использовать для разработки интерактивных объектов, принимая входные данные от различных переключателей или датчиков и управляя различными источниками света, двигателями и другими физическими выходами.Проекты LaunchPad могут быть автономными (запускаться только на целевой плате, то есть на вашем LaunchPad), или они могут взаимодействовать с программным обеспечением, запущенным на вашем компьютере (хост-ПК). Вы также можете добавить беспроводные модули, чтобы обеспечить связь по различным типам радиочастот, включая Wi-Fi, NFC, Bluetooth, Zigbee, сотовую связь и т. Д.
Программирование MSP430 на C
1. Подключите датчик температуры к MSP430 по приведенной схеме. в лабораторной работе 6 (хотя вы можете изменить штифт).Подключите 7-сегментный отображать на контакты по вашему выбору (используя то, что вы узнали в Лаборатория 5). 7-сегментный дисплей используется для отображения температуры. значение, измеренное датчиком температуры в 0F. Подключите светодиод к подражать вееру. Также подключите коммутатор к MSP430. Напишите программу на C который решает следующие задачи:
2. Изначально все 7-сегментные цифры выключены, а переключатель в выключенном состоянии. Система находится в режиме пониженного энергопотребления (режим 3). (10%)
3. При переводе переключателя в положение «включено» система выходит из режима низкого энергопотребления.Этот шаг необходимо выполнить с помощью порта. Прерывание ввода-вывода. (10%)
5. Программа переходит в активный режим, каждую секунду программа выполняет аналого-цифровое преобразование. Вы должны использовать таймер для этой задачи. (5-7: 40%)
6. Каждые 5 секунд среднее значение температурных образцов. рассчитывается.
8. Изначально светодиод не выводит сигнал. Предположим, что начальная температура в помещении ниже 76 ° F. (8–11: 30%)
9. Когда показание средней температуры находится на уровне соответствующий 76 0F, сигнал ШИМ (рабочий цикл = 0.1) отправляется светодиод. (В это время светодиод тусклый).
10. Рабочий цикл изменяется пропорционально температуре. измеряется, пока не достигнет 86 0F, в это время сигнал ШИМ с Рабочий цикл = 0,95 отправляется на светодиод. Проверьте свою схему с помощью нагревательный инструмент для изменения температуры выше 86 0F. Обратите внимание, если вывод системы правильный. (Светодиод меняет свою яркость, пока не достигает максимальной яркости - 95% рабочего цикла). Рабочий цикл фиксируется на 95% при температуре выше 86 ° F.
11. Когда показание температуры снова опустится ниже 86 ° F, а затем ниже 76 0F сигнал ШИМ становится все меньше и меньше, а затем исчезает. Снова наблюдайте за соответствующим выводом.
Основная программа:
внутр основной ( пустой )
{
// Инициализация портов
// Прерывание порта для коммутатора на P1.X
// Установить переход края узор
// Сброс прерывания порта флаги
// Начальная настройка для Таймер
// Разрешить прерывание система
// Войдите в режим пониженного энергопотребления
// настраиваем АЦП
, а (1)
{
// Устанавливаем рабочий цикл ШИМ в зависимости от входной температуры
// вставляем код для PWM
}
}
Код для ШИМ:
P2SEL | = BIT1;
TA1CCR0 = период - 1; // Устанавливаем ШИМ для светодиода на P1.
хTA1CCR1 = период * D;
TA1CCTL1 = OUTMOD_7;
TA1CTL = ТАССЕЛЬ_2 | MC_1;
Настроить ACD:
недействительно ConfigureAdc ( void )
{
// исправьте код из Лаборатории 5, ОДНОКАНАЛЬНЫЙ ОДИН КАНАЛ КОНВЕРСИЯ
}
Порт I / O ISR (предположим, что контакт порта 1 б / у):
#pragma вектор = PORT1_VECTOR
__interrupt недействительно PORT1_ISR ( пусто )
{
// Выйти из режима пониженного энергопотребления
// Включить WDT для 7 сегментов дисплей
// Timer_A для синхронизации A / D конверсии; 1 секунда
// Настройка аналого-цифрового преобразования
// отображение z-числа цифры
// сброс прерывания ввода / вывода порта флаги
}
Входное прерывание таймера А:
#pragma вектор = TIMER0_A1_VECTOR
__interrupt недействительно Timer_A ( пусто )
{
переключатель (ТАИВ)
{
корпус 0x02: перерыв ;
корпус 0x04: перерыв ;
футляр 0x0A:
// если входной переключатель включен, делаем
{
// Получить образец A / D,
// Если собрано 5 образцов, взять среднее и отобразить Это. // Иначе продолжаем цикл, чтобы получить больше образцы
}
перерыв ;
}
}
Чтение образцов AD:
void getanalogvalues ()
{
// модифицируем код из лаборатории 5
}
Использовать прерывание сторожевого таймера для отображения контроль:
// Программа обслуживания прерывания WDT
#pragma vector = WDT_VECTOR // определяем вектор прерывания сторожевого таймера
__interrupt недействительно WDT ( аннулировано )
{
// изменить код, указанный в лаборатории 5.
}
.