background image

 

 

MSP430X

background image

 

 

Godziny kontaktowe:

  

wt. 13 - 15

śr.  11 - 13

slau056g.pdf

slac050q.zip

background image

 

 

   MSP430X zawiera elementy specjalnie przeznaczone do nowoczesnych 

technik programowania takich jak wyliczane rozkazy skoków i rozgałęzień, 

przetwarzanie tablicowe. Jest przystosowany do wykorzystania języków 

wysokiego poziomu takich jak C.

   MSP430X może bezpośrednio adresować do 1 MB pamięci bez 

stronicowania. W porównaniu do MSP430 – MSP430X ma kilka przerwań o 

mniejszej liczbie cykli, program może być większy objętościowo. MSP430X 

jest w pełni kompatybilny z poprzednimi mikrokontrolerami. 

background image

 

 

Właściwości CPU mikrokontrolerów MSP430X:

      - architektura RISC

      - architektura ortogonalna

      - pełny dostęp do rejestrów w tym do licznika rozkazów (PC), rejestru 

statusowego (SR)              

i rejestru stosu  (SP)

      - jednocyklowe operacje na rejestrach

      - duża liczba rejestrów zmniejszająca liczbę odwołań do pamięci

      - 20-bitowa magistrala adresowa umożliwiająca bezpośredni dostęp do 

całego obszaru pamięci bez stronicowania.

      - 16-bitowa magistrala danych pozwalająca na bezpośrednie 

operowanie na argumentach  typu słowo.

      - generator 6 najczęściej używanych stałych 

      - bezpośrednie przesyłanie danych pomiędzy pamięcią bez używania 

rejestrów 

pośredniczących. 

      - adresowanie bajtu, słowa, i 20 bitowego słowa adresowego.

background image

 

 

background image

 

 

background image

 

 

   Wektory przerwań zawierają 16-bitowe adresy wskazujące na niższą 64 
KB pamięć. Oznacza to, że wszystkie programy obsługi przerwań muszą 
się zaczynać w tym obszarze pamięci.
   Podczas przerwań licznik rozkazów i rejestr statusowy są chowane na 
stos tak jak na poniższym rysunku:

   Gdy jest wykonywana instrukcja RETI odtwarzana jest pełna 20 
bitowa zawartość licznika rozkazów. Umożliwia to powrót do 
dowolnego miejsca w obszarze pamięci programu. 

background image

 

 

Licznik programu

PC może być adresowany każdą instrukcją i każdym trybem 
adresowania:
     MOV.W #LABEL,PC ;  

skok do etykiety LABEL (dolny obszar 

pamięci 64 KB)
     MOVA #LABEL,PC ; 

skok do etykiety LABEL (pamięć 1MB)

     MOV.W LABEL,PC ;  skok do adresu wskazanego w słowie LABEL ; 
(64 KB)
     MOV.W @R14,PC ;  skok pośredni do adresu w R14 (dolny obszar 
pamięci 64 KB)
     ADDA #4,PC ; 

przesunięcie o 2 słowa (1 MB memory)

Instrukcje BR i CALL zerują 4 najbardziej znaczące bity licznika 
rozkazów. Stąd odnoszą się one tylko do dolnych 64 KB pamięci. Do 
górnej części pamięci należy używać tylko rozkazów BRA i CALLA. 
Rozkaz CALL chowa na stos 16 bitów PC, A rozkaz CALLA pełne 20 
bitów

Rozkaz RET odtwarza 16 bitów, rozkaz RETA – 20 bitów

background image

 

 

Rejestr stosu (SP)
Rejestr stosu jest 20 bitowym rejestrem używanym do przechowywania 
adresów powrotu z podprogramów lub programów obsługi przerwań. 
Rejestr stosu można stosować wszystkie instrukcje i sposoby 
adresowania.

PUSHX.A

background image

 

 

Rejestr Statusowy (SR)

background image

 

 

CLR dst

>  MOV R3,dst

INC dst   >  ADD 0(R3),dst

background image

 

 

Rejestry ogólnego przeznaczenia  R4 to R15

Operacje 8 
bitowe

background image

 

 

Operacje 16 
bitowe

background image

 

 

20 bitowe operacje 
adresowe 

background image

 

 

MSP430 i MSP430X instrukcje

     Instrukcje MSP430 są to instrukcje w liczbie 27 zaimplementowane w 

jednostce centralnej MSP430. Instrukcje te mogą być używane w całym 
zakresie 1 MB pamięci z wyjątkiem przypadków, gdy wymagany jest 
zakres większy niż 16 bitów. 

     Instrukcje MSP430X są używane gdy adresowanie operandów lub 

dane przekraczają zakres 16 bitowy. 

     Istnieją trzy możliwości wyboru między instrukcjami MSP430 a 

MSP430X:

1. Używanie tylko instrukcji MSP430 z wyjątkiem CALLA i RETA. Może 

być to realizowane przy spełnieniu poniższych reguł 

       - umieszczanie wszystkich danych, tablic itd. W dolnych 64 KB. 

Wykorzystuje się wtedy tylko instrukcje MSP z 16 bitowym 
adresowaniem danych.

       - umieszczanie danych stałych podprogramów bezpośrednio za 

podprogramem. Umożliwia to użycie adresowania symbolicznego z 16 
bitowym indeksem do adresowania w zakresie +/- 32 KB.

2. Użycie tylko instrukcji MSP430X. Niedogodnościa tego sposobu jest 

zmniejszenie prędkości działania programu związane z dodatkowymi 
cyklami i zwiększenie objętości programu spowodowane koniecznością 
rozszerzenia niektórych instrukcji o dodatkowe słowo.

3. Optymalne użycie obydwu typów instrukcji.

background image

 

 

ADDX.A 

dodawanie dwóch adresów 20 bitowych

ADDX[.W] 

dodawanie dwóch słów 

ADDX.B 

dodawanie dwóch bitów

Syntax ADDX.A src,dst

ADDX src,dst   ADDX.W src,dst

ADDX.B src,dst

background image

 

 

// RAM memory.
//
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=1100-
20FF
-Z(DATA)CSTACK+_STACK_SIZE#
// ---------------------------------------------------------
// Read only memory.
//
//  Information memory (FLASH)
// -------------------------------------------------------------------
-Z(CODE)INFO=1000-10FF
-Z(CODE)INFOA=1080-10FF
-Z(CODE)INFOB=1000-107F
// -----------------------------------------------
// Constant data.
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT=2100-FFBE
// -----------------------------------------------
// Code.
-Z(CODE)CSTART,ISR_CODE,IVCODE=2100-FFBE
-P(CODE)CODE=2100-FFBE,10000-1FFFF
// -----------------------------------------------
// Interrupt vector.
-Z(CODE)INTVEC=FFC0-FFFF
-Z(CODE)RESET=FFFE-FFFF

background image

 

 

   Kompilator C lokuje programy obsługi przerwań w segmencie 
ISR_CODE. Segment ten musi być utworzony w obszarze pamięci 
poniżej 64 KB poprzez odpowiednią deklarację w pliku sterującym 
linker. Jeżeli przerwanie wystąpi gdy program jest realizowany w 
pamięci powyżej 64 KB to funkcja obsługi przerwania powinna zawierać 
polecenie

--save_reg20

Odpowiednie polecenie w asemblerze ma postać

__save_reg20


Document Outline