MSP430

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 2. července 2015; kontroly vyžadují 12 úprav .

MSP430  je rodina 16bitových mikrokontrolérů od Texas Instruments .

Historie tvorby a speciální charakteristiky

První kontrolér se zkratkou MSP430 se objevil v roce 1992 [1] . TI oznámila své přání vytvořit mikrokontrolér s instrukčním systémem blízkým architektuře PDP-11 populární v 70. a 80. letech .

Jádro MSP430 je 16bitové. Snažili se udělat příkazový systém co nejvíce ortogonální s různými způsoby adresování. Ortogonalita instrukčního systému znamená, že v jakékoli instrukci lze použít jakoukoli metodu adresování operandu: konstantu, přímou z registru nebo paměti, nepřímou atd.

V době zrodu rodiny byl hlavní důraz kladen na snižování spotřeby energie. Od té doby se však úspora energie stala v elektronické technologii pevnou myšlenkou a MSP430 je na tomto piedestalu aktivně vytlačován jinými výrobci s vlastní architekturou.

Klíčovým rozdílem a „vizitkou“ rodiny MSP430 je schopnost taktovat libovolný periferní modul asynchronně od jádra. U naprosté většiny jednočipových mikrokontrolérů je periferie synchronní s jádrem (s výjimkou některých speciálních uzlů). Tato funkce umožňuje flexibilně řídit rychlost (a tedy spotřebu) každého modulu. Kromě toho je modul rozhraní USB také jedinečný: má samostatnou doménu napájení, což zjednodušuje vývoj bateriově napájených zařízení s rozhraním USB.

Rodina MSP430 dnes nabízí širokou škálu jednočipových mikrokontrolérů s flash pamětí od jednotek až do 512 kilobajtů a RAM až do 64 kilobajtů. Takt jádra až 25 MHz.

MSP430 Command System

MSP430 má Von Neumannovu architekturu s jediným adresním prostorem pro příkazy a data. Paměť může být adresována jak byte po byte, tak slovo po slovu. Pořadí uložení 16bitových slov je od nejmladšího po nejstarší ( anglicky  little-endian ).

Procesor obsahuje 16 16bitových ortogonálních registrů. Registr R0 se používá jako programový čítač ( Program Counter - PC ), registr R1 jako ukazatel zásobníku ( anglicky Stack  Pointer - SP ), registr R2 jako stavový registr ( Status Register - SR ) a R3 jako speciální registru s názvem generátor konstant ( ang. Constant Generator - CG ), R2 lze použít i jako generátor konstant. Generátor konstant se používá ke zkrácení celkové délky instrukce v důsledku implicitní reprezentace konstanty v operačním kódu. Registry R4 až R15 se používají jako registry pro všeobecné použití.    

Sada instrukcí je velmi jednoduchá a je reprezentována 27 instrukcemi, 24 emulovanými instrukcemi. Instrukce mají 8bitové (bajtové) i 16bitové (slovo) formy zpracování operandů. B/W bit ovládá tuto funkci.

Příkazový systém MSP430
patnáct čtrnáct 13 12 jedenáct deset 9 osm 7 6 5 čtyři 3 2 jeden 0 tým
0 0 0 jeden 0 0 operační kód B/W Tak jako Registrovat Jednooperandové instrukce
0 0 0 jeden 0 0 0 0 0 B/W Tak jako Registrovat RRC Otočte doprava při přenášení
0 0 0 jeden 0 0 0 0 jeden 0 Tak jako Registrovat Výměna bajtů SWPB
0 0 0 jeden 0 0 0 jeden 0 B/W Tak jako Registrovat RRA Aritmetika rotace vpravo
0 0 0 jeden 0 0 0 jeden jeden 0 Tak jako Registrovat SXT Znamení rozšíření bajtu na slovo
0 0 0 jeden 0 0 jeden 0 0 B/W Tak jako Registrovat PUSH Push operand do zásobníku
0 0 0 jeden 0 0 jeden 0 jeden 0 Tak jako Registrovat CALL Volání podprogramu; uložte PC do zásobníku a načtěte PC s novou hodnotou
0 0 0 jeden 0 0 jeden jeden 0 0 0 0 0 0 0 0 RETI Návrat z přerušení; Pop SR a PC ze zásobníku
0 0 jeden stav 10bitový posun znaménka Podmíněná větev; PC=PC+2×offset
0 0 jeden 0 0 0 10bitový posun znaménka JNE / JNZ Skok, pokud není_rovný/není_nula
0 0 jeden 0 0 jeden 10bitový posun znaménka JEQ / JZ Skok, pokud je rovno/nula
0 0 jeden 0 jeden 0 10bitový posun znaménka JNC / JLO Jump if not_carry/below (nepodepsané porovnání)
0 0 jeden 0 jeden jeden 10bitový posun znaménka JC / JHS Skok, pokud je přenášen/vyšší nebo stejný (nepodepsané srovnání)
0 0 jeden jeden 0 0 10bitový posun znaménka JN Skok, pokud je záporný
0 0 jeden jeden 0 jeden 10bitový posun znaménka JGE Skok, pokud je větší_nebo_rovno
0 0 jeden jeden jeden 0 10bitový posun znaménka JL Skočit, pokud méně
0 0 jeden jeden jeden jeden 10bitový posun znaménka JMP Jump (okamžité)
operační kód zdroj Inzerát B/W Tak jako destinace Aritmetika dvou operandů
0 jeden 0 0 zdroj Inzerát B/W Tak jako destinace MOV Odeslat zdroj do cíle
0 jeden 0 jeden zdroj Inzerát B/W Tak jako destinace ADD Přidat zdroj do cíle
0 jeden jeden 0 zdroj Inzerát B/W Tak jako destinace ADDC Přidat source_and_transfer do cíle
0 jeden jeden jeden zdroj Inzerát B/W Tak jako destinace SUBC Odečíst zdroj od cíle (s přenosem)
jeden 0 0 0 zdroj Inzerát B/W Tak jako destinace SUB Odečíst zdroj od cíle
jeden 0 0 jeden zdroj Inzerát B/W Tak jako destinace CMP Porovnat (odečíst) zdroj s cílem
jeden 0 jeden 0 zdroj Inzerát B/W Tak jako destinace DADD Desetinné desetinné přidání zdroje a cíle (s přenosem)
jeden 0 jeden jeden zdroj Inzerát B/W Tak jako destinace BIT Bitová kontrola (operace AND) zdroje a cíle
jeden jeden 0 0 zdroj Inzerát B/W Tak jako destinace BIC Bit flush (cíl &= ~src)
jeden jeden 0 jeden zdroj Inzerát B/W Tak jako destinace Nastavení bitu BIS (logické OR)
jeden jeden jeden 0 zdroj Inzerát B/W Tak jako destinace XOR Exclusive nebo source-destination
jeden jeden jeden jeden zdroj Inzerát B/W Tak jako destinace AND Logický AND zdroj s cílem (cíl &= src)

Všechny instrukce jsou 16bitové. 4 metody adresování operandů, definované ve 2 bitech jako pole As.

Pole jako – Registrováno, indexováno, nepřímo registrováno, nepřímo registrováno s následným snížením. Pole Ad definuje dva způsoby adresování – registr a index.

MSP430 Režim adresování
Tak jako Registrovat Syntax Popis
00 n R n Registrovat. Operand je obsah jednoho z registrů z R n .
01 n x (R n ) index. Operand je v paměti na adrese R n + x .

X-word je za aktuálním příkazem.

deset n @Rn _ Nepřímý registr. Operand je umístěn v paměti na adrese obsažené v registru Rn .
jedenáct n @Rn + _ Nepřímý registr s autoinkrementací. V závislosti na hodnotě bitu B/W se hodnota registru Rn po dokončení operace zvýší o 1 nebo 2.
Režimy adresování při použití R0 (PC)
01 0 (PC) OZNAČENÍ Příbuzný (znak). x(PC) Paměťový operand na PC+ x .
jedenáct 0 (PC) # x Přímo. @PC+ Adresa x-word operandu po aktuální instrukci.
Použití R2 (SR) a R3 (CG), speciální způsob dekódování
01 2 (SR) & štítek Absolutní. Operand v paměti na adrese převzaté z x .
deset 2 (SR) #čtyři Konstantní 4.
jedenáct 2 (SR) #osm Konstantní 8.
00 3 (CG) #0 Konstantní 0.
01 3 (CG) #jeden Konstanta 1. pro bajtové operace.
deset 3 (CG) #2 Konstantní 2.
jedenáct 3 (CG) #-jeden Konstanta −1 nebo 0xFFFF.

Mnemotechnické prostředky pro emulované příkazy

Další instrukce podporované assemblerem MSP430 jsou tvořeny z hlavních a nazývají se emulované (způsob získání je v závorkách). Celkový počet emulovaných instrukcí podporovaných assemblerem je 24.

CLRZ - Vymazání registru stavu procesoru (PSW) Příznak Z ( BIC #2,SR ) CLRN - Vymazání registru stavu procesoru (PSW) Příznak N ( BIC #4,SR ) CLRC - Vymazání registru stavu procesoru (PSW) Příznak C ( BIC # 1,SR) SETZ - Nastavení příznaku Z registru stavu procesoru (PSW) ( BIS #2,SR ) SETN - Nastavení příznaku N registru stavu procesoru (PSW) ( BIS #4,SR ) SETC - Nastavení příznaku C Registr stavu procesoru (PSW) (BIS #1,SR) EINT - povolení přerušení ( BIC #8,SR ) DINT - zakázání přerušení ( BIS #8,SR ) CLR dst - Vymazat operand ( MOV #0,dst ) TST dst - Kontrola operandu na nulu ( CMP #0,dst ) INV dst - Invertovat bity operandu ( XOR #-1,dst ) ADC dst - přidání přenosu k operandu ( ADDC #0,dst ) DADC dst - přidání desetinného přenosu k cíli ( DADD #0,dst ) SBC dst - odečtení přenosu od operandu ( SUBC #0,dst) INC dst - zvýšení operandu ( ADD #1,dst ) DEC dst - snížení operandu ( SUB #1,dst ) INCD dst - zvýšení o 2 operandy ( ADD #2,dst ) DECD dst - snížení o 2 operandy ( SUB #2, dst) RLA dst - levý posun operandu, příznak přenosu je vyplněn z horního bitu a dolní bit výsledku je -0 ( ADD dst,dst ) RLC dst - levý posun operandu pomocí carry ( ADDC dst,dst ) RET - návrat z podprogramu ( MOV @sp+,pc ) POP dst - pop operand ze zásobníku ( MOV @sp+,dst ) BR dst - skok programu pomocí operandu ( MOV dst,pc) NOP - žádná operace ( MOV r3,r3 ) existují další možné operace pro generování zpoždění provádění programového kódu

Poznámka: forma zápisu příkazů je dána bez uvedení typu operandů bajt/slovo.

Podporovaný formát příkazů assemblerem v mnemotechnické pomůcce má označení typu zpracovávaných dat.

Poznámky

  1. OD STEPHEN EVANCZUK.  Nejoblíbenější MCU vůbec  ? . https://www.edn.com/ (20. srpna 2013). Získáno 15. ledna 2021. Archivováno z originálu dne 9. června 2021.

Odkazy

Kompilátory a assemblery

Emulátory

Užitečné odkazy