top of page

MSP430

 

История создания

 

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

 

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

 

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

 

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

 

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

 

Система команд

 

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

 

Процессор содержит 16 16-разрядных ортогональных регистров. Регистр R0 используется как программный счетчик (англ. Program Counter - PC), регистр R1 как указатель стека (англ. Stack Pointer - SP), регистр R2 как регистр статуса (англ. Status Register - SR), а R3 как специальный регистр именуемыйгенератор констант (англ. Constant Generator - CG), R2 также может использоваться в качестве генератора констант. Генератор констант используется для сокращения общей длины команды вследствие неявного представления константы в коде операции. Регистры с R4 по R15 используются как регистры общего назначения.

 

Набор инструкций очень простой и представлен 27 инструкциями, 24 эмулированными инструкциями. Инструкции имеют как 8-битную (байт), так и 16-битную (слово) форму обработки операндов. Бит B/W управляет этим признаком.

 

1514131211109876543210Команда

000100opcodeB/WAsregisterОднооперандные команды

000100000B/WAsregisterRRC Вращение вправо через перенос

0001000010AsregisterSWPB Обмен байтов

000100010B/WAsregisterRRA Вращение вправо арифметическое

0001000110AsregisterSXT Расширение знака байта до слова

000100100B/WAsregisterPUSH Опустить операнд в стек

0001001010AsregisterCALL Вызов подпрограммы; сохранить PC в стеке и загрузить PC новым значением

0001001100000000RETI Возврат из прерывания; Извлечь SR и PC из стека

001условие10-бит знаковое смещениеУсловный переход; PC = PC + 2×offset

00100010-бит знаковое смещениеJNE/JNZ Переход если не_равно/не_ноль

00100110-бит знаковое смещениеJEQ/JZ Переход если равно/ноль

00101010-бит знаковое смещениеJNC/JLO Переход если не_перенос/ниже (беззнаковое сравнение)

00101110-бит знаковое смещениеJC/JHS Переход если перенос/выше или то же (беззнаковое сравнение)

00110010-бит знаковое смещениеJN Переход если отрицательный

00110110-бит знаковое смещениеJGE Переход если больше_или_равно

00111010-бит знаковое смещениеJL Переход если меньше

00111110-бит знаковое смещениеJMP Переход (непосредственный)

opcodesourceAdB/WAsdestinationДвух операндная арифметика

0100sourceAdB/WAsdestinationMOV Переслать источник в приёмник

0101sourceAdB/WAsdestinationADD Прибавить источник к приёмнику

0110sourceAdB/WAsdestinationADDC Прибавить источник_и_перенос к приёмнику

0111sourceAdB/WAsdestinationSUBC Вычесть источник из приёмника (с переносом)

1000sourceAdB/WAsdestinationSUB Вычесть источник из приёмника

1001sourceAdB/WAsdestinationCMP Сравнить (операцией вычитания) источник с приёмником

1010sourceAdB/WAsdestinationDADD Decimal Десятичное сложение источника и приёмника (с переносом)

1011sourceAdB/WAsdestinationBIT Проверка битов (операцией AND) источника и приёмника

1100sourceAdB/WAsdestinationBIC Битовая очистка (dest &= ~src)

1101sourceAdB/WAsdestinationBIS Битовая установка (logical OR)

1110sourceAdB/WAsdestinationXOR Исключающее или источника с приёмником

1111sourceAdB/WAsdestinationAND Логический AND источника с приёмником (dest &= src)

 

Все инструкции 16-битные. 4 способа адресации операнда, определены в 2 битах как As поле.

 

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

 

MSP430 Режим адресации

 

00nRnРегистровый. Операнд — содержимое одного из регистров из Rn.

01nx(Rn)Индексный. Операнд находится в памяти по адресу Rn+x.

X-слово находится после текущей команды.

10n@RnКосвенный регистровый. Операнд находится в памяти по адресу, который содержится в регистре Rn.

11n@Rn+Косвенный регистровый с автоинкрементом. В зависимости от значения разряда B/W значение регистра Rn увеличивается после выполнения операции на 1 или 2.

Режимы адресации при использовании R0 (PC)

010 (PC)LABELОтносительный(символьный). x(PC) Операнд в памяти по адресу PC+x.

110 (PC)#xНепосредственный. @PC+ Адрес операнда из х-слова находящегося после текущей команды.

Использование R2 (SR) и R3 (CG), специальный способ декодирования

012 (SR)&LABELАбсолютный. Операнд в памяти по адресу взятому из x.

102 (SR)#4Константа 4.

112 (SR)#8Константа 8.

003 (CG)#0Константа 0.

013 (CG)#1Константа 1. при байтовых операциях.

103 (CG)#2Константа 2.

113 (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 ) имеются и другие возможные операции для формирования задержки выполнения программного кода

 

ХАРАКТЕРИСТИКИ

 

 

 

 

 

 

 

 

 

 

Работа с отладкой TI MSP430 LaunchPad в Simulinklink

Микроконтроллеры. 2015

bottom of page