450 likes | 654 Views
NRS. NAMENSKI RAČUNARSKI SISTEMI PART 1. Autor : Nenad Jovičić. Osobine MSP430 familije. Familija mikrokontrolera optimizovana za aplikacije sa baterijskim napajanjem Veliki broj integrisanih periferija (tajmeri, komparatori, AD i DA konvertori, UART…)
E N D
NRS NAMENSKI RAČUNARSKI SISTEMI PART 1 Autor: NenadJovičić
Osobine MSP430 familije • Familija mikrokontrolera optimizovana za aplikacije sa baterijskim napajanjem • Veliki broj integrisanih periferija (tajmeri, komparatori, AD i DA konvertori, UART…) • 16-bitno procesorsko jezgro sa RISC arhitekturom • Podrška za JTAG
MSP430x Familija MSP430 se deli na nekoliko podfamilija: MSP430x4x, MSP430x3x... Mi radimo sa mikrokontrolerom MSP430F449. Dokumentacija o podfamiliji MSP430x4x se nalazi na adresi: http://tnt.etf.rs/~oe4irs/slau056e-msp430F4xx.pdf Dokumentacija o konkretnom mikrokontroleru MSP430F449 se nalazi na adresi: http://tnt.etf.rs/~oe4irs/msp430F449.pdf
Memorija • Adresniprostor je jedinstvenza program, podatkeiperiferije, injemu se pristupaprekozajedničkihadresnihilinijapodataka (MAB i MDB) • Veličinacelokupnogadresnogprostora je 64Kb • von Neumann-ova arhitektura
MSP430F44x-Memorija Mi radimo na MSP430F449 !
CPU Osnovne karakteristike: • RISC arhitektura sa 27 instrukcija i sedam načina adresiranja • 16-bitna adresna i magistrala podataka • Registar fajl sa 16 16-bitnih registara direktno povezanih na ALU • Izvršavanje instrukcija koje se obraćaju registrima u jednom ciklusu • Sve instrukcije mogu da adresiraju kako reči tako i bajtove • Direktan transfer podataka iz jednog u drugi deo memorije bez upotrebe registara
CPU PC – programski brojač SP – pokazivač steka SR – statusni registar Registri opšte namene
PC (R0) - programski brojač • 16-bitni registar mapiran u registar fajlu • Može mu se pristupati direktno kao i svakom drugom od 15 registara • Najniži bit je uvek nula jer se instrukcije sastoje od 2, 4 ili 6 bajtova
SP (R1) – pokazivač steka • Kao i svi registri u registar fajlu direktno je dostupan svim instrukcijama • Kao i programski brojač ukazuje samo na parne adrese (najniži bit je uvek nula) • Ukazuje na poslednju zauzetu lokaciju • Stek raste od viših prema nižim lokacijama
SR (R2) – statusni registar • 16-bitni registar u kome su mapirani flegovi za aritmetičke operacije (Z,N,V,C), fleg za globalnu dozvolu maskirajućih prekida (GIE) i flegovi koji određuju low-power modove rada
R4-R15 registri opšte namene • Ovim registrima se može pristupati na sve načine i mogu se koristiti u svim modovima adresiranja • Svaki registar može da sadrži podatak, adresu podatka u memoriji, ili index pri indirektnom adresiranju. • Svakom registru se može pristupati kao celoj reči ili bajtu
Modovi adresiranja • Postoji sedam načina adresiranja za izvorni (sors) operand i četiri načina za odredišni (destination) operand
MOV instrukcija Instrukcija koja pomera podatak iz jednog u drugi deo memorije. Na primeru MOV instrukcije lepo se ilustruju različiti načini adresiranja.
Registarsko adresiranje Kod registarskog adresiranja operand se nalazi u nekom do 16 registara
Indeksnoadresiranje • Kodindeksnogadresiranja operand se nalazi u memorijinaadresikoja se dobijakaozbirvrednostiizregistraiodgovarajućegindeksa
Simboličko adresiranje • Simboličko adresiranje je adresiranje preko simboličkih oznaka za operande. • U osnovi je slično indeksnom adresiranju pri čemu se kao registar koji sadrži baznu adresu koristi programski brojač a indeksi se računaju za vreme asemblerskog prevođenja – to je adresiranje sa relativnim pomacima u odnosu na programski brojač
Indirektno registarsko adresiranje • Adresaizvornog (source) operanda se nalazi u nekomodregistara. • Slično je indeksnomadresiranjuza index 0
Set instrukcija • Instrukcijski set obuhvata 27 osnovnih i 24 emulirane instrukcija • Instrukcije mogu imati jedan ili dva operanda a mogu biti i bez operanada
MSP430x4x takt generator • Unutarmikrokontroleranaraspolaganjusu 3 taktnasignala: • MCLK – taktzaprocesor • SMCLK – taktzaperiferije (nijeprisutankod MSP430x3x) • ACLK – pomoćnitaktzaperiferije • LFXT1 oscilatorkojimožedaradisasporimibrzimkristalom, saintegrisanimpromenljivimkondezatorima • Interni RC oscilatorkoji u sklopusa DCO modulatoromčiniizvortaktačija se učestanost u tokuradamožemenjati u širokomopseguisavelikomrezolucijom • FLL (frequency locked loop) kojislužizastabilizacijuučestanosti DCO oscilatorapreciznomučestanošću LF oscilatora • Opcionidodatni XT2 high speed oscilator (MSP430x43x i MSP430x44x)
Sistemski reset i inicijalizacija • POR – power-on reset signal se aktivira: • pridovođenjunapajanja • priaktivnomsignaluna NMI/RESET pinukad je u reset modu • prisignaluodinternogsupervizoranapajanja • PUC – power-up clear signal se aktivira: • pripojavi POR signala • poistekuvremena watchdog tajmera • prinedozvoljenompristupu watchdog tajmeru • prinedozvoljenompristupu flash memoriji
Inicijalna stanja po reset-u (POR) • Svipinovisukonfigurisanikaoulazni • Programskibrojač (PC) je napunjenadresomsadržanom u reset vektorunaadresi 0xFFFE • Statusniregistar SR je resetovan • Watchdog tajmer je u watchdog modu • Sveperiferijesuinicijalizovanenakarakterističnevrednostiodređenezasvakuperiferijuposebno Neophodnainicijalizacijasoftvera Konfigurisati watchdog tajmer shodno korisničkoj aplikaciji Inicijalizovati pokazivač steka (SP) Inicijalizovati sve periferije koje se koriste Inicijalizovati portove kao ulazne i izlazne
Prekidi • Pored sistemskog reseta postoje još dve vrste prekida • NMI prekid ( (non)maskable interrupt) • Maskirajući prekidi (maskable interrupts) • NMI prekid nastaje u sledećim slučajevima: • Aktivan nivo na NMI/RST pinu (pin konfigurisan za NMI prekid) • Signal greške oscilatora • Signal greške u pristupu flash memoriji (pristup u toku izvršavanja ranije iniciranog brisanja ili upisa)
NMI prekid • NMI prekid je uslovno nemaskirajući jer se ne maskira GIE bitom u SR, ali se svaki od tri posebna izvora prekida može maskirati • Prekidni vektor za NMI je na adresi 0xFFFC • Unutar prekidne rutine se poliranjem odgovarajućih flag-bitova može utvrditi koji od tri događaja je izazvao prekid
Maskirajući prekidi • Postoji do 14 različitih maskirajućih prekida koji se u zavisnosti od konkretne izvedbe mikrokontrolera dodeljuju različitim periferijama • Prekidi se prioritiraju pri čemi je NMI najvišeg prioriteta • Prioriteti maskirajućih prekida su određeni ulačavanjem
Prihvatanje zahteva za prekid • PC i SR se prebacujunastek • Zabranjuju se svimaskirajućiprekidi • U SR se pored aritmetičkihbrišuiflegovikojioznačavaju low-power modovetakoda se prekiduvekizvršava u high-power modu • PC se puninavrednostiz IVT
Povratak iz prekidne rutine • Povratak se izvršavainstrukcijom RETI • Sa steka se restauriraju PC i SR takoda se izvršenjeprogramanastavljagde je prekinuto • Sistem se automatskivraća u power mod pre prihvatanjazahtevazaprekid, jer se flegovikoji to određujunalaze u SR
WDT • Može da radi kao klasičan WDT ili kao tajmer koji generiše periodične prekide • U slučaju da se koristi u WDT modu zaziva PUC prekid • U slučaju da se koristi u “interval” modu izaziva poseban maskirajući prekid • WDT se kontroliše preko jednog 16-bitnog registra (WDTCTL) • WDTCTL registru se pristupa kao celoj reči u jednoj instrukciji. Svaki upis u WDTCTL registar mora imati viši bajt 0x5A, inače se u protivnom izaziva NMI prekid. Svako čitanje WDTCTL kao rezultat ima viši bajt 0x69.