Msp430 уроки: MSP430 Работа со светодиодом — TiTAN

Содержание

Уроки msp430 Урок 16. Последовательный интерфейс

Протокол UART (Universal asynchronous receiver/transmitter) или, по-русски, УАПП (универсальный асинхронный приемопередатчик) — старейший и самый распространенный на сегодняшний день физический протокол передачи данных. Наиболее известен из семейства UART протокол RS-232 (в народе – COM-порт). Это до настоящего времени один из самых актуальных универсальных интерфейсов для связи между собой различных устройств. (прим.перев.)
 

В дальнейшем при проведении актуальных научных экспериментов используя микроконтроллеры msp430, нам нужен ещё один инструмент. Справедливо отметить, что мы могли бы использовать и те инструменты, что уже успели рассмотреть, но это потребовало бы постоянного (или периодического) мониторинга оборудования и ручной записи данных, отображаемых на ЖК-индикаторе. Нам же необходим способ для автоматической регистрации данных, когда они будут отправлены.

Можно определить два пути для этого. У микроконтроллера msp430 имеется на борту флэш-память, которую мы могли бы использовать для записи нескольких измерений. Другой, более сложный путь — это узнать, как может наш launchpad общаться с компьютером через USB. В первом варианте есть определённая элегантность, однако всё равно нам потребуется какой-то способ, чтобы передавать данные из флэш-памяти для удобного их восприятия, то есть, в любом случае нам потребуется подключение к компьютеру.

Поэтому, даже если и произойдёт задержка в разработке устройств на msp430, было бы неплохо познакомиться с последовательным соединением. После освоения этой части мы начнём небольшой эксперимент, для завершения которого нам понадобится несколько дней/недель. За это время мы увидим запись на флэш, научимся общаться с внешними периферийными устройствами и так же то, как собрать вместе все части системы для удалённого сбора данных. Так же мы увидим альтернативные энергетические системы, системы управления и другие классные штуки, что открывают нам микроконтроллеры.

На самом деле не всё так уж мрачно… Последовательная связь не такая уж сложная. В самом деле, большинство устройств msp430 имеют встроенные средства для работы с периферией, что значительно упрощает нашу задачу. Однако, из двух микроконтроллеров, поставляющихся вместе с launchpad, только один содержит периферию для работы с последовательным соединением, у него есть только два режима работы, среди которых явно отсутствует тот, который действительно нам нужен первым, — это — Универсальный Асинхронный Приёмо-Передатчик (UART), Так что, переключимся на то, как реализовать эту функциональность программно.(с последними версиями launсhpad это уже не так актуально, так как один из МК на борту содержит «железный» UART посредством одного из своих портов. — прим.перев.)

К счастью, в этом случае у нас будет реальное преимущество — твёрдое понимание того, как работает последовательный обмен данными поможет нам понять, как обрабатывать и записывать научные данные. По факту мы доберёмся до USI/USCI периферийных устройств, рассмотрим другие режимы коммуникации, такие как SPI и I2C, найдём немного времени, чтобы понять, как эти методы отправляют данные. Конкретная реализация последовательной системы связи называется протоколом. Существуют  различные протоколы, такие как Bluetooth, Wi-Fi и ZigBee, и подобные задачи мы будем применять каждый день!

Вы можете спросить: «почему же мы будем переделывать программный UART? Ведь уже много людей опубликовало об этом статьи и привели много примеров кода.» Я бы ответил, что на это есть две причины. Чем больше философских причин мы познаём, тем лучше мы понимаем, какой из инструментов мы будем использовать для работы. Эйнштейн однажды сказал, что вы действительно ничего не поймёте, пока не сможете объяснить это своей бабушке. По практическим соображениям я ни в одной из статей не приводил объяснений, по каким причинам использовал именно такие, а не иные установки в коде. И здесь у нас аналогичная цель — путём полного разбора программного UART, мы узнаем о том, как работает последовательное соединение, получим хороший пример использования периферии msp430, что будет в нашу пользу в поиске работы. Мы проведём так же тщательную работу, начиная с простой передачи (думаю, технически это должно быть UAT), продолжим простым приёмником (т.н. UAR), и завершим созданием полного UART-приёмо-передатчика. По пути мы немного поговорим о кристаллах, а так же узнаем о калибровке нашего тактового генератора.

Я сделаю всё возможное, чтобы публиковать дальнейшие уроки регулярно, так что в ближайшее время мы сможем перейти к более продвинутым идеям в будущем. Это так же одновременно мотивирует. Эти уроки были разработаны в качестве заметок к моему собственному обучению. Однако в итоге методы и стили оказались несколько непоследовательными, хотя одна из целей этого блога — составить учебный план, который может быть использован для обучения студентов на один семестр курса по микроконтроллерам. После окончания института я соберу, отредактирую и оформлю эти уроки в книгу, которая может быть скачана как раз для этих целей. Полагаю, рассмотренный материал на этой точке приблизительно как раз хорошо соответствует одному семестру обучения, так что целый учебник вполне сможет претендовать на окончательный проект для целого курса. Пока это — больше концепция, которая займёт некоторое время, но будет опираться на знания другой периферии и улучшит уже усвоенные навыки. По факту, некоторые представленные идеи в ходе освоения добавятся к общей сумме знаний, полученных в этом курсе. Итак, приступим к msp430.

продолжение следует…

источник

MSP430. Начало работы. Создание проекта. Первая программа — MSPproject.ru / проекты на MSP430

Привет. Сегодня рассмотрим азы работы с микроконтроллерами MSP430, начнем работу с MSP430F55x.

Для работы нам понадобится:

Итак, начнем.

Для начала пару слов о сабже. Микроконтроллер MSP430F5529 является самым мощным в линейке MSP430F552x, имеет 128 кб Flash-памяти, 10 кб ОЗУ (8 кб, если используется аппаратный USB-модуль), 63 порта ввода/вывода, по 2 модуля USCI_A и USCI_B, 12-разрядное 14-канальное АЦП, 4 16-разрядных таймера.

Первым делом необходимо установить и настроить IAR. Здесь сложностей быть не должно, единственное — для приобретения бесплатной лицензии потребуется регистрация.

Далее идем на сайт TI и скачиваем юзергайд на Launchpad, даташит на микроконтроллер, примеры кода и, пожалуй самое важное, юзергайд на семейства F5x, F6x, к сожалению только на английском, а для второго и четвертого семейства есть переведенная книга. User’s Guide на семейство включает в себя описание всех аппаратных модулей, список и описание регистров, поэтому рекомендую распечатывать отдельные главы в процессе написания программ.

Все это будет пригождаться в будущих уроках. Полную информацию об МК можно подчерпнуть на странице.

Создание проекта

Запускаем IAR. Выбираем Project -> Create New Project -> Empty project -> OK. Предлагает сохранить проект. Создаем новую папку для проекта, вводим название, например, test_project.

 

Проект появился в списке панели Workspace. Заходим в опции.

На основном экране меняем Device с «Generic MSP430 device» на «MSP430F5529». Переходим в категорию Debugger, вкладка Setup. Меняем Driver с «Simulator» на «FET Debugger.= BIT0; /* Переключаем состояние P1.0 (если был 0, станет 1 и наоборот) */ } }

Тривиальная программа, которая будет моргать светодиодом, подключенным к ноге P1.0 Launchpad’а.

Не забываем подключить лончпад к свободному USB-порту компьютера и заливаем программу в контроллер нажатием сочетания Ctrl+D. IAR предложит сохранить Workspace, сохраняем под любым именем.

После завершения компиляции и загрузки, запускаем отладку нажатием F5. Светодиод на лончпаде начнет мигать с частотой приблизительно 1 Гц.

Разбор программы

В первой строке подключается заголовочный файл с описаниями регистров и битов для МК MSP430F5529. Лежит он в папке C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\430\inc. Крайне рекомендую его открыть и изучить.

Далее идет объявление функции main() — точка входа в программу (в C/C++ так принято).

Следующей строкой останавливается сторожевой таймер. Сторожевой таймер (WatchDog Timer) необходим для перезагрузки микроконтроллера при зависании, но мы эту фичу использовать не будем.

Далее настраиваем ногу P1.0 на выход, используя побитовую операцию ИЛИ. Аналогично можно было бы записать P1DIR = P1DIR | BIT0 или P1DIR = P1DIR | 0x01. Да, при программировании MSP430 мы очень часто будем использовать битовые операции, потому необходимо самостоятельно изучить эту тему, а также двоичную и шестнадцатеричную арифметику.

Для выставления лог. 0 на ноге P1.0 необходимо обнулить соответствующий бит в регистре P1OUT. Для этого используем побитовую операцию И и перемножаем регистр P1OUT на число 0xFE (~BIT0 = 0b11111110).

Затем выполняем бесконечный цикл,  __delay_cycles выполняет команду NOP указанное количество раз, в нашем случае 500 000. Дело в том, что MSP430 по умолчанию запускается на частоте ~1 МГц.

И наконец, переключение состояния осуществляется побитовой операцией исключающее ИЛИ.

Резюме

Мы научились создавать и запускать отладку проектов в IAR, написали первую простейшую программу.

В следующем уроке детально разберем работу с GPIO (портами ввода/вывода), познакомимся с прерываниями и таймерами.

Быстрый старт с микроконтроллерами MSP430.

Немного отвлечемся от STM32 и сегодня займемся устройствами от Texas Instruments — микроконтроллерами MSP430. И эта статья будет посвящена так называемому быстрому старту с этими девайсами. Все опыты и эксперименты будут ставиться на недорогой отладочной платке — MSP430 LaunchPad.

Итак, открываем коробку с платой и достаем все, что нам понадобится. На данном этапе нам нужна лишь сама плата и USB-кабель для подключения ее к компьютеру. Смело втыкаем шнур в USB-разъем и ждем пока заботливый Windows установит нам необходимые драйвера. Но тут есть одна неприятность — драйвер

MSP430 Application UART надо найти и установить самим. Не вопрос!

Идем на официальный сайт Texas Instruments и качаем IDE (я остановил свой выбор на IAR Embedded Workbench for MSP430). Архив скачан, распаковываем и идем в диспетчер устройств. Там находим наш девайс и указываем вручную пути к файлам драйвера, которые находятся в скачанном архиве в папке Drivers. В случае успеха отладочная плата будет определяться в диспетчере устройств следующим образом:

Первый этап позади, теперь необходимо установить IAR Embedded Workbench. Запускаем IAR и создаем новый проект. Для этого идем в Project->Create New Project. В появившемся окне выбираем следующее:

В результате получаем пустой проект, в который уже включен файл main.c. Теперь мы можем переходить к написанию собственного кода. Давайте по традиции начнем с портов ввода-вывода. На отладочной плате есть пользовательская кнопка и парочка светодиодов — а точнее два, красный и зеленый. Давайте так — если кнопка нажата горит зеленый, иначе красный 🙂 Но перед тем как писать программу, посмотрим, какие же регистры отвечают в MSP430 за порты ввода-вывода. Итак, начинаем!

Регистр PxDIR.

Каждый бит этого регистра отвечает за режим работы соответствующего вывода микроконтроллера. Если в регистре бит равен 0, то ножка контроллера является входом, если бит равен 1 — выходом. Пусть, например, второй бит регистра P1DIR равен 1. Что это значит? А то, что вывод P1.1 работает в режиме выхода.

Регистр PxREN.

А этот регистр отвечает за включение/отключение подтяжки вверх/вниз. Тут больше и сказать то нечего.

Регистр PxOUT.

А вот здесь поинтереснее 🙂 Если вывод у нас работает в режиме выхода, то биты этого регистра отвечают за уровень сигнала на ножке контроллера. Пусть у нас P1.3 работает как выход. Если мы выставим четвертый бит регистра P1OUT в 1, то на выводе P1.3 появится сигнал высокого уровня (логическая единица), если 4-ый бит P1OUT равен 0, то и сигнал на ножке контроллера низкого уровня.

Другое дело, если пин работает как вход. В этом случае биты этого регистра отвечают за подтяжку вывода. Вот небольшой примерчик, чтобы сразу все стало понятно. Пусть P1.0 — вход. Если нулевой бит P1OUT = 1, то подтяжка вверх, если нулевой бит равен 0, подтяжка вниз. Все очень логично!

Регистр PxIN.

Тут все просто — биты этого регистра соответствуют уровню сигнала на соответствующих пинах микроконтроллера. На входе — 1, в регистре — 1, на входе 0, и в регистре — 0. Каждому выводу, например, порта 1 (P1.0, P1.1…) соответствует свой бит регистра P1IN.

Регистры PxSEL и PxSEL2 отвечают за альтернативные функции выводов при использовании какой-либо периферии микроконтроллера.

Кроме всего вышеперечисленного, каждый пин портов 1 и 2 может работать в режиме внешнего прерывания. То есть при изменении сигнала на каком-либо выводе программа ускачет на обработку прерывания. Но мы пока не будем на этом останавливаться, а перейдем уже наконец-то к написанию кода программы. Осталось лишь разобраться, что и как подключено на нашей отладочной плате:

Видим, что кнопка висит на ножке P1.3, а светодиоды на P1.0 и P1.6.

/***************************************************************************************/
#include "io430.h"


/***************************************************************************************/
int main( void )
{
	// Stop watchdog timer to prevent time out reset
	WDTCTL = WDTPW + WDTHOLD;

	// Выводы P1.0 и P1.6 работают в качестве выходов
	P1DIR = BIT6 | BIT0;
	
	// Обнуляем значение регистра P1OUT и все светодиодики гаснут
	P1OUT = 0x00;

	// Как видно из схемы кнопка у нас замыкает вывод на землю,
	// поэтому активируем для вывода P1.3 подтяжку вверх
	P1REN |= BIT3;
	P1OUT |= BIT3;

	while(1)
	{
		// Проверяем состояние кнопки
		if ((P1IN & BIT3) == 0)
		{
			// Зажигаем зеленый, гасим красный, если нажата
			P1OUT |= BIT6;
			P1OUT &= ~BIT0;
		}
		else
		{
			// Не нажата - гасим зеленый, зажигаем красный
			P1OUT |= BIT0;
			P1OUT &= ~BIT6;
		}
	}

	return 0;
}


/***************************************************************************************/

Осталось совсем немного — а именно настроить наш проект и отладчик. Идем в настройки проекта и выбираем наш контроллер:

В этом же окне идем во вкладку Debugger и выбираем FET Debugger вместо Simulator. Теперь мы готовы прошивать контроллер!

В итоге при нажатии на кнопку мы должны увидеть горящий зеленый светодиод, а если кнопка не нажата, то горит красный. На этом, собственно, и все, с нашим первый проектом для MSP430 мы разобрались!

Начинаем работать с микроконтроллерами MSP430 « схемопедия


Целью данной статьи является помощь в начале освоения микроконтроллеров 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

Привезут в течении недели, возможно перед этим позвонят и спросят на русском языке зачем Вам это необходимо. Тут уж каждый сам за себя. Придумывайте что хотите. Как привезут, позвонят еще раз из службы доставки. Именно поэтому должен быть правильный телефон и адрес.

Скачать файлы к статье

Автор: Трухов Виктор Павлович

Как правильно настроить параметры смещения и чувствительности для Allegro A1362, чтобы MSP430 правильно оцифровывал их?

Как правильно настроить параметры смещения и чувствительности для программируемого линейного датчика эффекта Холла Allegro A1362, чтобы TI MSP430 5528 правильно их оцифровывал?

Используя наблюдаемые значения оцифровки MSP430, как выбрать чувствительность для A1362? Я ожидаю, что чувствительность будет около 5-6 мВ / г, и согласно спецификации, гарантированный диапазон составляет 4,5-16 мВ / г.

Как установить значение устойчивого состояния A1362 на уровне около 1,25 В? MSP430 оцифровывает значения от 0 до 2,5 Вольт, но датчик Холла с эффектом А1362 является биполярным, что означает, что напряжение увеличивается и уменьшается. Мне нужно, чтобы значение установившегося состояния A1362 (без магнита) было 1,25 В, чтобы учесть изменения как северного, так и южного полюса.

Я знаю, что оба приведенных выше вопроса потребуют некоторых экспериментов с датчиком Холла и магнитом A1362 для определения точного смещения и наклона, но я надеялся, что кто-то в сообществе может указать мне на какое-то учебное пособие (youtube или руководящие принципы) или дать мне общее представление о процедуре, чтобы сделать то, что описано выше.

Будет ли требуемая процедура выглядеть примерно так, как описано в pg. 54 здесь ?

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

Я был бы очень признателен за все / любые советы, поскольку я впервые делаю что-то подобное. Видео уроки будут высоко ценится.

Аниндо Гош

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

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

Обязательные параметры:

  • Ожидаемая напряженность магнитного поля — ожидается активный диапазон?
    • Собственное земное магнитное поле на поверхности = от 300 до 600 миллигаусс
    • Маленький игрушечный магнит или магнит на холодильник = от 30 до 150 Гаусс
  • Ожидаемая скорость смены поля: сколько циклов в секунду?
  • V cc MSP430?
    • MSP430 оцифровывает от 0 до V cc и может выдерживать до V cc +0,30 В
    • Допустимое V cc до 3,6 В
  • Ожидаемый / желаемый полномасштабный диапазон от датчика Холла (при условии использования ADC10 MSP430)?
    • Оба верхних и нижние ссылки могут быть изменены с GND по умолчанию и V CC , к внешнему опорному напряжению, от 0 до 1,2 вольт , как нижняя ссылка, и от 1,4 до V CC , как выше ,
    • Внутренние опорные напряжения 1,5 В и 2,5 В также доступны для использования в качестве пределов полной шкалы.

После того, как вышеуказанные параметры определены, предложенный способ продолжить будет:

  1. Запрограммируйте напряжение покоя примерно на полпути между выбранными эталонными значениями MSP430 ADC10.
  2. Определите фактическую чувствительность вашего датчика с помощью выбранного магнита и хорошего вольтметра: диапазон допуска на производство довольно высок. Например, если использовать сильные магниты на холодильник, самый высокий диапазон чувствительности 4.5 - 16 mV/G, может дать максимум 4,8 В в натуральную величину с севера на юг, намного больше, чем может выдержать MSP430.
  3. Запрограммируйте чувствительность на основе описанных выше тестов, не используйте режим максимальной чувствительности детали.
  4. Не рассчитывайте на встроенный зажим устройства, используйте внешнее зажимное устройство, если существует риск превышения V cc в MSP430 +0,30 Вольт.
  5. Выбирайте опорные напряжения АЦП между напряжениями шины, а не полными значениями от 0 до V cc , таким образом, существует погрешность для ошибки в случае превышения датчиком ожидаемого полномасштабного напряжения, например, если поблизости звонит мобильный телефон.
  6. Используйте конденсатор на выводе FILTER полосы пропускания, чтобы ваша полоса пропускания была, возможно, в 10 раз выше ожидаемых циклов в секунду, упомянутых выше — в противном случае выходной сигнал становится слишком нервным, даже если мимо проходит человек с монетами в карманах.

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

Начальный уровень, 9-12 лет

Обеспечивает решение образовательных задач участников образовательного процесса (обучающийся, педагог) с использованием информационно-коммуникационных технологий (ИКТ), в том числе моделирования, конструирования объектов и их программирования на компьютере.

Модуль способствует развитию системы универсальных учебных действий в составе личностных, регулятивных, познавательных и коммуникативных действий.

Модуль предназначен для проведения урочных и дополнительных занятий по изучению основ робототехники и информатики.

 

Образовательный  робототехнический модуль «Начальный уровень» содержит:

Базовый робототехнический набор – 4 шт;

Сенсорный модуль на базе гироскопа – 2 шт;

Сенсорный модуль светодиодного модуля и тактильного датчика – 4 шт;

Сенсорный модуль УЗ-дальномера – 2 шт,

УЗ-дальномер и микроконтроллер MSP430;

Сенсорный модуль на базе датчика освещенности и цвета – 2 шт;

Сенсорный модуль тактильного датчика – 8 шт, микроконтроллер MSP430, позволяющий определять кратковременное нажатие.

Пульт дистанционного управления – 2 шт,

8 кнопок управления и 2 джойстика. USB-порт и порт для подключения радиомодуля.

Аккумуляторная батарея – 2 шт;

Радиомодуль —  4 шт, для беспроводной связи по радиоканалу частотой 2,4 ГГц.

Методические рекомендации — 4 шт;

Диск с программным обеспечением — 1 шт;

Игровое поле для соревнований — 1 шт;

Комплект соревновательных элементов — 1 шт.

 

СОСТАВ БАЗОВОГО РОБОТОТЕХНИЧЕСКОГО НАБОРА:

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

Базовый робототехнический набор содержит следующие основные элементы:

—  118 конструктивных элементов их высококачественного пластика;

—  178 переходных и соединительных элемента;

—  156 различных валов, 8 шкивов различного диаметра;

—  30 зубчатых колес различного диаметра.

—  320 соединенительных элементов из различных втулок и заклепок.

—  комплект из 4 колес, состоящий из ступицы, резиновой покрышки и 2 резиновых колес.

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

— Приводной модуль в количестве 4шт. Приводной модуль представляет собой электромеханическое устройство, состоящее из двигателя постоянного тока и его схемы управления, а так же микроконтроллера MSP430, предназначенного для обработки команд управления и обеспечивающего защиту устройства от превышения тока или напряжения.  Встроенный в приводной модуль микроконтроллер содержит программную функцию ПИД-регулирования для точного регулирования скорости вращения выходного вала и его положения.

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

— Программируемый контроллер – 1шт. Программируемый контроллер представляет собой устройство, содержащее LCD монитор и 4 управляющие кнопки для навигации по меню управления и переключения режимов работы. В состав программируемого контроллера входит микроконтроллер Texas Instruments Tiva ARM Cortex-M4, позволяющий выполнять не менее 100 миллионов операций в секунду, а так же выполнять операции с плавающей точкой за один такт. Программируемый контроллер обладает USB портом для программирования, портом для подключения радиомодуля и портом для подключения зарядного устройства.

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

— Аккумуляторная батарея – 1 шт. Аккумуляторная батарея типа Ni-Mh.

— Зарядное устройство для аккумуляторной батареи – 1 шт.

— Кабель для зарядного устройства – 1 шт.

— Комплект соединительных кабелей и шлейфов – 1 шт.

— Кабель USB для программирования  -1 шт. Кабель типа micro USB-USB.

Все элементы каждого базового робототехнического набора, входящего в комплект поставки  конструктивно и электрически совместимы друг с другом.

 

СОСТАВ КОМПЛЕКТА ДЛЯ СОРЕВНОВАТЕЛЬНЫХ МЕРОПРИЯТИЙ:

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

 —  Игровое поле. Предназначенное для проведения соревнований по робототехнике в соответствии с регламентом ряда крупнейших международных федераций.

 —  Комплект соревновательных элементов — 1 шт.

 

УЧЕБНО-МЕТОДИЧЕСКИЕ ПОСОБИЯ:

ОСНОВЫ РОБОТОТЕХНИКИ VEX IQ 8-14 ЛЕТ.

УЧЕБНО-НАГЛЯДНОЕ ПОСОБИЕ ДЛЯ УЧЕНИКА

Данное пособие предназначено для применения совместно с образовательным робототехническим модулем «Начальный уровень». В книге описываются возможности робототехнического модуля и области его применения. Пособие содержит информацию о назначении робототехнического набора и описание процесса сборки робота. Особое внимание уделяется вопросам подготовки учащихся к участию в робототехнических соревнованиях.

  

ОСНОВЫ РОБОТОТЕХНИКИ VEX IQ 8-14 ЛЕТ.

РАБОЧАЯ ТЕТРАДЬ ДЛЯ УЧЕНИКА

Данное пособие было разработано в качестве дополнения к образовательной платформе VEX IQ для учащихся начальной и основной школы. Данное пособие включает 12 инструкций, которые могут использоваться последовательно, частями, а также в качестве отдельных занятий, чтобы открыть для себя мир естественных наук, технологий, инженерии и математики.

 

ОСНОВЫ РОБОТОТЕХНИКИ VEX IQ 8-14 ЛЕТ.

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ДЛЯ УЧИТЕЛЯ

Пособие рассказывает о методах и примерах работы с образовательным конструктором VEX IQ, его использовании на уроках технологии, математики и информатики, а также во внеурочной деятельности. Пособие адресовано учителям начальной и основной школы, ведущим курсы технологии, информатики, физики.

Le livre Mikrokontrollery MSP430. Pervoe znakomstvo | ISBN 9785980032654

Книга посвящена микроконтроллерам серии MSP430, которые производятся фирмой Texas Instruments. Едва ли удастся найти конкурента этим микроконтроллерам по величине потребляемого тока и производительности, если речь идет о разработке автономных малогабаритных приборов с низковольтным батарейным питанием. Книга в доступной форме поможет разобраться с архитектурой и системой команд MSP430, сориентирует читателя в многообразии «софта» для разработки программного обеспечения, расскажет о способах «прошивки» памяти MSP430, о существующих программаторах. Приведенные схемы, печатные платы и сборочные рисунки позволят собрать несколько несложных программаторов flash-памяти MSP430 самостоятельно. Книга адресована инженерам, начинающим работать с микроконтроллерами, студентам радиотехнических специальностей вузов, специалистам, занимающимся обслуживанием и ремонтом электронной аппаратуры, радиолюбителям, а также всем тем, кто интересуется перспективной электронной техникой. …

Kniga posvjaschena mikrokontrolleram serii MSP430, kotorye proizvodjatsja firmoj Texas Instruments. Edva li udastsja najti konkurenta etim mikrokontrolleram po velichine potrebljaemogo toka i proizvoditelnosti, esli rech idet o razrabotke avtonomnykh malogabaritnykh priborov s nizkovoltnym batarejnym pitaniem. Kniga v dostupnoj forme pomozhet razobratsja s arkhitekturoj i sistemoj komand MSP430, sorientiruet chitatelja v mnogoobrazii «softa» dlja razrabotki programmnogo obespechenija, rasskazhet o sposobakh «proshivki» pamjati MSP430, o suschestvujuschikh programmatorakh. Privedennye skhemy, pechatnye platy i sborochnye risunki pozvoljat sobrat neskolko neslozhnykh programmatorov flash-pamjati MSP430 samostojatelno. Kniga adresovana inzheneram, nachinajuschim rabotat s mikrokontrollerami, studentam radiotekhnicheskikh spetsialnostej vuzov, spetsialistam, zanimajuschimsja obsluzhivaniem i remontom elektronnoj apparatury, radioljubiteljam, a takzhe vsem tem, kto interesuetsja perspektivnoj elektronnoj tekhnikoj. …

MSP430 ™ Мастерская | Учебная серия TI.com

Скачать файлы мастерской

ПРИМЕЧАНИЯ:

  • Установите файлы .exe или .zip, указанные выше. Файл .zip был добавлен для пользователей Linux и Mac.
  • При загрузке файла «setup» вы можете заметить, что часть имени файла «.exe» была удалена. В этом случае просто переименуйте файл и добавьте «.exe» в конец имени файла, чтобы можно было запустить установщик. Это проблема нашего сервера, которую мы надеемся решить в ближайшее время.
  • Если вы используете более старое устройство (без поддержки библиотеки драйверов), мы рекомендуем вам прочитать / посмотреть обсуждения глав на этом семинаре, но при этом обратитесь к лабораторным работам и решениям, найденным в семинаре G2553 Value-Line LaunchPad ™.

Справочник и информация для мастерской История изменений: MSP_Design_Workshop_Readme.txt Контрольные суммы: md5

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

Для выполнения лабораторных работ вам потребуется следующее:

  • Компьютер под управлением Windows 7 (или более поздней версии), Linux или MacOS (бета) с 1,5 ГБ или более свободного места на жестком диске.
(Однако обратите внимание, что лабораторные инструкции были написаны и проверены на соответствие с версией инструментов для Windows.)
  • Установите следующее в соответствии с руководством по установке (см. Ссылку выше):
  • Материалы семинара:

Запуск лабораторных работ

  • Руководство по курсу семинара (см. Ссылку выше)
  • Файлы лабораторных работ и решений (см. Ссылку выше)
  • Один из следующих EVM LaunchPad:
  • Одна женщина-к- женская перемычка (вот их пачка, например, от adafruit).

  • Если вы используете F5529 USB LaunchPad, вам нужно будет использовать новый MSP-FET для измерения потребления энергии во время лабораторных упражнений по оптимизации малой мощности.

  • MSP-FET (инструмент эмуляции Flash / FRAM) поддерживает измерение энергии с помощью функции EnergyTrace для всех устройств MSP430 (115,00 долларов США)

MSP430 Как работать со светодиодом.

MSP430 Как работать со светодиодом

MSP430 Как работать со светодиодом.Этот урок посвящен второй среде разработки для микроконтроллеров с ядром MSP430, которая является основой для плат TiTAN

Среда разработки

В первой части мы познакомились с бесплатной веб-средой разработки, предоставленной Texas Instruments. Он находится на сайте https://dev.ti.com.

Code Composer Studio

Пора переходить к полноценной среде разработки Code Composer Studio. Распространение находится по адресу http: // www.ti.com/tool/download/CCSTUDIO

MSP430 Поддерживаемая установка

Установка занимает довольно много времени. Во время установки не забудьте поставить галочку напротив MSP430 support. После установки при первом запуске приложения вам может потребоваться установить дополнительные библиотеки, относящиеся к среде разработки. Он сделает это самостоятельно, и вам нужно будет только подтвердить действия.

Итак, все готово.

Загрузить проект

И, как и в первой части урока, загрузим проект «TiTAN_example_01_simply_led_blink» по ссылке https: // titan-project.com / en / software /

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

Пошаговый запуск программы

Функции из этого примера мы обсуждали в первой части урока.

Теперь давайте не просто скомпилируем проект, а запустим программу по шагам.

Запустить компиляцию

Если ошибок нет (как показано на картинке)

Загрузка программы в TiTAN

перейдем к загрузке программы в TiTAN и ее запуску по шагам режим.

Если загрузка прошла успешно, программа автоматически примет первую команду программы. Нажав кнопку «», мы можем запустить нашу программу, которая шаг за шагом загружается в TiTAN. При этом в панели

можно наблюдать за изменениями регистров микроконтроллера и при необходимости изменять значения.

Нажав кнопку «», вы можете запустить программу в обычном режиме с текущей позиции.

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

Видеоурок — MSP430 Как работать со светодиодом

Время выполнения инструкций msp430 — Введение в C и организацию компьютера

Тактовые импульсы ЦП и тактовая частота

ЦП — это конечный автомат, переходы которого запускаются вызываемой схемой и генератором, который периодически генерирует «тактовые импульсы». Длительность одного импульса обычно называется «тактовым циклом» или «тактовым периодом».«Мы будем использовать эти термины как синонимы.

Частота (скорость), с которой генерируются тактовые импульсы, измеряется в« Герцах »(сокращенно Гц). Единицы измерения выражаются в импульсах в секунду, поэтому задержка между импульсами обратно пропорциональна частоте.

Типичные тактовые частоты варьируются от чуть менее одного миллиона до чуть более двух миллиардов импульсов в секунду (от 1 МГц до 2 ГГц).

MSP-430 — это семейство специализированных процессоров, предназначенных для управления небольшими устройствами с ограниченным энергопотреблением ( е.g тонометры). Их тактовые импульсы можно настроить с помощью программного обеспечения для генерации импульсов с различными тактовыми частотами в диапазоне от чуть менее 1 МГц до 16–32 МГц (в зависимости от модели). Мы исследуем, как регулируется тактовая частота, в другой главе.

Число тактовых циклов на инструкцию

Выполнение инструкции включает в себя несколько операций с памятью, и не все инструкции выполняют одинаковое количество операций с памятью. Кроме того, для внутренней обработки некоторых инструкций требуется больше тактов, чем для других.На MSP430 для каждой операции с памятью требуется один такт. Таким образом, не стоит удивляться тому, что время выполнения (в циклах) инструкции зависит от инструкции.

  • Каждое слово инструкции, включая его слова расширения, должно быть «извлечено» из памяти.
    • Каждое из этих чтений памяти требует одного тактового цикла.
    • При подготовке к следующему циклу счетчик программы увеличивается на 2 во время каждого из этих чтений памяти.
  • Инструкция должна быть декодирована (чтобы определить ее значение)
    • На MSP430 это делается в конце того же тактового цикла, в котором выбирается инструкция.
  • Также необходимо выбрать любые входные операнды, хранящиеся в памяти. Каждое из этих чтений памяти требует одного тактового цикла.
    • Входные операнды, уже находящиеся в ЦП (т. Е. Регистры), доступны немедленно.
    • Пока его значение игнорируется, инструкции mov, тем не менее, получают значение операнда-адресата.
  • Выполняется внутренняя обработка операции.
    • MSP430 имеет очень простой (и, следовательно, быстрый) MMU, который может вычислять арифметические результаты в пределах того же такта, когда ЦП имеет значения всех входных операндов.(ноль дополнительных циклов)
    • Исключения :
      • любая операция, которая явно изменяет ПК (т. е. R0), такая как jmp, вызов подпрограммы, операция стека или арифметическая операция, где ПК является местом назначения, требует одного дополнительного цикла выполнения .
      • Для операций push требуется один дополнительный цикл выполнения.
      • Инструкция вызова включает в себя операцию push, а также изменяет ПК. Следовательно, требуется два дополнительных цикла выполнения.
      • Если место назначения инструкции CMP находится в памяти (см. Подробности ниже, выделенные жирным шрифтом ).
  • Результаты сохраняются
    • Если целевой операнд находится в памяти, это требует еще одного тактового цикла.
      • Даже для инструкций CMP, , которые фактически не сохраняют свои результаты. Это может быть намеком на то, как реализован CMP.
    • Тактовые циклы не требуются для сохранения операндов назначения в регистрах.
902 902 0 9012 4 0 #
инструкция # циклы выборки команды # циклы выборки операнда # циклы сохранения результатов # дополнительные циклы выполнения для внутренней обработки * # всего циклов
add r5, r6 1 0 0 0 1
добавить & 0x280, r6 2 1 0 0 3 0 0 0 2
добавить r5, 0x282 2 1 1 0 4
1 0 6
cmp r0x280, r6 2 1 0 3
cmp 0x280, 0x282 3 2 1 * 0 6
jmp124 * 2
mov r5, pc 1 0 0 1 * 2
pop pc 1 1 0
pop r5 1 1 0 0 2
push r5 1 0 1 1 * 9020 9020 2 0 1 1 * 4
вызов # 0xdead 2 0 1 2 * 5

* см. Примечания относительно исключений выше.

Примеры проблем:

Q1: Как долго следующий метод задержки выполняется на MSP430 с тактовой частотой 2 МГц:

delay: mov # 1000, r15

Еще раз : sub # 1, r15

jnz снова

Решение:

1. 1 такт составляет 1/2000000 с = 5×10 -7 с = 0,5us

2. тактов / инструкций

задержка: mov # 1000, r15; 2 цикла вне цикла

снова: sub # 1, r15; 2 цикла внутри цикла (# 1 в добавочном слове)

снова jnz; 2 цикла внутри цикла

ret; 3 цикла вне контура

3.циклов / выполнение подпрограммы

внешний цикл
циклов на итерацию # раз выполнено всего
внутренний цикл 4 1000 4000
1 5

Общее время выполнения (с точностью до трех десятичных знаков): 4,005×10 3 цикл * 5 * 10 -7 с / цикл = 20 * 10 -4 с = 2 * 10 -3 с = 2 мс

Q2: Преобразуйте следующую функцию в сборку и укажите, сколько времени требуется для ее выполнения на MSP430 с тактовой частотой 10 МГц.

403f 0008 831f 3bfe 4130

A2:

c / i зацикленный

403f 0008 mov # 8, r15 2 нет

831f sub # 1, r15 1 yes

45

45

45 2 (к суб) 2 да

4130 mov @ r1 +, r0 (= pop pc = ret) 3 нет

Соблюдайте

  • цикл не повторяется
    • , потому что первое значение не- отрицательный
  • Все инструкции выполняются один раз: 8 циклов

Преобразование во время.

  • 10 МГц = 10 6 цикл / секунду.
    • Следовательно, цикл требует 10 -6 с = 1 микросекунда = 1 мкс
  • 8 циклов, следовательно, требуется 8 * 10 -6 с = 8 микросекунд = 8 мкс
Итак, первая и последняя инструкция выполняются один раз .

Q3: Переведите следующую функцию в сборку и укажите сколько времени требуется для работы на MSP430 с тактовой частотой 10 МГц.

403f 0008 831f 37fe 4130

A3:

c / i зацикленный

403f 0008 mov # 8, r15 2 нет

831f sub # 1, r15 1 yes

45

45 9000 2 (к суб) 2 да

4130 mov @ r1 +, r0 (= pop pc = ret) 3 нет

Соблюдайте

  • цикл повторяется 9 раз
    • , пока результат вычитания не станет отрицательным
  • Только две средние инструкции (3 цикла) повторяются 9 раз: 9 * 3 = 27 циклов
  • Две другие инструкции выполняются один раз: 5 циклов
  • Итого: 27 + 5 = 32 цикла

Преобразование во время.

  • 10 МГц = 10 6 цикл / секунду.
    • Следовательно, для цикла требуется 10 -6 с = 1 микросекунда = 1 мкс
  • 27 циклов, следовательно, требуется 27 * 10 -6 с = 27 микросекунд = 27 мкс

Итак, выполняется первая и последняя инструкция однажды.

LaunchPad MSP430 Учебное пособие по языку ассемблера от Ральфа Хеймсфельда


LaunchPad MSP430 Учебное пособие по языку ассемблера

Ральф Хеймсфельд

Панель запуска Texas Instruments — удобный инструмент для оценки и изучения микроконтроллеров серии MSP430 Value Line.В этом руководстве используется LaunchPad с включенным в него процессором MSP430G2231 для знакомства с программированием на языке ассемблера MSP430. Разработана небольшая программа, которая считывает состояние кнопки LaunchPad. Пока кнопка не нажата, горит красный светодиод LaunchPad. При нажатии кнопки загорается зеленый светодиод.

Хотя эта первая программа короткая — всего 20 строк кода, — руководство охватывает очень многое. Помимо обзора основного синтаксиса и структуры языка ассемблера MSP430, предоставляется информация о том, как:

  • Настроить контакт как вход или выход
  • Включение или выключение выхода
  • Чтение цифрового входа
  • Переход к другому месту в программе
  • Реализуйте простую конструкцию IF / THEN
  • Реализовать простую конструкцию LOOP
  • Реализуйте простую конструкцию ЗАДЕРЖКИ

Представленный здесь синтаксис основан на 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.

  • В CCS выберите File -> New -> CCS Project.
  • Введите имя проекта, нажмите «Далее» и установите «Тип проекта» на MSP430.
  • Дважды щелкните «Далее», чтобы перейти на страницу настроек проекта CCS.Выберите подходящий вариант устройства, установите флажок «Настроить как проект только сборки» и нажмите «Готово».
  • Выберите File -> New -> Source File.
  • Введите имя файла с расширением .asm.
  • Введите или вставьте текст программы в файл.
  • Когда код будет готов, выберите Project -> Build Active Project
  • Выбрать цель -> Отладка активного проекта
  • Выберите Target -> Run, чтобы запустить приложение.

Первая уборка

            .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, это, вероятно, должно стать вашим следующим шагом.

  • Руководство пользователя средств языка ассемблера MSP430 (slau131e)
  • Руководство пользователя для семейства MSP430x2xx (slau144e)
  • MSP430G2x21, MSP430G2x31 Лист данных (slas694b)
  • Руководство пользователя Code Composer Studio (slau157n)

Все эти руководства содержат более 1000 страниц важной информации об инструментах ассемблера, наборе инструкций, электрических характеристиках и особенностях семейства микроконтроллеров.Одна из целей этого руководства — представить язык ассемблера MSP430 как можно более прямо и просто и дать быстрый старт программированию. Тем не менее, к настоящему времени должно быть ясно, что научиться программировать MSP430 нетривиально. Многие важные темы были представлены лишь вкратце, а бесчисленное множество других даже не упоминалось. Надеюсь, мы подогрели ваш аппетит к этой платформе и заложили основу, на которой вы сможете начать свое понимание и набор инструментов.


Об авторе: Ральф Хеймсфельд является основателем и руководителем Sully Station Solutions. Его интересы включают искусственный интеллект, машинное обучение, робототехнику и встроенные системы. Его сочинения по другим различным темам регулярно появляются здесь и в Интернете.


Другие статьи, которые могут вам понравиться

Аналоговые датчики и панель запуска MSP430

Флексинол и другие мышечные волокна из нитинола

Buster — Робот-манипулятор Raspberry Pi с голосовым управлением

iCE40 и рабочий процесс IceStorm с открытым исходным кодом FPGA

Спроектируйте и соберите собственного робота

Нейронная сеть Arduino

Переход на 1284P

Начало работы с двухмоторной коробкой передач Tamiya


PPT — презентация PowerPoint с набором команд MSP430 | бесплатно скачать

PowerShow.com — ведущий веб-сайт для обмена презентациями / слайд-шоу. Независимо от того, является ли ваше приложение бизнесом, практическими рекомендациями, образованием, медициной, школой, церковью, продажами, маркетингом, онлайн-обучением или просто для развлечения, PowerShow.com — отличный ресурс. И, что лучше всего, большинство его интересных функций бесплатны и просты в использовании.

Вы можете использовать PowerShow.com, чтобы найти и загрузить примеры онлайн-презентаций PowerPoint ppt практически на любую тему, которую вы можете вообразить, чтобы вы могли узнать, как улучшить свои собственные слайды и презентации бесплатно.Или используйте его, чтобы найти и загрузить высококачественные практические презентации PowerPoint ppt с иллюстрированными или анимированными слайдами, которые научат вас делать что-то новое, также бесплатно. Или используйте его для загрузки собственных слайдов PowerPoint, чтобы вы могли поделиться ими со своими учителями, классом, студентами, руководителями, сотрудниками, клиентами, потенциальными инвесторами или всем миром. Или используйте его для создания действительно крутых слайд-шоу из фотографий — с двухмерными и трехмерными переходами, анимацией и музыкой на ваш выбор — которыми вы можете поделиться со своими друзьями в Facebook или в кругах Google+.Это тоже бесплатно!

За небольшую плату вы можете получить лучшую в отрасли конфиденциальность в Интернете или публично продвигать свои презентации и слайд-шоу с высокими рейтингами. Но в остальном это бесплатно. Мы даже преобразуем ваши презентации и слайд-шоу в универсальный формат Flash со всей их оригинальной мультимедийной красотой, включая анимацию, эффекты перехода 2D и 3D, встроенную музыку или другой звук или даже видео, встроенное в слайды. Все бесплатно. Большинство презентаций и слайд-шоу на PowerShow.com доступны для просмотра, многие даже можно бесплатно загрузить. (Вы можете выбрать, разрешить ли людям загружать ваши оригинальные презентации PowerPoint и слайд-шоу фотографий за плату или бесплатно или вовсе.) Зайдите на PowerShow.com сегодня — БЕСПЛАТНО. Здесь действительно каждый найдет что-то для себя!

презентации бесплатно. Или используйте его, чтобы найти и загрузить высококачественные практические презентации PowerPoint ppt с иллюстрированными или анимированными слайдами, которые научат вас делать что-то новое, также бесплатно. Или используйте его для загрузки собственных слайдов PowerPoint, чтобы вы могли поделиться ими со своими учителями, классом, студентами, руководителями, сотрудниками, клиентами, потенциальными инвесторами или всем миром.Или используйте его для создания действительно крутых слайд-шоу из фотографий — с двухмерными и трехмерными переходами, анимацией и музыкой на ваш выбор — которыми вы можете поделиться со своими друзьями в Facebook или в кругах Google+. Это тоже бесплатно!

За небольшую плату вы можете получить лучшую в отрасли конфиденциальность в Интернете или публично продвигать свои презентации и слайд-шоу с высокими рейтингами. Но в остальном это бесплатно. Мы даже преобразуем ваши презентации и слайд-шоу в универсальный формат Flash со всей их оригинальной мультимедийной красотой, включая анимацию, эффекты перехода 2D и 3D, встроенную музыку или другой звук или даже видео, встроенное в слайды.Все бесплатно. Большинство презентаций и слайд-шоу на PowerShow.com можно бесплатно просматривать, многие даже можно бесплатно загрузить. (Вы можете выбрать, разрешить ли людям загружать ваши оригинальные презентации PowerPoint и слайд-шоу фотографий за плату или бесплатно или вовсе.) Зайдите на PowerShow.com сегодня — БЕСПЛАТНО. Здесь действительно каждый найдет что-то для себя!

Начало работы с MSP430 с использованием Code Composer Studio

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, выберите первый вариант . Вы можете скачать более одного файла доски.

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

После установки он спрашивает о папке рабочего пространства, поэтому выберите папку, в которой вы хотите сохранить файлы, и нажмите ОК.

Итак, давайте посмотрим на первое окно, которое мы увидим.

Это простой интерфейс, в котором вы можете увидеть меню «Начало работы», в котором вы можете начать работу над своим проектом, рядом с «Начало работы» находится Resource Explorer .Это потрясающая функция этого программного обеспечения, в которой вы можете найти каждую деталь продукта 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 .

ESE101: MSP430 Введение - встроенный

На прошлой неделе я обсудил множество различных вещей, которые следует учитывать при выборе микроконтроллера.Я выбрал MSP430 для использования в ESE101 в первую очередь потому, что его относительно легко освоить.

Итак: давайте учимся!

Мы будем использовать комплект разработчика MSP430F5529 LaunchPad. Если вы хотите использовать настоящее оборудование (лучший способ научиться!), Я рекомендую вам приобрести его здесь: http://www.ti.com/tool/MSP-EXP430F5529LP

Кроме того, конкурс на Выиграйте бесплатный комплект разработчика до конца вторника, 5 апреля, в 23:59 по тихоокеанскому времени. К тому времени все электронные письма должны быть получены. Наборы были щедро пожертвованы Адрианом Фернандесом из Texas Instruments.См. Подробности в конце сообщения на прошлой неделе.

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

Первоначально MSP430 был «настоящим» 16-битным микроконтроллером, то есть все его регистры были 16-битными. Все его адреса памяти тоже были 16-битными, поэтому он мог адресовать 64 КБ памяти. (Наибольшее 16-битное число - 0xFFFF в шестнадцатеричном виде или 65535 в десятичном, что соответствует 64 КБ памяти.Я расскажу больше о шестнадцатеричном / десятичном / битовой ширине в более позднем посте.)

Исходный MSP430 был расширен для поддержки 20-битных адресов, поэтому он мог адресовать 1 МБ памяти. (Наибольшее 20-битное число - 0xFFFFF в шестнадцатеричном формате или 1048575 в десятичном, что соответствует 1 МБ памяти.) Этот расширенный MSP430 технически называется «MSP430X», но исходный MSP430 давно исчез, поэтому «MSP430» относится к MSP430X. Все существующие сегодня микросхемы MSP430 могут адресовать 1 МБ памяти.

Вы увидите, что в документации TI MSP430 упоминается как «CPUX», когда требуется подчеркнуть тот факт, что он может адресовать 20-битную память.Пусть вас это не смущает - CPU и CPUX - это одно и то же.

MSP430 имеет 16 регистров. Обычно они используются как 16-битные регистры, но их также можно использовать как 8-битные или 20-битные регистры в различных ситуациях, что немного сбивает с толку. [Ужасный каламбур, я знаю. Я оставлю это.]

Регистры имеют имена R0-R15. R4-R15 - это регистры общего назначения, которые можно использовать для чего угодно вашей программе. С другой стороны, R0-R3 - это регистры специального назначения.

R0 - это счетчик программ, обычно называемый ПК.ПК хранит в памяти адрес следующей инструкции для выполнения, как и в нашем вымышленном микропроцессоре. Вы ведь помните ПК по нашему выдуманному мультипроцессору? ПК всегда используется как полный 20-битный регистр, поэтому он может указывать на любой * адрес в пространстве памяти 1 МБ.

R1 - указатель стека и обычно называется SP. Мы еще не говорили о том, что такое стек, но пока достаточно знать, что SP содержит адрес памяти. Как и ПК, SP всегда используется как полный 20-разрядный регистр, поэтому он может указывать на любой * адрес в пространстве памяти 1 МБ.

R2 - это регистр состояния, обычно называемый SR. Это похоже на SR нашего вымышленного микроконтроллера.

R3 - это регистр генератора констант 2, который обычно называется CG2.

SR и CG2 немного странные, но я объясню их, когда мы перейдем к инструкциям по MSP430 в следующей публикации. (SR также называется CG1, поэтому R3 - это CG2, а не CG1, но пока это не имеет значения.)

* Примечание: я сказал, что ПК и SP могут указывать на «любой» адрес, но это не так. совершенно верно.Им разрешено указывать только на четные адреса, потому что инструкции и стек выровнены по 2 байта: каждая инструкция имеет длину 2, 4, 6 или 8 байтов, а каждый элемент в стеке имеет длину 2 или 4 байта. Поскольку память начинается с адреса 0, это означает, что ПК и SP никогда не должны будут указывать на нечетный адрес, поскольку все инструкции или элементы в стеке имеют адрес, кратный 2.

MSP430 имеет 27 инструкций. Для получения дополнительной информации, чем представленная здесь, ознакомьтесь со статьей MSP430 в Википедии, в ней есть отличное резюме инструкций.Дополнительную информацию можно найти в разделе 6.5 руководства пользователя.

Инструкции MSP430 сгруппированы в три категории:

  1. Инструкции перехода: эти инструкции меняют, какая инструкция будет выполняться следующей, точно так же, как «JZ» из нашего вымышленного микроконтроллера.

  2. Команды с двумя операндами: эти инструкции выполняют некоторые операции с двумя операндами, как «ADD» в нашем вымышленном микроконтроллере.

  3. Инструкции с одним операндом: эти команды выполняют некоторые операции с одним операндом.В нашем вымышленном микроконтроллере не было таких инструкций. Одним из примеров, который есть в MSP430, является инструкция RRC, которая принимает единственный входной операнд и поворачивает его на один бит вправо.

Эти три категории могут показаться немного произвольными и нечеткими, особенно потому, что инструкции перехода могут иметь один или два операнда, что может заставить вас задуматься, почему инструкции перехода не сгруппированы с инструкциями с одним или двумя операндами. Я объясню это позже, а пока посмотрим, сможете ли вы понять, почему инструкции сгруппированы так, как они взяты из руководства пользователя MSP430 или статьи в Википедии.

На следующей неделе мы начнем использовать комплекты для разработчиков!

А пока загрузите «Руководство пользователя семейств MSP430x5xx и MSP430x6xx».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *