MSP430 — семейство 16-разрядных микроконтроллеров фирмы Texas Instruments.

История создания и особенные характеристики Первый контроллер с аббревиатурой MSP430 появился в 1992 году. Texas Instruments заявил о стремлении создать микроконтроллер с системой команд, близкой к популярной в 70-х—80-х годах архитектуре PDP-11.

Ядро MSP430 16-битное. Систему команд постарались сделать максимально ортогональной с разнообразными способами адресации. Ортогональность системы команд означает, что в любой команде может использоваться любой способ адресации операнда: константа, прямой из регистра или памяти, косвенный и т. п.

В момент рождения семейства основной упор был сделан на снижение энергопотребления. Однако с тех пор экономия энергии стала идеей-фикс электронной техники, и MSP430 активно теснят на этом пьедестале другие производители со своими архитектурами.

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

Сегодня семейство MSP430 предлагает широкую гамму однокристальных микроконтроллеров с объёмом флеш-памяти от единиц до 512 килобайт и ОЗУ до 64 килобайт. Тактовые частоты ядра — до 25 МГц.

Система команд MSP430 MSP430 имеет фоннеймановскую архитектуру, с единым адресным пространством для команд и данных. Память может адресоваться как побайтово, так и пословно. Порядок хранения 16-разрядных слов — от младшего к старшему ().

Процессор содержит 16 16-разрядных ортогональных регистров. Регистр R0 используется как программный счетчик (), регистр R1 как указатель стека (), регистр R2 как регистр статуса (), а R3 как специальный регистр, именуемый «генератор констант» (), R2 также может использоваться в качестве генератора констант. Генератор констант используется для сокращения общей длины команды вследствие неявного представления константы в коде операции. Регистры с R4 по R15 используются как регистры общего назначения.

Набор инструкций очень простой и представлен 27 инструкциями, 24 эмулированными инструкциями. Инструкции имеют как 8-битную (байт), так и 16-битную (слово) форму обработки операндов. Бит B/W управляет этим признаком. +Система команд 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Команда 0 0 0 1 0 0 opcode B/W As register Однооперандные команды 0 0 0 1 0 0 0 0 0 B/W As register RRC Вращение вправо через перенос 0 0 0 1 0 0 0 0 1 0 As register SWPB Обмен байтов 0 0 0 1 0 0 0 1 0 B/W As register RRA Вращение вправо арифметическое 0 0 0 1 0 0 0 1 1 0 As register SXT Расширение знака байта до слова 0 0 0 1 0 0 1 0 0 B/W As register PUSH Опустить операнд в стек 0 0 0 1 0 0 1 0 1 0 As register CALL Вызов подпрограммы; сохранить PC в стеке и загрузить PC новым значением 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 RETI Возврат из прерывания; Извлечь SR и PC из стека 0 0 1 условие 10-бит знаковое смещение Условный переход; PC = PC + 2×offset 0 0 1 0 0 0 10-бит знаковое смещение JNE/JNZ Переход, если не_равно/не_ноль 0 0 1 0 0 1 10-бит знаковое смещение JEQ/JZ Переход, если равно/ноль 0 0 1 0 1 0 10-бит знаковое смещение JNC/JLO Переход, если не_перенос/ниже (беззнаковое сравнение) 0 0 1 0 1 1 10-бит знаковое смещение JC/JHS Переход, если перенос/выше или то же (беззнаковое сравнение) 0 0 1 1 0 0 10-бит знаковое смещение JN Переход, если отрицательный 0 0 1 1 0 1 10-бит знаковое смещение JGE Переход, если больше_или_равно 0 0 1 1 1 0 10-бит знаковое смещение JL Переход, если меньше 0 0 1 1 1 1 10-бит знаковое смещение JMP Переход (непосредственный) opcode source Ad B/W As destination Двухоперандная арифметика 0 1 0 0 source Ad B/W As destination MOV Переслать источник в приёмник 0 1 0 1 source Ad B/W As destination ADD Прибавить источник к приёмнику 0 1 1 0 source Ad B/W As destination ADDC Прибавить источник_и_перенос к приёмнику 0 1 1 1 source Ad B/W As destination SUBC Вычесть источник из приёмника (с переносом) 1 0 0 0 source Ad B/W As destination SUB Вычесть источник из приёмника 1 0 0 1 source Ad B/W As destination CMP Сравнить (операцией вычитания) источник с приёмником 1 0 1 0 source Ad B/W As destination DADD Decimal Десятичное сложение источника и приёмника (с переносом) 1 0 1 1 source Ad B/W As destination BIT Проверка битов (операцией AND) источника и приёмника 1 1 0 0 source Ad B/W As destination BIC Битовая очистка (dest &= ~src) 1 1 0 1 source Ad B/W As destination BIS Битовая установка (logical OR) 1 1 1 0 source Ad B/W As destination XOR Исключающее или источника с приёмником 1 1 1 1 source Ad B/W As destination AND Логический AND источника с приёмником (dest &= src) Все инструкции 16-битные. 4 способа адресации операнда, определены в 2 битах как As поле.

Поле As — регистровый, индексный, косвенный-регистровый, косвенно-регистровый с постдекрементом. Поле Ad определяет два способа адресации — регистровый и индексный.

+Режим адресации As Регистр Синтаксис Описание 00 n Rn Регистровый. Операнд — содержимое одного из регистров из Rn 01 n x(Rn) ||align=left| Индексный. Операнд находится в памяти по адресу Rn+x. X-слово находится после текущей команды |- | 10 || n || @Rn Косвенный регистровый. Операнд находится в памяти по адресу, который содержится в регистре Rn 11 n @Rn+ Косвенный регистровый с автоинкрементом. В зависимости от значения разряда B/W значение регистра Rn увеличивается после выполнения операции на 1 или 2 Режимы адресации при использовании R0 (PC) 01 0 (PC) LABEL Относительный(символьный). Операнд x (PC) в памяти по адресу PC+x 11 0 (PC) #x Непосредственный. @PC+ Адрес операнда из х-слова, находящегося после текущей команды Использование R2 (SR) и R3 (CG), специальный способ декодирования 01 2 (SR) &LABEL Абсолютный. Операнд в памяти по адресу, взятому из x 10 2 (SR) #4 Константа 4 11 2 (SR) #8 Константа 8 00 3 (CG) #0 Константа 0 01 3 (CG) #1 Константа 1 при байтовых операциях 10 3 (CG) #2 Константа 2 11 3 (CG) #-1 Константа −1 или 0xFFFF

Мнемоника эмулируемых команд Другие команды, поддерживаемые ассемблером MSP430, образуются из основных и именуются эмулируемыми (способ получения — в скобках). Общее число поддерживаемых ассемблером эмулируемых команд — 24: CLRZ — очистка флага Z регистра состояния процессора (PSW) (BIC #2,SR). CLRN — очистка флага N регистра состояния процессора (PSW) (BIC #4,SR). CLRC — очистка флага C регистра состояния процессора (PSW) (BIC #1,SR). SETZ — установка флага Z регистра состояния процессора (PSW) (BIS #2,SR). SETN — установка флага N регистра состояния процессора (PSW) (BIS #4,SR). SETC — установка флага C регистра состояния процессора (PSW) (BIS #1,SR). EINT — разрешение прерываний (BIC #8,SR). DINT — запрещение прерываний (BIS #8,SR). CLR dst — очистка операнда (MOV #0,dst). TST dst — проверка операнда на ноль (CMP #0,dst). INV dst — инвертирование битов операнда (XOR #-1,dst). ADC dst — прибавление переноса к операнду (ADDC #0,dst). DADC dst — десятичное сложение переноса с получателем (DADD #0,dst). SBC dst — вычитание переноса из операнда (SUBC #0,dst). INC dst — инкремент операнда (ADD #1,dst). DEC dst — декремент операнда (SUB #1,dst) INCD dst — увеличение на 2 операнда (ADD #2,dst). DECD dst — уменьшение на 2 операнда (SUB #2,dst). RLA dst — сдвиг влево операнда, флаг переноса заполняется из старшего бита, а младший бит — результата −0 (ADD dst, dst). RLC dst — сдвиг влево операнда с использованием переноса (ADDC dst, dst). RET — возврат из подпрограммы (MOV @sp+,pc). POP dst — извлечение операнд из стека (MOV @sp+,dst). BR dst — переход в программе, используя операнд (MOV dst, pc). NOP — нет операции (MOV r3,r3). Примечание: приведена форма записи команд без указания на тип операндов байт/слово. Имеются и другие возможные операции для формирования задержки выполнения программного кода.

Поддерживаемый формат команд ассемблером в мнемонике имеет указание на тип обрабатываемых данных.

Примечания

Ссылки Официальная страница MSP430 на сайте Texas Instruments Форум по микроконтроллерам MSP430 Семейство микроконтроллеров MSP430x1xx: руководство пользователя. Семейство микроконтроллеров MSP430x4xx: руководство пользователя. MSP430 примеры применения

Компиляторы и ассемблеры VisSim/ECD позволяет быстро создать прототип для контроля приложений управляется DSP от Texas Instruments. Для MSP430, VisSim нужно только 740 байт FLASH и 64 байт ЗУПВ для небольших закрытых модуляцией ширины импульса петля (PWM) системы. AQ430 Среда разработки для MSP430Fxxxx микроконтроллеров CrossWorks С-компилятор MSP430 компилятор GCC для MSP430 (Свободный C-компилятор) HI-TECH C-компилятор для MSP430 IAR С-компилятор для TI MSP430 фирмы IAR Systems Среда разработки Code::Blocks C-компилятор фирмы ImageCraft ForthInc Forth-компилятор MPE Forth-компилятор naken430asm — ассемблер, дизассемблер, симулятор для 430 серии, Windows, MacOS, Linux energia — форк arduino IDE, позволяющие программировать в стиле arduino

Эмуляторы MSPSim — написанный на Java эмулятор MSP430

Полезные ссылки Русский форум разработчиков электронной аппаратуры MSP430 Руководство пользователя Texas Instruments Embedded Processors Wiki

Категория:Микроконтроллеры Категория:Продукты Texas Instruments