MSP430

Поделись знанием:
Перейти к: навигация, поиск

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





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

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

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

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

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

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

Система команд 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 Rn Регистровый. Операнд — содержимое одного из регистров из Rn.
01 n x(Rn) Индексный. Операнд находится в памяти по адресу 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"

Ссылки

  • [www.ti.com/msp430 Официальная страница MSP430 на сайте Texas Instruments]
  • [caxapa.ru/msp.html Форум по микроконтроллерам MSP430]
  • [www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh/index.htm Семейство микроконтроллеров MSP430x1xx: руководство пользователя.]
  • [www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh430x4xx/index.htm Семейство микроконтроллеров MSP430x4xx: руководство пользователя.]
  • [www.gaw.ru/html.cgi/txt/app/micros/msp430/index.htm MSP430 примеры применения]

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

  • [www.vissim.com/solutions/embedded_development.html VisSim/ECD] позволяет быстро создать прототип для контроля приложений управляется DSP от Texas Instruments. Для MSP430, VisSim нужно только 740 байт FLASH и 64 байт ЗУПВ для небольших закрытых модуляцией ширины импульса петля (PWM) системы.
  • [www.quadravox.com/AQ430.htm AQ430 Среда разработки для MSP430Fxxxx микроконтроллеров]
  • [www.rowley.co.uk/ CrossWorks С-компилятор MSP430]
  • [mspgcc.sourceforge.net/ компилятор GCC для MSP430 (Свободный C-компилятор)]
  • [www.htsoft.com HI-TECH C-компилятор для MSP430]
  • [www.iar.com IAR С-компилятор для TI MSP430 фирмы IAR Systems]
  • [www.shelezyakin.ru/?p=816 Среда разработки Code::Blocks]
  • [www.imagecraft.com/ C-компилятор фирмы ImageCraft]
  • [www.forth.com/embedded/swiftx-embedded-systems-15.html ForthInc Forth-компилятор]
  • [www.mpeltd.demon.co.uk/forth6.htm MPE Forth-компилятор]
  • [www.mikekohn.net/micro/naken430asm_msp430_assembler.php naken430asm — ассемблер, дизассемблер, симулятор для 430 серии, Windows, MacOS, Linux]
  • [github.com/energia/Energia/wiki/Getting-Started energia — форк arduino IDE, позволяющие программировать в стиле arduino]

Эмуляторы

  • [sourceforge.net/projects/mspsim MSPSim — написанный на Java эмулятор MSP430]

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

  • [electronix.ru/forum Русский форум разработчиков электронной аппаратуры]
  • [www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh/ MSP430 Руководство пользователя]
  • [wiki.msp430.com/index.php/Main_Page Texas Instruments Embedded Processors Wiki]
  • [www.shelezyakin.ru/?tag=msp430 Несколько интересных проектов]

Отрывок, характеризующий MSP430

– Нет, после обеда, – сказал старый граф, видимо, в этом чтении предвидевший большое удовольствие.
За обедом, за которым пили шампанское за здоровье нового Георгиевского кавалера, Шиншин рассказывал городские новости о болезни старой грузинской княгини, о том, что Метивье исчез из Москвы, и о том, что к Растопчину привели какого то немца и объявили ему, что это шампиньон (так рассказывал сам граф Растопчин), и как граф Растопчин велел шампиньона отпустить, сказав народу, что это не шампиньон, а просто старый гриб немец.
– Хватают, хватают, – сказал граф, – я графине и то говорю, чтобы поменьше говорила по французски. Теперь не время.
– А слышали? – сказал Шиншин. – Князь Голицын русского учителя взял, по русски учится – il commence a devenir dangereux de parler francais dans les rues. [становится опасным говорить по французски на улицах.]
– Ну что ж, граф Петр Кирилыч, как ополченье то собирать будут, и вам придется на коня? – сказал старый граф, обращаясь к Пьеру.
Пьер был молчалив и задумчив во все время этого обеда. Он, как бы не понимая, посмотрел на графа при этом обращении.
– Да, да, на войну, – сказал он, – нет! Какой я воин! А впрочем, все так странно, так странно! Да я и сам не понимаю. Я не знаю, я так далек от военных вкусов, но в теперешние времена никто за себя отвечать не может.
После обеда граф уселся покойно в кресло и с серьезным лицом попросил Соню, славившуюся мастерством чтения, читать.
– «Первопрестольной столице нашей Москве.
Неприятель вошел с великими силами в пределы России. Он идет разорять любезное наше отечество», – старательно читала Соня своим тоненьким голоском. Граф, закрыв глаза, слушал, порывисто вздыхая в некоторых местах.
Наташа сидела вытянувшись, испытующе и прямо глядя то на отца, то на Пьера.
Пьер чувствовал на себе ее взгляд и старался не оглядываться. Графиня неодобрительно и сердито покачивала головой против каждого торжественного выражения манифеста. Она во всех этих словах видела только то, что опасности, угрожающие ее сыну, еще не скоро прекратятся. Шиншин, сложив рот в насмешливую улыбку, очевидно приготовился насмехаться над тем, что первое представится для насмешки: над чтением Сони, над тем, что скажет граф, даже над самым воззванием, ежели не представится лучше предлога.
Прочтя об опасностях, угрожающих России, о надеждах, возлагаемых государем на Москву, и в особенности на знаменитое дворянство, Соня с дрожанием голоса, происходившим преимущественно от внимания, с которым ее слушали, прочла последние слова: «Мы не умедлим сами стать посреди народа своего в сей столице и в других государства нашего местах для совещания и руководствования всеми нашими ополчениями, как ныне преграждающими пути врагу, так и вновь устроенными на поражение оного, везде, где только появится. Да обратится погибель, в которую он мнит низринуть нас, на главу его, и освобожденная от рабства Европа да возвеличит имя России!»
– Вот это так! – вскрикнул граф, открывая мокрые глаза и несколько раз прерываясь от сопенья, как будто к носу ему подносили склянку с крепкой уксусной солью. – Только скажи государь, мы всем пожертвуем и ничего не пожалеем.
Шиншин еще не успел сказать приготовленную им шутку на патриотизм графа, как Наташа вскочила с своего места и подбежала к отцу.
– Что за прелесть, этот папа! – проговорила она, целуя его, и она опять взглянула на Пьера с тем бессознательным кокетством, которое вернулось к ней вместе с ее оживлением.
– Вот так патриотка! – сказал Шиншин.
– Совсем не патриотка, а просто… – обиженно отвечала Наташа. – Вам все смешно, а это совсем не шутка…
– Какие шутки! – повторил граф. – Только скажи он слово, мы все пойдем… Мы не немцы какие нибудь…
– А заметили вы, – сказал Пьер, – что сказало: «для совещания».
– Ну уж там для чего бы ни было…
В это время Петя, на которого никто не обращал внимания, подошел к отцу и, весь красный, ломающимся, то грубым, то тонким голосом, сказал:
– Ну теперь, папенька, я решительно скажу – и маменька тоже, как хотите, – я решительно скажу, что вы пустите меня в военную службу, потому что я не могу… вот и всё…
Графиня с ужасом подняла глаза к небу, всплеснула руками и сердито обратилась к мужу.
– Вот и договорился! – сказала она.
Но граф в ту же минуту оправился от волнения.
– Ну, ну, – сказал он. – Вот воин еще! Глупости то оставь: учиться надо.
– Это не глупости, папенька. Оболенский Федя моложе меня и тоже идет, а главное, все равно я не могу ничему учиться теперь, когда… – Петя остановился, покраснел до поту и проговорил таки: – когда отечество в опасности.
– Полно, полно, глупости…
– Да ведь вы сами сказали, что всем пожертвуем.
– Петя, я тебе говорю, замолчи, – крикнул граф, оглядываясь на жену, которая, побледнев, смотрела остановившимися глазами на меньшого сына.
– А я вам говорю. Вот и Петр Кириллович скажет…
– Я тебе говорю – вздор, еще молоко не обсохло, а в военную службу хочет! Ну, ну, я тебе говорю, – и граф, взяв с собой бумаги, вероятно, чтобы еще раз прочесть в кабинете перед отдыхом, пошел из комнаты.
– Петр Кириллович, что ж, пойдем покурить…
Пьер находился в смущении и нерешительности. Непривычно блестящие и оживленные глаза Наташи беспрестанно, больше чем ласково обращавшиеся на него, привели его в это состояние.
– Нет, я, кажется, домой поеду…
– Как домой, да вы вечер у нас хотели… И то редко стали бывать. А эта моя… – сказал добродушно граф, указывая на Наташу, – только при вас и весела…
– Да, я забыл… Мне непременно надо домой… Дела… – поспешно сказал Пьер.
– Ну так до свидания, – сказал граф, совсем уходя из комнаты.
– Отчего вы уезжаете? Отчего вы расстроены? Отчего?.. – спросила Пьера Наташа, вызывающе глядя ему в глаза.
«Оттого, что я тебя люблю! – хотел он сказать, но он не сказал этого, до слез покраснел и опустил глаза.
– Оттого, что мне лучше реже бывать у вас… Оттого… нет, просто у меня дела.
– Отчего? нет, скажите, – решительно начала было Наташа и вдруг замолчала. Они оба испуганно и смущенно смотрели друг на друга. Он попытался усмехнуться, но не мог: улыбка его выразила страдание, и он молча поцеловал ее руку и вышел.
Пьер решил сам с собою не бывать больше у Ростовых.


Петя, после полученного им решительного отказа, ушел в свою комнату и там, запершись от всех, горько плакал. Все сделали, как будто ничего не заметили, когда он к чаю пришел молчаливый и мрачный, с заплаканными глазами.
На другой день приехал государь. Несколько человек дворовых Ростовых отпросились пойти поглядеть царя. В это утро Петя долго одевался, причесывался и устроивал воротнички так, как у больших. Он хмурился перед зеркалом, делал жесты, пожимал плечами и, наконец, никому не сказавши, надел фуражку и вышел из дома с заднего крыльца, стараясь не быть замеченным. Петя решился идти прямо к тому месту, где был государь, и прямо объяснить какому нибудь камергеру (Пете казалось, что государя всегда окружают камергеры), что он, граф Ростов, несмотря на свою молодость, желает служить отечеству, что молодость не может быть препятствием для преданности и что он готов… Петя, в то время как он собирался, приготовил много прекрасных слов, которые он скажет камергеру.
Петя рассчитывал на успех своего представления государю именно потому, что он ребенок (Петя думал даже, как все удивятся его молодости), а вместе с тем в устройстве своих воротничков, в прическе и в степенной медлительной походке он хотел представить из себя старого человека. Но чем дальше он шел, чем больше он развлекался все прибывающим и прибывающим у Кремля народом, тем больше он забывал соблюдение степенности и медлительности, свойственных взрослым людям. Подходя к Кремлю, он уже стал заботиться о том, чтобы его не затолкали, и решительно, с угрожающим видом выставил по бокам локти. Но в Троицких воротах, несмотря на всю его решительность, люди, которые, вероятно, не знали, с какой патриотической целью он шел в Кремль, так прижали его к стене, что он должен был покориться и остановиться, пока в ворота с гудящим под сводами звуком проезжали экипажи. Около Пети стояла баба с лакеем, два купца и отставной солдат. Постояв несколько времени в воротах, Петя, не дождавшись того, чтобы все экипажи проехали, прежде других хотел тронуться дальше и начал решительно работать локтями; но баба, стоявшая против него, на которую он первую направил свои локти, сердито крикнула на него:
– Что, барчук, толкаешься, видишь – все стоят. Что ж лезть то!
– Так и все полезут, – сказал лакей и, тоже начав работать локтями, затискал Петю в вонючий угол ворот.
Петя отер руками пот, покрывавший его лицо, и поправил размочившиеся от пота воротнички, которые он так хорошо, как у больших, устроил дома.
Петя чувствовал, что он имеет непрезентабельный вид, и боялся, что ежели таким он представится камергерам, то его не допустят до государя. Но оправиться и перейти в другое место не было никакой возможности от тесноты. Один из проезжавших генералов был знакомый Ростовых. Петя хотел просить его помощи, но счел, что это было бы противно мужеству. Когда все экипажи проехали, толпа хлынула и вынесла и Петю на площадь, которая была вся занята народом. Не только по площади, но на откосах, на крышах, везде был народ. Только что Петя очутился на площади, он явственно услыхал наполнявшие весь Кремль звуки колоколов и радостного народного говора.
Одно время на площади было просторнее, но вдруг все головы открылись, все бросилось еще куда то вперед. Петю сдавили так, что он не мог дышать, и все закричало: «Ура! урра! ура!Петя поднимался на цыпочки, толкался, щипался, но ничего не мог видеть, кроме народа вокруг себя.
На всех лицах было одно общее выражение умиления и восторга. Одна купчиха, стоявшая подле Пети, рыдала, и слезы текли у нее из глаз.
– Отец, ангел, батюшка! – приговаривала она, отирая пальцем слезы.
– Ура! – кричали со всех сторон. С минуту толпа простояла на одном месте; но потом опять бросилась вперед.
Петя, сам себя не помня, стиснув зубы и зверски выкатив глаза, бросился вперед, работая локтями и крича «ура!», как будто он готов был и себя и всех убить в эту минуту, но с боков его лезли точно такие же зверские лица с такими же криками «ура!».