MSP430 | это... Что такое MSP430? (original) (raw)

MSP430.

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

Содержание

История создания и особенные характеристики

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

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

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

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

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

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 управляет этим признаком.

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

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 определяет два способа адресации — регистровый и индексный.

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

As Регистр Синтаксис Описание
00 n R_n_ Регистровый. Операнд содержимое одного из регистров из R_n_.
01 n x(R_n_) Индексный. Операнд находится в памяти по адресу R_n_+x.X-слово находится после текущей команды.
10 n @R_n_ Косвенный регистровый. Операнд находится в памяти по адресу, который содержится в регистре R_n_.
11 n @R_n_+ Косвенный регистровый с автоинкрементом. В зависимости от значения разряда B/W значение регистра R_n_ увеличивается после выполнения операции на 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 ) имеются и другие возможные операции для формирования задержки выполнения программного кода

Примечание: приведена форма записи команд без указания на тип операндов байт/слово.

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

Компиляторы и ассемблеры

Эмуляторы

Полезные ссылки

Просмотр этого шаблона Микроконтроллеры
Архитектура 8-бит MCS-51MCS-48PICAVR • Z8 • H8 • COP8 • 68HC08 • 68HC11 16-бит MSP430 • MCS-96 • MCS-296 • PIC24 • MAXQ • Nios • 68HC12 • 68HC16 32-бит ARMMIPSAVR32PIC32 • 683XX • M32R • SuperHNios II • Am29000 • LatticeMico32 • MPC5xx • PowerQUICC • Parallax Propeller
Производители Analog DevicesAtmel • Silabs • FreescaleFujitsu • Holtek • HynixInfineonIntelMicrochip • Maxim • Parallax • NXP Semiconductors • Renesas • Texas InstrumentsToshiba • Ubicom • Zilog • Cypress
Компоненты РегистрПроцессорSRAMEEPROMФлеш-памятьКварцевый резонаторКварцевый генераторRC-генераторКорпус
Периферия ТаймерАЦПЦАПКомпараторШИМ-контроллер • СчётчикLCD • Датчик температуры • Watchdog Timer
Интерфейсы CANUARTUSBSPII²CEthernet1-Wire
ОС FreeRTOSμClinux • BeRTOS • ChibiOS/RT • eCosRTEMS • Unison • MicroC/OS-IINucleus
Программирование JTAG • C2 • ПрограмматорАссемблерПрерывание • MPLAB • AVR Studio • MCStudio