Top Banner
Univerzitet u Nišu Elektronski Fakultet Katedra za Elektroniku PREDMET: Mikroprocesorski Sistemi Avgust 2008 RAZVOJNI ALAT MSP430 Laboratorijske vežbe Mentor: Studenti:
79

Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Jan 28, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Univerzitet u NišuElektronski FakultetKatedra za Elektroniku

PREDMET: Mikroprocesorski Sistemi Avgust 2008

RAZVOJNI ALAT MSP430

Laboratorijske vežbe

Mentor: Studenti:

Prof. Dr. Mile Stojčev, red. prof. Milena Jovanović, br. ind. 11710 Jelena Gligorijević, br. ind. 11418

Srđan Jovanović, br. ind. 12455 Aleksandar Ristović, br. ind. 11414

Page 2: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Sadržaj

Opšti uvod za laboratorijske vežbe.............................................................................3

Laboratorijska vežba I - Snimanje i reprodukcija audio signala.................................9

Laboratorijska vežba II - Ispisivanje karaktera na LCD-u....................................... 23

Laboratorijska vežba III - A/D konvertor..................................................................41

Laboratorijska vežba IV - D/A konvertor..................................................................50

Biografije autora.........................................................................................................59

2

Page 3: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Opšti uvod za laboratorijske vežbe

Cilj laboratorijskih vežbi je upoznavanje sa određenim mogućnostima Texas Instruments-ove razvojne ploče MSP430FG4618/F2013.

Hardverska struktura mikrokontrolera familije MSP430

Razvojna ploča MSP430FG4618/F2013 je bazirana na Texas Instruments-ovoj MSP430 familiji mikrokontrolera koja se karakteriše mikro potrošnjom. Na ploči su ugrađena dva mikrokontrolera: MSP430FG4618 i MSP430F2013.

Navodimo neke od osnovnih karakteristika familije MSP430:

Koristi 64K bajta za adresiranje ROM-a, RAM-a, EERAM-a i periferija. Nema ograničenje prekida i potprogramskih nivoa zbog procesiranja magacina. Samo tri formata istrukcija. Stroga ortogonalnost bez izuzetaka. Koristi 1 reč/instrukcija ukoliko je moguće. Sedam načina adresiranja izvorišta. Četiri načina adresiranja odredišta. Spoljašnji pinovi za prekide: postojeći Ulazno/Izlaznih pinovi se mogu koristiti za

prekide. Prekidi imaju dodeljene prioritete: istovremena pojava prekida se razrešava na

principu prioriteta. Periferije imaju lokalnu memoriju: registri su u modulima - ne koriste RAM. USART se nalazi na čipu: odvojeni prekidi za slanje i primanje. Tajmer sa prekidima za brojanje događaja, generisanje vremena, PWM,... Watchdog 12- bitni ADC sa 16 ulaza. EPROM verzija (One Time Programmable-memorija koja može samo jednom da se

isprogramira) LCD drajver Stabilna frekvencija procesora obezbeđena korišćenjem PLL-a i kristala frekvencije

32,768 Hz Jednostavan razvoj programa zbog ortogonalne strukture: sve instrukcije podržavaju

sve adresne režime Radi se na razvoju C-kompajlera Koncept modularnog projektovanja: moduli su striktno memorijski mapirani

Razvojna ploča MSP430FG4618/F2013

Razvojna ploča MSP430FG4618/F2013 može da se koristi za razvoj velikog broja aplikacija. MSP-EXP430FG4618 kit sadrži razvojnu ploču MSP430FG4618/F2013 koja je prikazana na slici 1. i dve AAA 1.5 V baterije.

3

Page 4: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 1.: Razvojna ploča MSP430FG4618/F2013

Navodimo osnovne komponente na ploči i njihove funkcije:

Interfejsi Integrisani displej SoftBaugh SBLCDA4 LCD Dva tastera, S1 i S2, priključena su na digitalni ulazno/izlazni (U/I) port P1

mikrokontrolera MSP430FG4618. Četiri svetleće diode (LED) služe za indikaciju. Tri su povezane sa

mikrokontrolerom MSP430FG4618 i jedna sa mikrokontrolerom MSP430F2013.

Bazer je povezan na digitalni U/I port mikrokontrolera MSP430FG4618. Kapacitivna tastatura osetljiva na dodir, koja ima oblik broja “4”, je povezana

na digitalni U/I port mikrokontrolera MSP430F2013.

Komunikacioni periferni uređaji Interfejs ka bežičnoj komunikaciji ostvarujemo preko Wireless Evaluation

Module konektora koji podržava Texas Instruments-ove CCxxxxEMK module. Primopredajni moduli su povezani na USART konektor mikrokontrolera MSP430FG4618.

Serijsku komunikaciju sa računarom, mikrokontroler MSP430FG4618 ostvaruje standardnim RS-232 9-to pinskim konektorom preko svog USCI perifernog uređaja koji je konfigurisan u UART modu.

4

Page 5: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Mikrokontroleri MSP430FG4618 i MSP430F2013 koriste USCI i USI periferne uređaje i podržavaju I2C i SPI protokole. Protokol se koristi za međusobnu komunikaciju mikrokontrolera MSP430FG4618 i MSP430F2013.

Obrada analognog signala Mikrofon je povezan sa mikrokontrolerom MSP430FG4618. Dva analogna filtra: aktivni filtar prvog reda propusnik visokih učestanosti

(HPF) i opcioni, Sallen-Key aktivni filtar drugog reda propusnik niskih učestanosti (LPF). Ovi filtri koriste integrisane operacione pojačavače koji se nalaze u mikrokontroleru MSP430FG4618.

Analogni izlaz je izveden na ploči preko mono utičnice od 3.5mm koja je povezana sa izlazom mikrokontrolera MSP430FG4618.

Sistemski taktovi Mikrokontroler MSP430F2013 koristi interni naponski kontrolisan oscilator

(VCO) koji radi na ~12kHz za vreme koje je potrebno da procesor uđe iz standby režima rada sa mikropotrošnjom u normalan režim rada. Integrisani digitalno kontrolisani oscilator (DCO) je programabilan do frekvencije od 16MHz.

Standardni kristal za 32.768kHz se nalazi na ploči (podnožje X2) i on se koristi za ACLK mikrokontolera MSP430FG4618 za rad na niskim frekvencijama, standby režim rada sa mikropotrošnjom i RTC funkcionalnost. Integrisani FLL+ taktni modul obezbeđuje programabilni interni generator takta visoke frekvencije koji se koristi za pobudu CPU-a i drugih periferija na čipu. Osim FLL+, moguće je dograditi i spoljašnji kristal do 8MHz na podnožje X1.

Konfiguracija kratkospajača Razvojna ploča podržava rad raznih perifernih uređaja i komponenta koje

možemo, zbog smanjenja ukupne potrošnje, po potrebi isključiti. Ovo se ostvaruje softverski ili hardverski konfiguracijom kratkospajača.

Softverski alati

Da bismo mogli da koristimo ovu razvojnu ploču u konkretim aplikacijama, moramo da programiramo mikrokontrolere MSP430FG4618 i MSP430F2013. Za to su nam potrebni Flash Emulation Tool (MSP-FET430UIF) i radno okruženje IAR Embedded Workbench IDE.

Za unošenje i debagiranje kôda u mikrokontrolerima MSP430FG4618 i MSP430F2013 koristimo Flash Emulation Tool (MSP-FET430UIF).

5

Page 6: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 2. Flash Emulation Tool MSP-FET430UIF

MSP-FET430UIF kao konektore sa jedne strane ima USB koji se priključuje na računar, a sa druge strane JTAG konektor koji se priključuje na JTAG konektor odgovarajućeg mikrokontrolera na razvojnoj ploči.

IAR Embedded Workbench IDE je radno okruženje u kome su integrisani svi potrebni alati: C/C++ kompajler, asembler, IAR XLINK linker, IAR XAR kreator biblioteke, IAR XLIB Librarian, editor, projekt menadžer sa dodatkom za komandu Make, dodatak za komandnu liniju i IAR C-SPY® debugger, debugger za više programske jezike.

Programiranje mikrokontrolera MSP430FG4618

1. Povežimo USB konektor MSP-FET430UIF-a na računar.2. Povežimo JTAG konektor MSP-FET430UIF-a na JTAG1 konektor koji se nalazi na razvojnoj ploči. 3. Kreirajmo novi projekat ili učitajmo postojeći projekat u IAR Embedded Workbench-u. 4. U padajućem meniju Project, IAR Embedded Workbench-a, izaberimo Options; pojaviće se meni koji je prikazan na slici 3. U General Options, pod Target izaberimo MSP430FG4618 iz MSP430x4xx Family opcija.

Slika 3: Izbor uređaja u IAR-u

6

Page 7: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

5. U Debugger opcijama, iz istog menija, izaberimo FET Debugger kao što je prikazano na slici 4.

Slika 4: Selektovanje FET Debugger-a

6. U opcijama FET Debugger-a izaberimo Texas Instrument USB-IF kao što je prikazano na slici 5. Nema potrebe da menjamo polaznu Automatic postavku.

Slika 5: Izbor USB interfejsa

7

Page 8: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Programiranje mikrokontrolera MSP430F2013

1. Povežimo 14-to pinski kabal na JTAG2 konektor koji se nalazi na ploči. 2. Kreirajmo novi projekat ili učitajmo postojeći projekat u IAR Embedded Workbench-u. 3. U padajućem meniju Project, IAR Embedded Workbench-a, izaberimo Options; pojaviće se meni koji je prikazan na slici 3. U General Options, pod Target izaberimo MSP430F2013 iz MSP430x2xx Family opcija. 4. U Debugger opcijama, iz istog menija, izaberimo FET Debugger kao što je prikazano na slici 4. 5. U opcijama FET Debugger-a izaberimo Texas Instrument USB-IF kao što je prikazano na slici 5. Nema potrebe da menjamo polaznu Automatic postavku. 6. Za novo-kreirani projekat, Spy-Bi-Wire interfejs je polazna postavka za MSP430F2013. Ako je potrebno da tu postavku promenimo, u FET Debugger meniju čekirajmo Override default i zatim izaberimo Spy-Bi-Wire umesto 4-Wire JTAG, kao što je prikazano na slici 6. Paralelni FET ne podržava Spy-Bi-Wire interfejs i ne može da se koristi za debagiranje/programiranje MSP430F2013.

Slika 6: Izbor Spy-Bi-Wire interfejsa za MSP430F2013

8

Page 9: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

LABORATORIJSKA VEŽBA I

- Snimanje i reprodukcija audio signala –

9

Page 10: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Uvod:

Dizajn ploče MSP430 je takav da omogućava pun tok obrade analognog signala korišćenjem MSP430FG4618. Ploča može da se koristi za brojne audio aplikacije. Moguće je snimati i reprodukovati audio signale bez korišćenja dodatnih spoljnih komponenata.

Slika 7: Tok obrade analognog signala

Mikrofon je povezan sa MSP430FG4618 i dozvola za rad mikrofona se dobija prekoodgovarajućeg porta MSP430FG4618.

Analogni filtri : Prvi po redu aktivni filtar propusnik visokih učestanosti (HPF) sa graničnom frekvencijom postavljenom približno na 340Hz nalazi se iza mikrofona da bi eliminisao ulazne signale niskih frekvencija. Opcionalan, drugi po redu, Sallen-Key aktivni filtar propusnik niskih učestanosti (LPF) sa graničnom frekvencijom postavljenom približno na 4 kHz, eliminiše šum visokih frekvencija na analognom izlazu 12-bitnog digitalno-analognog konvertora (DAC). Šema filtra prikazana je na slici 5. Ovi filtri koriste integrisane operacione pojačavače mikrokontrolera MSP430. Operacioni pojačavači OA0 i OA1 obavljaju proces filtriranja.

10

Page 11: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Sivi blokovi na slici 8 prikazuju elemente koji se nalaze u MSP430FG4618.

Slika 8: Šema aktivnog analognog filtra

Analogni izlaz je izveden sa ploče preko mono utičnice od 3.5mm koja je povezana na integrisani operacioni pojačavač OA2. Ulaz u ovaj pojačavač može interno da se poveže na DAC12 izlaz MSP430FG4618. Nekoliko opcija slabljenjna je omogućeno interno i hardverski pomoću odgovarajućeg kratkospajača.

Direktni pristup memoriji –DMA

Predstavlja takav pristup gde U/I interfejs i glavna memorija direktno razmenjuju podatke, bez posredstva CPU-a. Ovim se premošćava usko grlo CPU-periferija i obezbeđuje prenos podataka između periferija i RAM-a mikroračunara bez aktivne intervencije CPU-a. Osnovne karakteristike ove tehnike su:

l. prenos se ostvaruje bez programskog upravljanja, 2. brzina prenosa je velika i odre ena je memorijskim ciklusom (< 0,5µs) a reda je 2 M bajta/s i više, 3. prenos se realizuje kao blokovski.

Slika 9: Tokovi podataka kod DMA U/I prenosa

11

Page 12: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Zadatak:

Snimanje i reprodukcija audio signala. Upoznavanje sa DMA (Direct Memory Acess) i kompletnim tokom obrade analognog signala na mikrokontroleru MSP430 FG4618.

Potrebna oprema:

Za izvođenje ove laboratorijske vežbe potrebno nam je:

razvojna ploča MSP430FG4618/F2013

računar

Flash Emulation Tool(MSP-FET430UIF) kojim ćemo razvojnu ploču povezati na računar i izvršiti programiranje kontrolera MSP430FG4618

slušalice koje ćemo priključiti na mono utičnicu od 3.5mm

Postupak rada:

Da bismo kreirali novi projekat, napisali program, učitali ga i izvršili na MSP430 uređajima, potrebno je da ispratimo sledeću proceduru:

1. Pokrenimo IAR Embedded Workbench. Kliknimo na Start dugme na taskbar-u i izaberimo All Programs > IAR Systems > IAR Embedded Workbench for MSP430 V4 > IAR Embedded Workbench.

Slika 10: Osnovni prozor IAR Embedded Workbench IDE-a

12

Page 13: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

2. Kreirajmo novi tekstualni fajl (File > New > File).

Slika 11: Kreiranje novog tekstualnog fajla u IAR Embedded Workbench IDE-u

3. Unesimo tekst programa iz Listinga 1 u novo kreirani fajl.

Listing1:

#include "msp430xG46x.h"//------------------------------------------------------------------------------// Definisanje memorije//// Definisu se dva dela memorije, tako sto se memorija MSP430FG4618// deli u dve zasebne celine, jer se vektori prekida nalaze u sredini Fles// memorije MSP430FG4618, i ne sme se upisivati preko njih!////------------------------------------------------------------------------------#define Memstart 0x6000 // Deo memorije za upis#define Memend 0xfc00 // semplovanih podataka

#define Memstart2 0x10000 // Deo memorije za upis#define Memend2 0x20000 // semplovanih podataka

#define SamplePrd 118 // Vreme semplovanja: // SampleR = 1MHz / SamplePrd//------------------------------------------------------------------------------// Definicije LCD segmenata//------------------------------------------------------------------------------#define SEG_A 0x01#define SEG_B 0x02#define SEG_C 0x04

13

Page 14: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

#define SEG_D 0x08#define SEG_E 0x40#define SEG_F 0x10#define SEG_G 0x20#define SEG_H 0x80//------------------------------------------------------------------------------// Sledece dve promenjive sadrze podesavanja kontrolnih registara za DMA2// upotrebu pri snimanju i reprodukciji. DMA1 se koristi za upis tih vrednosti// u kontrolni registar DM2, kako bi DMA2 poceo sa radom.//------------------------------------------------------------------------------__root unsigned int DMA2CTL_Const_R = DMADSTINCR_3 + DMAEN + DMAIE;

__root const unsigned int DMA2CTL_Const_P = DMASRCINCR_3 + DMAEN + DMAIE; //------------------------------------------------------------------------------// Prototipi funkcija//------------------------------------------------------------------------------void Record(void);void Playback(void);void Erase(void);//------------------------------------------------------------------------------void main(void){ volatile unsigned int i;

WDTCTL = WDTPW + WDTHOLD; // Zaustavi watchdog FLL_CTL0 |= XCAP14PF; // Postavi ulazne kapacitivnosti

do { IFG1 &= ~OFIFG; // Resetuj OSCFault bit for (i = 0x47FF; i > 0; i--); // Pauza za setovanje } while (IFG1 & OFIFG); // OSCFault je jos uvek setovan?

// Portovi P1OUT = 0; // Svi P1.x resetovani P1IE = 0x03; // P1.0, P1.1 sa dozvoljenim interaptom P1IES = 0x03; // P1.0, P1.1 hi/low ivica P1DIR = 0xFC; // P1.0/1 = ulaz (tasteri) P2OUT = 0; // Svi P2.x resetovani P2DIR = 0xDF; // UCA0RXD = ulaz P3OUT = 0x20; // Svi P3.x resetovani (3.5 = zujalica) P3DIR = 0xF9; // I2C pinovi = ulaz P4OUT = 0; // Svi P4.x resetovani P4DIR = 0xFF; // Svi P4.x izlazni P5OUT = 0; // Svi P5.x resetovani P5SEL = 0x1C; // P5.2/3/4 = LCD linije P5DIR = 0xFF; // Svi P5.x izlazni P6OUT = 0; // Svi P6.x resetovani P6SEL = 0xBF; // Svi osim P6.6 analogni P6DIR = 0xFF; // Svi P6.x izlazni P7OUT = 0; // Svi P7.x resetovani P7DIR = 0xFF; // Svi P7.x izlazni P8OUT = 0; // Svi P8.x resetovani P8DIR = 0xFF; // Svi P8.x izlazni P9OUT = 0; // Svi P9.x resetovani P9DIR = 0xFF; // Svi P9.x izlazni

14

Page 15: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

P10OUT = 0; // Svi P10.x resetovani P10DIR = 0xFF; // Svi P10.x izlazni

// LCD_A for (i = 19; i > 0; i--) LCDMEM[i] = 0; // Izbrisi LCD LCDACTL = LCDON + LCD4MUX + LCDFREQ_128;

// 4mux LCD, ACLK/128 LCDAPCTL0 = 0x7E; // Segmenti 4-27

while (1) // Ponavljaj stalno { P1IFG &= ~0x03; // Izbrisi eventualne interapte za tastere P1IE |= 0x03; // Dozvoli interapte za tastere

// Cekaj na dogadjaj i postavi CPU u status male potrosnje (4) __bis_SR_register(LPM4_bits + GIE); __disable_interrupt();

// Obradi dogadjaj: pritisnut taster if (P1IFG & 0x02) // Taster za snimanje (SW2) pritisnut? Record(); else if (P1IFG & 0x01) // Taster za reprodukciju (SW1) pritisnut? Playback(); }}//------------------------------------------------------------------------------//Snimanje i cuvanje audio zapisa g u Flash memoriji //korišæenjem DMA kontrolera i ADC12 modula

//------------------------------------------------------------------------------void Record(void){ // Prvo ukljucimo hardver P5OUT |= 0x02; // Ukljuci LED#4 P2OUT |= 0x08; // Ukljuci napajanje za mikrofon

// Postavljanje OA0 = mikrofonsko pred-pojacalo // OA0+ = P6.2/OA0I1 // OA0- = P6.0/OA0I0 // OA0OUT = P6.1/OA0O, A1 (internal) OA0CTL0 = OAP_1 + OAPM_3; // Ulazi, u power modu OA0CTL1 = OARRIP; // Ulaz opste namene (rail-to-rail)

// Postavljanje ADC12 modula ADC12CTL0 = ADC12ON; // Ukljuci ADC12 // ADC12 Takt = ADC12OSC ADC12CTL1 = SHS_3 + CONSEQ_2; // Izvor: Timer_B.OUT1 // ADC12IFG = 0x00; // Izbrisi ADC12 vektor prekida ADC12MCTL0 = 0x0001; // Ulazni kanal A1 ADC12CTL0 |= ENC; // Dozvoli konverziju

// Podesavanje Timer_B za snimanje TBCTL = TBSSEL_2; // SMCLK kao Timer_B izvor TBR = 0; TBCCR0 = SamplePrd; // Inicijalizuj TBCCR0 TBCCR1 = SamplePrd - 20; // Triger za ADC12 TBCCTL1 = OUTMOD_7; // Resetuj OUT1 na EQU1, setuj na EQU0

15

Page 16: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

// Podešavanje DMA kontrolera

// Podešavanje DMA okidaca DMACTL0 = DMA2TSEL_6 + // ADC12IFGx okida DMA2 DMA1TSEL_14 + // DMA0IFG okida DMA1 DMA0TSEL_6; // ADC12IFGx okida DMA0

// Podešavanje DMA0 za snimanje u prvi memorijski blok DMA0SA = (unsigned int)&ADC12MEM // Izvorisna adresa = ADC12 modul DMA0DA = Memstart; // Odredisna adresa = Flash memorija DMA0SZ = (Memend - Memstart) >> 1; // Velicina u recima (word) DMA0CTL = DMADSTINCR1 + DMADSTINCR0 + DMAEN;

// Podešavanje DMA1 za aktiviranje DMA2 DMA1SA = (unsigned int)&DMA2CTL_Const_R; // Izvorisna adresa = podaci DMA1DA = (unsigned int)&DMA2CTL; // Odredisna adresa = DMA2CTL DMA1SZ = 1; // 1 Transfer DMA1CTL = DMAEN; // Jedan transfer, ukljuèi DMA

// Podešavanje DMA2 za snimanje u drugi memorijski blok DMA2SA = (unsigned int)&ADC12MEM0; // Izvorisna adresa = ADC12 modul __data16_write_addr((unsigned short)&DMA2DA, Memstart2); // Odredisna adresa = Flash memorija DMA2SZ = (Memend2 - Memstart2) >> 1; // Velicina u recima (word)

// Postavljanje i brisanje Flash memorije FCTL2 = FWKEY + FSSEL1 + FN1; // SMCLK/3 = ~333kHz FCTL3 = FWKEY; // Otkljuèaj Flash memoriju za pisanje Erase(); // FCTL1 = FWKEY + WRT; // Dozvoli upis u Flash za snimanje

// Upiši na LCD LCDM8 = SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G; // "R" LCDM7 = SEG_A + SEG_D + SEG_E + SEG_F + SEG_G; // "E" LCDM6 = SEG_A + SEG_D + SEG_E + SEG_F; // "C" LCDM5 = 0x00; // " " LCDM4 = 0x00; // " "

// Poèni sa snimanjem P1OUT |= 0x01; // Ukljuci LED#4 TBCTL |= MC0; // Startuj Timer_B // (broji do TBCL0)

// Aktiviraj LPM za vreme DMA snimanja, buðenje po završetku __bis_SR_register(LPM0_bits + GIE); // Dozvoli prekide, uði LPM0 __disable_interrupt(); // Zabrani prekide

// Deactiviraj Flash memori FCTL1 = FWKEY; // Zabrani upis u Flash FCTL3 = FWKEY + LOCK; // Zakljuèaj Flash memoriju

// Iskljuèi MSP430 modules ADC12CTL1 &= ~CONSEQ_2; // Zaustavi konverziju ADC12CTL0 &= ~ENC; // Zabrani konverziju ADC12 ADC12CTL0 = 0; // Iskljuèi ADC12 i referentni napon TBCTL = 0; // Zabrani Timer_B OA0CTL0 = 0; // Zabrani OA0

16

Page 17: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

P2OUT &= ~0x08; // Iskljuèi napajanje mikrofona P5OUT &= ~0x02; // Iskljuèi LED#4

// Ispis na LCD LCDM8 = 0x00; // " " LCDM7 = 0x00; // " " LCDM6 = 0x00; // " "}//------------------------------------------------------------------------------// Reprodukcija audio zapisa smeštenog u Flash memoriji korišæenjem// DMA kontrolera i DAC12 modula//------------------------------------------------------------------------------void Playback(void){ volatile unsigned int i;

// Ispis na LCD LCDM8 = SEG_A + SEG_B + SEG_E + SEG_F + SEG_G; // "P" LCDM7 = SEG_D + SEG_E + SEG_F; // "L" LCDM6 = SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G; // "A" LCDM5 = SEG_B + SEG_C + SEG_F + SEG_G; // "Y" LCDM4 = 0x00; // " "

// Ukljuci spoljni hardver P5OUT |= 0x02; // Ukljuci LED#4 // Postavi DAC12_0 DAC12_0CTL = DAC12IR + DAC12AMP_2 + DAC12ENC + DAC12OPS; DAC12_0DAT = 0x057F; // Nivo ofseta

// Podešavanje OA1 // OA1+ = P6.4/OA1I0 // OA1- = R_Bottom (interni) // OA1OUT = P6.3/A3/OA1O, R_Bottom (interni) OA1CTL0 = OAPM_3 + OAADC1; // Odaberi ulaze OA1CTL1 = OAFC_1 + OARRIP; // Rail-to-rail ulazi

// Podešavanje OA2 // OA2+ = DAC12_0OUT // OA2- = OA1OUT // OA2OUT = P6.5/OA2O OA2CTL0 = OAN_2 + OAP_2 + OAPM_3 + OAADC1;// Odaberi ulaze OA2CTL1 = OAFC_6 + OAFBR_2 + OARRIP; //

// Podešavanje DAC12_1 modula ADC12CTL0 = REFON + REF2_5V; // ADC12 ref. napon za DAC12s DAC12_1CTL = DAC12IR + DAC12AMP_7 + DAC12LSEL_3 + DAC12ENC; // Konfigurisanje DAC12 for (i = 0; i < 0x3fff; i++); // Cekanje dok se napon stabilizuje

// Podesi Timer_B za reprodukciju TBCTL = TBSSEL_2; // SMCLK kao taktni izvor za Timer_B TBCCR0 = SamplePrd; // TBCCR2 = SamplePrd >> 1; // TBCCTL2 = OUTMOD_7; // Resetuj OUT2 na EQU2, setuj na EQU0

17

Page 18: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

// Podešavanje DMA kontrolera

// Podešavanje DMA okidaèa DMACTL0 = DMA2TSEL_2 + // Timer_B.CCIFG2 okida DMA2 DMA1TSEL_14 + // DMA0IFG okida DMA1 DMA0TSEL_2; // Timer_B.CCIFG2 okida DMA0

// Podešavanje DMA0 za reprodukciju iz prvog mem. bloka DMA0SA = Memstart; // Izvorišna adresa = Flash memorija DMA0DA = (unsigned int)&DAC12_1DAT // Odredišna adresa = DAC12 modul DMA0SZ = (Memend - Memstart) >> 1; // Velicina DMA bloka DMA0CTL = DMASRCINCR1 + DMASRCINCR0 + DMAEN; // Postavi DMA1 za aktiviranje DMA2 DMA1SA = (unsigned int)&DMA2CTL_Const_P; // Izvorisna adresa = sadrzaj za ucitavanje DMA1DA = (unsigned int)&DMA2CTL; // Odredisna adresa = DMA2CTL DMA1SZ = 1; // 1 transfer DMA1CTL = DMAEN; // 1 transfer, dozvoli DMA

// Postavi DMA2 za reprodukciju iz drugog memorijskog bloka __data16_write_addr((unsigned short)&DMA2SA, Memstart2);

// Izvorisna adresa = Flash memorija DMA2DA = (unsigned int)&DAC12_1DAT; // Odredisna adresa = DAC12 modul DMA2SZ = (Memend2 - Memstart2) >> 1; // Velicina DMA bloka

// Startuj reprodukciju TBCTL |= MC0; // Startuj Timer_B u UP rezimu rada // (broji do TBCCR0)

// Aktiviraj LPM za vreme DMA reprodukcije, probudi se po zavrsetku __bis_SR_register(LPM0_bits + GIE); // Dozvoli prekide, udji u LPM0 __disable_interrupt(); // Zabrani prekide

// Iskljuci MSP430 module TBCTL = 0; // Zabrani Timer_B ADC12CTL0 = 0; // Iskljuci ADC12 ref. voltazu DAC12_0CTL &= ~DAC12ENC; // Zabrani DAC12 konverziju DAC12_0CTL = 0; // Iskljuci DAC12 DAC12_1CTL &= ~DAC12ENC; // Zabrani DAC12 konverziju DAC12_1CTL = 0; // Iskljuci DAC12 OA1CTL0 = 0; // Zabrani OA1 OA2CTL0 = 0; // Zabrani OA2

P5OUT &= ~0x02; // Iskljuci LED#4

LCDM8 = 0x00; // " " LCDM7 = 0x00; // " " LCDM6 = 0x00; // " " LCDM5 = 0x00; // " "}//------------------------------------------------------------------------------// Brisanje Flash memorije za novo snimanje//------------------------------------------------------------------------------void Erase(void){ unsigned int Ptr = Memstart; // Pocetak snimljene memorije

18

Page 19: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

unsigned long FarPtr = Memstart2;

LCDM8 = SEG_A + SEG_D + SEG_E + SEG_F + SEG_G; // "E" LCDM7 = SEG_E + SEG_G; // "R" LCDM6 = SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G; // "A" LCDM5 = SEG_A + SEG_C + SEG_D + SEG_F + SEG_G; // "S" LCDM4 = SEG_A + SEG_D + SEG_E + SEG_F + SEG_G; // "E"

// Brisanje memorije od 'Memstart' do 'Memend' do { if (Ptr & 0x1000) // Bit 12 za kontrolu LED#4 P5OUT |= 0x02; else P5OUT &= ~0x02;

FCTL1 = FWKEY + ERASE; *(unsigned char *)Ptr = 0x00; // Dummy write da bi se resilo // brisanje segmenta Ptr += 0x0200; // Sledeci segmenat } while (Ptr < Memend);

// Brisanje memorije od 'Memstart2' do 'Memend2' do { if (FarPtr & 0x1000) // Bit 12 za kontrolu LED#4 P5OUT |= 0x02; else P5OUT &= ~0x02;

FCTL1 = FWKEY + ERASE; __data20_write_char(FarPtr, 0x00); // Dummy write da bi se resilo // brisanje segmenta FarPtr += 0x0200; // Sledeci segmenat } while (FarPtr < Memend2);}//------------------------------------------------------------------------------// Rukovanje PORT1 prekidnim vektorom//------------------------------------------------------------------------------#pragma vector=PORT1_VECTOR__interrupt void Port1_ISR (void){ P1IE &= ~0x03; / /Zabrani prekide sa tastera __bic_SR_register_on_exit(LPM4_bits); // Izadji iz LPM4 na reti // da bi se aktiviralo snimanje}//------------------------------------------------------------------------------// Upravljanje DMA prekidnim vektorom//------------------------------------------------------------------------------#pragma vector=DMA_VECTOR__interrupt void DMA_ISR(void){ DMA2CTL &= ~DMAIFG; // Resetuj DMA2 vektor prekida __bic_SR_register_on_exit(LPM0_bits); // Izadji iz LPM0 na reti}//------------------------------------------------------------------------------

19

Page 20: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Napomena: Koristimo fajlove sa ekstenzijom .h da pojednostavimo upis kôda.KickStart sadrži fajlove koji definišu registre i imena bitova, za svaki uređaj i oni mogu mnogo da pojednostave razvoj programa. Ovi fajlovi se nalaze u <Installation Root>\Embedded Workbench x.x\430\inc. Uključimo odgovarajući .h fajl, za ciljni uređaj, u tekst fajl (#include "msp430xyyy.h"). Dodatno, postoje i io430xxxx.h fajlovi koji su optimizovani za C izvorne fajlove.

4. Sačuvajmo tekstualni fajl programa (File > Save) kao main.c.

Slika 12: Izgled prozora nakon unešenog i sačuvanog koda

5. Kreirajmo novi radni prostor (File > New > Workspace)6. Kreirajmo novi projekat (Project > Create New Project). Pojaviće se Create New

Project dijalog prozor.

Slika 13: Create New Project dijalog prozor

20

Page 21: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Proverimo da li je Tool chain postavljen na MSP430, izaberimo Empty project iz ponuđenih projektnih šablona (Project Templates) i kliknimo OK. U standardnom Save As dijalog prozoru, naznačimo direktorijum gde želimo da smestimo projektni fajl, ili kreirajmo novi projektni direktorijum. Ukucajmo naziv projekta, Voice Recorder u polje za upis imena fajla i kliknimo Save da bismo kreirali novi projekat. Projekat će se pojaviti u radnom prozoru.

7. Dodajmo prethodno kreirani tekstualni fajl programa projektu (Project > Add Files).Selektujmo željeni tekstualni fajl i kliknimo Open. Alternativno, kliknimo duplim klikom na fajl da ga dodamo projektu.

8. Sačuvajmo radni prostor (File > Save Workspace). Naznačimo ime radnog prostora i kliknimo Save.

9. Podesimo opcije projekta (Project > Options). Za svaku potkategoriju (General Options, C/C++ Compiler, Assembler, Linker, Debugger) prihvatimo polazne opcije Factory Settings sa sledećim izuzecima:

naznačimo ciljni uređaj (General Options > Target > Device) omogućimo asemblerski projekat ili C/asemblerski projekat (General Options

> Target > Assembler-only project). omogućimo generisanje izvršnog izlaznog fajla (General Options > Output >

Output file > Executable). za FET debagiranje, kliknimo Debugger > Setup > Driver > FET Debugger. naznačimo aktivni port koji se koristi za vezu sa FET-om (FET Debugger >

Setup > Connection).10. Debagirajmo aplikaciju korišćenjem C-SPY-a (Project > Debug). Ovim startujemo

C-SPY i on preuzima kontrolu nad uređajem, briše memoriju, zatim je programira aplikacijom i resetuje uređaj.

Slika 14: Osnovni prozor C-SPY Debugger-a

21

Page 22: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

11. Kliknimo Debug > Go da startujemo aplikaciju.12. Kliknimo Debug > Stop Debugging da stopiramo aplikaciju, izađemo iz C-SPY-a i

vratimo se u Workbench.13. Kliknimo File > Exit da izađemo iz Workbench-a.

22

Page 23: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

LABORATORIJSKA VEŽBA II- Ispisivanje karaktera na LCD-u -

23

Page 24: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Uvod:Razvojni alat MSP430 sadrži Integrisani SoftBaugh SBLCDA4 LCD displej koji je piključen preko kontrolera LCD_A na mikrokontroler MSP430FG4618. Kontroler LCD_A direktno pokreće LCD displej u statičkom, 2-mux, 3-mux ili 4-mux načinu rada LCD-a.

Karakteristike LCD-a su: Memorija LCD-a Automatsko generisanje signala Podešavanje frekvencije Mogućnost blinkanja karaktera na displeju Softverska kontrola kontrasta Podrška za četiri načina rada displeja:

1. statički2. 2-mux 1/2 popune ili 1/3 popune3. 3-mux 1/2 popune ili 1/3 popune4. 4-mux 1/2 popune ili 1/3 popune

Slika 15: Blok dijagram LCD_A kontrolera

24

Page 25: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

LCD memorija: Svaki bit memorije je povezan sa po jednim segmentom ili nije iskorišćen, što zavisi od režima rada. Postavljanjem određenog bita uključuje se odgovarajući segment LCD-aMogućnost blinkanja:LCD_A kontroler podržava blinkanje karaktera na displeju. LCDSON bit je u vezi sa svakim bitom memorije segmenta. Kada je LCDSON = 1, svaki segment je uključen ili isključen u skladu sa vrednošću odgovarajućeg bita. Kada je LCDSON = 0, svaki segment je isključen.U statičkom režimu rada svaki pin MSP430 pobuđuje jedan LCD segment i jednu liniju COM0U 2-mux režimu rada svaki pin MSP430 pobuđuje dva LCD segmenta i dve linije COM0 i COM1.U 3-mux režimu rada svaki pin MSP430 pobuđuje tri LCD segmenta i tri linije COM0, COM1 i COM2.

Zadatak: Kontrola rada LCD-a pomoću mikrokontrolera MSP430FG4618. U ovoj vežbi videćemo kako se vrši ispisivanje slova na LCD-u. Upoznaćemo se i sa ispisivanjem ostalih karaktera koje je moguće prikazati na displeju. Kao primer na displeju ćemo prikazati tekst „ELEF“Da bi smo ovo uradili potrebno je da izvršimo određena podešavanja, koja su prikazana u Lstingu 1 i Listingu 2.

Potrebna oprema:

Za izvođenje ove laboratorijske vežbe potrebno nam je:

razvojna ploča MSP430FG4618/F2013 sa integrisanim SoftBaugh SBLCDA4 LCD displejem

računar

Flash Emulation Tool(MSP-FET430UIF) kojim ćemo razvojnu ploču povezati na računar i izvršiti programiranje kontrolera MSP430FG4618

Postupak rada:

Da bismo kreirali novi projekat, napisali program, učitali ga i izvršili na MSP430 uređajima, potrebno je da ispratimo sledeću proceduru:

1. Pokrenimo IAR Embedded Workbench. Kliknimo na Start dugme na taskbar-u i izaberimo All Programs > IAR Systems > IAR Embedded Workbench for MSP430 V4 > IAR Embedded Workbench.

25

Page 26: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 16: Osnovni prozor IAR Embedded Workbench IDE-a

2. Kreirajmo novi tekstualni fajl (File > New > File).

Slika 17: Kreiranje novog tekstualnog fajla u IAR Embedded Workbench IDE-u

26

Page 27: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

3. Unesimo tekst programa iz Listinga 1 u novo kreirani fajl.

Listing1:

#include <LCD.h>

// Mapiranje segmenta LCD-aconst UInt8 LCD_Char_Map[] ={ LCD_A+LCD_B+LCD_C+LCD_D+LCD_E+LCD_F, // '0' ili 'O' LCD_B+LCD_C, // '1' ili 'I' LCD_A+LCD_B+LCD_D+LCD_E+LCD_G, // '2' ili 'Z' LCD_A+LCD_B+LCD_C+LCD_D+LCD_G, // '3' LCD_B+LCD_C+LCD_F+LCD_G, // '4' ili'y' LCD_A+LCD_C+LCD_D+LCD_F+LCD_G, // '5' ili'S' LCD_A+LCD_C+LCD_D+LCD_E+LCD_F+LCD_G, // '6' ili 'b' LCD_A+LCD_B+LCD_C, // '7' LCD_A+LCD_B+LCD_C+LCD_D+LCD_E+LCD_F+LCD_G, // '8' ili 'B' LCD_A+LCD_B+LCD_C+LCD_F+LCD_G, // '9' ili 'g' LCD_A+LCD_B+LCD_C+LCD_E+LCD_F+LCD_G, // 'A' LCD_A+LCD_D+LCD_E+LCD_F, // 'C' LCD_B+LCD_C+LCD_D+LCD_E+LCD_G, // 'd' LCD_A+LCD_D+LCD_E+LCD_F+LCD_G, // 'E' LCD_A+LCD_E+LCD_F+LCD_G, // 'F' LCD_B+LCD_C+LCD_E+LCD_F+LCD_G, // 'H' LCD_B+LCD_C+LCD_D+LCD_E, // 'J' LCD_D+LCD_E+LCD_F, // 'L' LCD_A+LCD_B+LCD_E+LCD_F+LCD_G, // 'P' LCD_B+LCD_C+LCD_D+LCD_E+LCD_F // 'U'};

const UInt8 LCD_MAX_CHARS = (sizeof(LCD_Char_Map)/sizeof(UInt8));

//// Inicijalizacija LCD_A-a//void initLCD_A(void){ // Brisanje memorije LCD-a clrLCD();

// Postavljanje COM0-COM3 i pinova R03-R33 P5SEL |= (BIT4 | BIT3 | BIT2); P5DIR |= (BIT4 | BIT3 | BIT2);

// Postavljanje LCD_A-a LCDACTL = LCDFREQ_128 | LCDMX1 | LCDMX0 | LCDSON | LCDON; LCDAPCTL0 = LCDS4 | LCDS8 | LCDS12 | LCDS16 | LCDS20 | LCDS24;

27

Page 28: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

LCDAPCTL1 = 0; LCDAVCTL0 = LCDCPEN; LCDAVCTL1 = VLCD_2_60;}

//// Brisanje LCD-a//void clrLCD(void){ int i;

for(i = LCD_MEM_OFFSET; i < (LCD_MEM_OFFSET+LCD_MEM_LOC); i++) { LCDMEM[i] = 0; }}

//// Prikaz svih segmenata na LCD-u//void dispAllLCDSegs(void){ int i;

for(i = LCD_MEM_OFFSET; i < (LCD_MEM_OFFSET+LCD_MEM_LOC); i++) { LCDMEM[i] = 0xff; }}

//// Prikaz karaktera na LCD-u//void dispChar(UInt8 pos, UInt8 index){ LCDMEM[pos + LCD_MEM_OFFSET] &= ~LCD_Char_Map[8];

if( pos < LCD_NUM_DIGITS ) { if( index < LCD_MAX_CHARS ) { LCDMEM[pos + LCD_MEM_OFFSET] |= LCD_Char_Map[index]; } }}

//

28

Page 29: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

// Prikaz nivoa napona napajanja na LCD-u//void dispPwrLvl(UInt8 lvl){ LCDMEM[7+LCD_MEM_OFFSET] &= ~(BIT1+BIT2+BIT3); LCDMEM[8+LCD_MEM_OFFSET] &= ~(BIT0+BIT1+BIT2+BIT3);

switch(lvl) { case LCD_PWR_LVL_0: LCDMEM[7+LCD_MEM_OFFSET] |= (BIT1); LCDMEM[8+LCD_MEM_OFFSET] |= (BIT0); break; case LCD_PWR_LVL_1: LCDMEM[7+LCD_MEM_OFFSET] |= (BIT1); LCDMEM[8+LCD_MEM_OFFSET] |= (BIT0+BIT1); break; case LCD_PWR_LVL_2: LCDMEM[7+LCD_MEM_OFFSET] |= (BIT1); LCDMEM[8+LCD_MEM_OFFSET] |= (BIT0+BIT1+BIT2); break; case LCD_PWR_LVL_3: LCDMEM[7+LCD_MEM_OFFSET] |= (BIT1); LCDMEM[8+LCD_MEM_OFFSET] |= (BIT0+BIT1+BIT2+BIT3); break; case LCD_PWR_LVL_4: LCDMEM[7+LCD_MEM_OFFSET] |= (BIT1+BIT3); LCDMEM[8+LCD_MEM_OFFSET] |= (BIT0+BIT1+BIT2+BIT3); break; case LCD_PWR_LVL_5: LCDMEM[7+LCD_MEM_OFFSET] |= (BIT1+BIT2+BIT3); LCDMEM[8+LCD_MEM_OFFSET] |= (BIT0+BIT1+BIT2+BIT3); break; };}

////Prikaz F1 do F5 na LCD-u//void dispFunc(UInt8 mask){ UInt8 tmp;

LCDMEM[7+LCD_MEM_OFFSET] &= ~0xf1;

if( mask < LCD_FUNC_OFF ) { tmp = mask << 4;

if( (mask & LCD_F5) ) { tmp |= BIT0;

29

Page 30: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

}

LCDMEM[7+LCD_MEM_OFFSET] |= tmp; }}

//// Prikaz stanja baterije na LCD-u//void dispBattLvl(UInt8 lvl){ LCDMEM[9+LCD_MEM_OFFSET] &= ~(BIT0+BIT1+BIT2+BIT3);

switch(lvl) { case LCD_BATT_LOW: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT0+BIT3); break; case LCD_BATT_HALF: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT0+BIT2+BIT3); break; case LCD_BATT_FULL: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT0+BIT1+BIT2+BIT3); break; };}

//// Prikaz nivoa signala na LCD-u//void dispSigLvl(UInt8 lvl){ LCDMEM[9+LCD_MEM_OFFSET] &= ~(BIT4+BIT5+BIT6+BIT7);

switch(lvl) { case LCD_SIG_LVL_0: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT4); break; case LCD_SIG_LVL_1: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT4+BIT7); break; case LCD_SIG_LVL_2: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT4+BIT6+BIT7); break; case LCD_SIG_LVL_3: LCDMEM[9+LCD_MEM_OFFSET] |= (BIT4+BIT5+BIT6+BIT7); break; };}

30

Page 31: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

//// Prikaz strelice na LCD-u//void dispArrow(UInt8 mask){ LCDMEM[8+LCD_MEM_OFFSET] &= ~(BIT4+BIT5+BIT6+BIT7);

if( mask < LCD_ARROW_OFF ) { LCDMEM[8+LCD_MEM_OFFSET] |= (mask << 4); }}

//// Prikaz simbola na LCD-u//void dispSymbol(UInt8 mask){ UInt8 tmp;

LCDMEM[10+LCD_MEM_OFFSET] &= ~(BIT0+BIT1+BIT2+BIT4+BIT5+BIT6+BIT7);

if( mask < LCD_SYM_OFF ) { tmp = mask << 4; tmp |= mask >> 4;

LCDMEM[10+LCD_MEM_OFFSET] |= tmp; }}

//// Prikaz specijalnih karaktera na LCD-u//void dispSpecialChar(UInt16 mask){ UInt16 x; UInt8 index = 0;

if( mask & LCD_8BC ) { LCDMEM[10+LCD_MEM_OFFSET] |= BIT3; } else { LCDMEM[10+LCD_MEM_OFFSET] &= ~BIT3; }

for(x = 1; x < LCD_8BC; x <<= 1) {

31

Page 32: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

if( x & mask ) { LCDMEM[index+LCD_MEM_OFFSET] |= BIT7; } else { LCDMEM[index+LCD_MEM_OFFSET] &= ~(BIT7); }

++index; }}

#if LCD_TEST > 0

void testChar(void){

// Prikaz karaktera(pozicija, indeks); dispChar(1, 14); dispChar(2, 13); dispChar(3, 17); dispChar(4, 13); }

void testSpecialChar(void){ static UInt16 mask = 1;

dispSpecialChar(mask);

if( mask >= LCD_SPC_CHAR_OFF ) { mask = 1; } else { mask <<= 1; }}

void testPwrLvl(void){ static UInt8 lvl = LCD_PWR_LVL_0;

dispPwrLvl(lvl);

if( lvl >= LCD_PWR_OFF ) {

32

Page 33: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

lvl = LCD_PWR_LVL_0; } else { lvl <<= 1; }}

void testSigLvl(void){ static UInt8 lvl = LCD_SIG_LVL_0;

dispSigLvl(lvl);

if( lvl >= LCD_SIG_OFF ) { lvl = LCD_SIG_LVL_0; } else { lvl <<= 1; }}

void testBatt(void){ static UInt8 lvl = LCD_BATT_LOW;

dispBattLvl(lvl);

if( lvl >= LCD_BATT_OFF ) { lvl = LCD_BATT_LOW; } else { lvl <<= 1; }}

void testFunc(void){ static UInt8 func = LCD_F1;

dispFunc(func);

if( func >= LCD_FUNC_OFF ) { func = LCD_F1;

33

Page 34: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

} else { func <<= 1; }}

void testArrow(void){ static UInt8 dir = LCD_ARROW_UP;

dispArrow(dir);

if( dir >= LCD_ARROW_OFF ) { dir = LCD_ARROW_UP; } else { dir <<= 1; }}

void testSymbol(void){ static UInt8 sym = LCD_SYM_DOL;

dispSymbol(sym);

if( sym >= LCD_SYM_OFF ) { sym = LCD_SYM_DOL; } else { sym <<= 1; }}

void testAll(void){ UInt8 x;

for(x = 0; x < 3; x++) { //_BIS_SR(LPM3_bits + GIE); // LPM3, dozvola prekida

dispAllLCDSegs(); }

34

Page 35: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

clrLCD();}

#endif // LCD_TEST

Napomena: Koristimo fajlove sa ekstenzijom .h da pojednostavimo upis kôda.KickStart sadrži fajlove koji definišu registre i imena bitova, za svaki uređaj i oni mogu mnogo da pojednostave razvoj programa. Ovi fajlovi se nalaze u <Installation Root>\Embedded Workbench x.x\430\inc. Uključimo odgovarajući .h fajl, za ciljni uređaj, u tekst fajl (#include "msp430xyyy.h"). Dodatno, postoje i io430xxxx.h fajlovi koji su optimizovani za C izvorne fajlove.

4. Sačuvajmo tekstualni fajl programa (File > Save) kao LCD.c.

Slika 18: Izgled prozora nakon unešenog i sačuvanog koda

5. Kreirajmo još jedan tekstualni fajl (File > New > File).6. Unesimo tekst programa iz Listinga 2 u novo kreirani fajl.

Listing 2:

//******************************************************************************// // // // ACLK = 32.768kHz, MCLK = SMCLK = default DCO//// MSP430FG4618// -----------------------// /|\| |// | | P2.2|-->LED1// --|RST P2.1|-->LED2

35

Page 36: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

// | P5.1|-->LED4// | |// SW1-->|P1.0 | SoftBaugh SBLCDA4 4-mux LCD// SW2-->|P1.1 P10.5/S4|-->S0-->PIN14 (1A_1B_1C_1D)// | P10.4/S5|-->S1-->PIN13 (1F_1G_1E_DP1)// | P10.3/S6|-->S2-->PIN12 (2A_2B_2C_2D)// | P10.2/S7|-->S3-->PIN11 (2F_2G_2E_DP2)// | P10.1/S8|-->S4-->PIN10 (3A_3B_3C_3D)// | P10.0/S9|-->S5-->PIN9 (3F_3G_3E_COL3)// | P9.7/S10|-->S6-->PIN8 (4A_4B_4C_4D)// | P9.6/S11|-->S7-->PIN7 (4F_4G_4E_DP4)// | P9.5/S12|-->S8-->PIN6 (5A_5B_5C_5D)// | P9.4/S13|-->S9-->PIN5 (5F_5G_5E_COL5)// | P9.3/S14|-->S10->PIN4 (6A_6B_6C_6D)// | P9.2/S15|-->S11->PIN3 (6F_6G_6E_DP6)// | P9.1/S16|-->S12->PIN2 (7A_7B_7C_7D)// | P9.0/S17|-->S13->PIN1 (7F_7G_7E_DP7)// | P8.7/S18|-->S14->PIN19 (F5_PR_P4_P3)// | P8.6/S19|-->S15->PIN20 (F1_F2_F3_F4)// | P8.5/S20|-->S16->PIN21 (PL_P0_P1_P2)// | P8.4/S21|-->S17->PIN22 (AU_AR_AD_AL)// | P8.3/S22|-->S18->PIN23 (BT_B1_B0_BB)// | P8.2/S23|-->S19->PIN24 (ANT_A2_A1_A0)// | P8.1/S24|-->S20->PIN25 (ENV_TX_RX_8BC)// | P8.0/S25|-->S21->PIN26 (DOL_ERR_MINUS_MEM)// | COM3|-->COM3 (COM3)// | COM2|-->COM2 (COM2)// | COM1|-->COM1 (COM1)// | COM0|-->COM0 (COM0)// | |//////******************************************************************************#include <Board.h>#include <LCD.h>

//// Deklaracija funkcija//void initBasicTimer(void);void initPortPins(void);

void main(void){ WDTCTL = WDTPW + WDTHOLD; // Zaustavljanje WDT-a FLL_CTL0 |= XCAP18PF; // Postavljanje ulazne kapacitivnosti za 32k kristal

36

Page 37: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

initPortPins(); // Inicializacija port pins initBasicTimer(); // Inicializacija basic tajmera initLCD_A(); // Inicializacija LCD_A-a

clrLCD(); for(;;) { _BIS_SR(LPM3_bits + GIE); // LPM3, dozvola prekida

testChar(); testSpecialChar(); testSigLvl(); testBatt(); testPwrLvl(); testFunc(); testArrow(); testSymbol(); }}

// Servisna Rutina prekida Tajmera#pragma vector=BASICTIMER_VECTOR__interrupt void basic_timer_ISR(void){ P2OUT ^= PIN2+PIN1; // Promena stanja pina P2.2,1 P5OUT ^= PIN1; // Promena stanja pina P5.1

LPM3_EXIT;}

//// Inicijalizacija pinova porta//void initPortPins(void){ P2DIR = PIN2+PIN1; // Postavljanje pina P2.2,1 kao izlaznog P5DIR = PIN1; // Postavljanje pina P5.1 kao izlaznog P2OUT = PIN1; // Postavljanje pina P2.1 na 1}

//// Inicijalizacija Tajmera//void initBasicTimer(void){ // Podešavanje Tajmera // Podešavanje takta na 32768/(256*128) // Dozvola BT prekida BTCTL = BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256; IE2 |= BTIE;

37

Page 38: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

}7. Sačuvajmo tekstualni fajl programa (File > Save) kao Board.c.

Slika 19: Izgled prozora nakon unešenog i sačuvanog koda

8. Kreirajmo novi radni prostor (File > New > Workspace)9. Kreirajmo novi projekat (Project > Create New Project). Pojaviće se Create New

Project dijalog prozor.

Slika 20: Create New Project dijalog prozor

Proverimo da li je Tool chain postavljen na MSP430, izaberimo Empty project iz ponuđenih projektnih šablona (Project Templates) i kliknimo OK. U standardnom Save As dijalog prozoru, naznačimo direktorijum gde želimo da smestimo projektni fajl, ili kreirajmo novi projektni direktorijum. Ukucajmo naziv projekta, LCD u polje

38

Page 39: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

za upis imena fajla i kliknimo Save da bismo kreirali novi projekat. Projekat će se pojaviti u radnom prozoru.

10. Dodajmo prethodno kreirane tekstualne fajlove programa projektu (Project > Add Files).Selektujmo željeni tekstualni fajl i kliknimo Open. Alternativno, kliknimo duplim klikom na fajl da ga dodamo projektu.

11. Sačuvajmo radni prostor (File > Save Workspace). Naznačimo ime radnog prostora i kliknimo Save.

12. Podesimo opcije projekta (Project > Options). Za svaku potkategoriju (General Options, C/C++ Compiler, Assembler, Linker, Debugger) prihvatimo polazne opcije Factory Settings sa sledećim izuzecima:

naznačimo ciljni uređaj (General Options > Target > Device) omogućimo asemblerski projekat ili C/asemblerski projekat (General Options

> Target > Assembler-only project). omogućimo generisanje izvršnog izlaznog fajla (General Options > Output >

Output file > Executable). za FET debagiranje, kliknimo Debugger > Setup > Driver > FET Debugger. naznačimo aktivni port koji se koristi za vezu sa FET-om (FET Debugger >

Setup > Connection).13. Debagirajmo aplikaciju korišćenjem C-SPY-a (Project > Debug). Ovim startujemo

C-SPY i on preuzima kontrolu nad uređajem, briše memoriju, zatim je programira aplikacijom i resetuje uređaj.

Slika 21: Osnovni prozor C-SPY Debugger-a

39

Page 40: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

14. Kliknimo Debug > Go da startujemo aplikaciju.15. Kliknimo Debug > Stop Debugging da stopiramo aplikaciju, izađemo iz C-SPY-a i

vratimo se u Workbench.16. Kliknimo File > Exit da izađemo iz Workbench-a.

40

Page 41: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

LABORATORIJSKA VEŽBA III- A/D konvertor -

- Konverzija analognog napona dovedenog na ulaz A/D konvertora mikrokontrolera MSP430-

41

Page 42: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Uvod:

U mikrokontroleru MSP430FG4618 nalazi se ADC12 modul koji predstavlja 12-to bitni A/D konvertor.

Karakteristike ADC12 modula: Maksimalna brzina konverzije preko 200-ksps 12-to bitni konvertor sa monotonom karakteristikom bez preskakanja kodova Sample-and-hold sa programabilnim periodom semplovanja kontrolisan od strane

softvera ili tajmera Softversko podešavanje referentnog napona (1,5 V ili 2,5 V) Osam eksternih ulaznih kanala koji se individualno konfigurišu Kanali konverzije za interni temperaturni senzor AVcc Nezavisna selekcija kanala i za pozitivni i za negativni referentni napon Podešavanje izvora takta konverzije Registri vektora prekida za brzo dekodiranje 18 mogućih izvora prekida ADC-a 16 registara za čuvanje rezultata konverzije

Slika 22: Blok dijagram ADC12 modula

A/D konvertor vrši konverziju analognog ulaza u odgovarajući 12-to bitni digitalni oblik i tako dobijeni rezultat konverzije se smešta u memoriju. Da bi se odredile gornja i donja granica konverzije koriste se programabilni naponski nivoi i . Vrednost digitalnog izlaza ( ) ima vrednost pune skale (0FFFh) kada je ulazni signal jednak ili veći

42

Page 43: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

od , a kada je vrednost ulaznog signala jednaka ili manja od vrednost digitalnog izlaza je 0. Ulazni kanali i referentni naponski nivoi i su definisani u upravljačkoj memoriji konverzije.

Vrednost digitalnog izlaza pri A/D konverziji se može izračunati pomoću formule:

Zadatak:

Izvršiti konverziju analognog napona dovedenog na ulaz A/D konvertora mikrokontrolera MSP430 i izračunati grešku linearnosti

Na pin P6.0 (A0) dovodimo napone od 0V do 5V u koracima od 0.5V. Za svaku vrednost napona pročitati vrednost registra ADC12MEM0 i upisati je u tabelu. Po završenom merenju računamo relativnu i apsolutnu grešku.

Potrebna oprema:

Za izvođenje ove laboratorijske vežbe potrebno nam je:

razvojna ploča MSP430FG4618/F2013

računar

Flash Emulation Tool(MSP-FET430UIF) kojim ćemo razvojnu ploču povezati na računar i izvršiti programiranje kontrolera MSP430FG4618

izvor analognog napona u opsegu od 0V do 5V

Postupak rada:

1. Povežimo USB konektor MSP-FET430UIF-a na računar.2. Povežimo JTAG konektor MSP-FET430UIF-a na JTAG1

3. Priključimo izvor analognog napona u opsegu od 0V do 5V na pin P6.04. Kreirajmo novi projekat u programu IAR Embedded Workbench IDE-u.

Da bismo kreirali novi projekat, napisali program, učitali ga i izvršili na MSP430 uređajima, potrebno je da ispratimo sledeću proceduru:

1. Pokrenimo IAR Embedded Workbench. Kliknimo na Start dugme na taskbar-u i izaberimo All Programs > IAR Systems > IAR Embedded Workbench for MSP430 V4 > IAR Embedded Workbench.

43

Page 44: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 23: Osnovni prozor IAR Embedded Workbench IDE-a

2. Kreirajmo novi tekstualni fajl (File > New > File).

Slika 24: Kreiranje novog tekstualnog fajla u IAR Embedded Workbench IDE-u

44

Page 45: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

3. Unesimo tekst programa iz Listinga 1 u novo kreirani fajl.

Listing 1:

//******************************************************************************// // U ovom primeru je moguće videti upotrebu internog referentnog napona // samog ADC12. Koristi se unutrašnja referenca vrednosti 2.5V i vrši se // jedna konverzija na kanalu A0. Rezultat konverzije se smešta u ADC12MEM0. // Na ulaz kanala A0 (P6.0) dovesti napon vrednosti do 5V, a zatim startovati // tačku prekida na liniji "__no_operation()".// Da bi videli rezultat konverzije, potrebno je otvoriti proz sa registrima // u Dibag režimu rada kako bi videli vrednost upisanu u ADC12MEM0.// ACLK = 32kHz, MCLK = SMCLK = default DCO 1048576Hz, ADC12CLK = ADC12OSC////// MSP430xG461x// ---------------// | XIN|-// | 32kHz// Vin -->|P6.0/A0 XOUT|-// | |//////******************************************************************************#include "msp430xG46x.h"

volatile unsigned int i;

void main(void){ WDTCTL = WDTPW + WDTHOLD; // Zaustavljanje watchdog-a P6SEL |= 0x01; // Dozvola za upotrebu A/D kanala A0 ADC12CTL0 = REFON + REF2_5V + ADC12ON + SHT0_2; // Uključivanje 2.5V referentnog // postavljanje vremena semplovanja ADC12CTL1 = SHP; // Sample/Hold pulsni režim rada ADC12MCTL0 = SREF_1; // Vr+=Vref+

for (i = 0x3600; i; i--); // Kašnjenje potrebno za uspostavljanje // referentnog napona ADC12CTL0 |= ENC; // Dozvoli konverziju

while (1) { ADC12CTL0 |= ADC12SC; // Startuj konverziju while (!(ADC12IFG & 0x0001)); // Da li je gotova konverzija? ADC12MEM0; // Pristup memoriji u kojoj se nalazi rezultat __no_operation(); // Postaviti tačku prekida ovde }}

45

Page 46: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Napomena: Koristimo fajlove sa ekstenzijom .h da pojednostavimo upis kôda.KickStart sadrži fajlove koji definišu registre i imena bitova, za svaki uređaj i oni mogu mnogo da pojednostave razvoj programa. Ovi fajlovi se nalaze u <Installation Root>\Embedded Workbench x.x\430\inc. Uključimo odgovarajući .h fajl, za ciljni uređaj, u tekst fajl (#include "msp430xyyy.h"). Dodatno, postoje i io430xxxx.h fajlovi koji su optimizovani za C izvorne fajlove.

4. Sačuvajmo tekstualni fajl programa (File > Save) kao main.c.

Slika 25: Izgled prozora nakon unešenog i sačuvanog koda

5. Kreirajmo novi radni prostor (File > New > Workspace)6. Kreirajmo novi projekat (Project > Create New Project). Pojaviće se Create New

Project dijalog prozor.

Slika 26: Create New Project dijalog prozor

46

Page 47: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Proverimo da li je Tool chain postavljen na MSP430, izaberimo Empty project iz ponuđenih projektnih šablona (Project Templates) i kliknimo OK. U standardnom Save As dijalog prozoru, naznačimo direktorijum gde želimo da smestimo projektni fajl, ili kreirajmo novi projektni direktorijum. Ukucajmo naziv projekta, ADC u polje za upis imena fajla i kliknimo Save da bismo kreirali novi projekat. Projekat će se pojaviti u radnom prozoru.

7. Dodajmo prethodno kreirani tekstualni fajl programa projektu (Project > Add Files).Selektujmo željeni tekstualni fajl i kliknimo Open. Alternativno, kliknimo duplim klikom na fajl da ga dodamo projektu.

8. Sačuvajmo radni prostor (File > Save Workspace). Naznačimo ime radnog prostora i kliknimo Save.

9. Podesimo opcije projekta (Project > Options). Za svaku potkategoriju (General Options, C/C++ Compiler, Assembler, Linker, Debugger) prihvatimo polazne opcije Factory Settings sa sledećim izuzecima:

naznačimo ciljni uređaj (General Options > Target > Device) omogućimo asemblerski projekat ili C/asemblerski projekat (General Options

> Target > Assembler-only project). omogućimo generisanje izvršnog izlaznog fajla (General Options > Output >

Output file > Executable). za FET debagiranje, kliknimo Debugger > Setup > Driver > FET Debugger. naznačimo aktivni port koji se koristi za vezu sa FET-om (FET Debugger >

Setup > Connection).10. Debagirajmo aplikaciju korišćenjem C-SPY-a (Project > Debug). Ovim startujemo

C-SPY i on preuzima kontrolu nad uređajem, briše memoriju, zatim je programira aplikacijom i resetuje uređaj.

47

Page 48: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 27: Osnovni prozor C-SPY Debugger-a

11. Na pin P6.0 (A0) dovodimo napone od 0V do 5V u koracima od po pola volta. Zatim kliknemo na Debug > Go kako bi startovali aplikaciju i pročitali vrednost registra ADC12MEM0, i tako za svaki napon koji dovodimo na ulaz AD konvertora.

Da bismo otvorili Register prozor kliknimo View > Register.

48

Page 49: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 28: Register prozorVrednosti koje pročitamo iz registra upisujemo u tabelu i po završenom merenju računamo relativnu i apsolutnu grešku.

[V] N U [V] Δ [V] δ [%]0V0.5V1V1.5V2V2.5V3V3.5V4V4.5V5V

- ulazni napon u opsegu od 0V do 5VN- isčitana vrednost iz registraU- vrednost napona koju računamo iz formule:

gde je napon pune skale i iznosi 5V

Δ- apsolutna greška koju računamo iz formule:

δ- relativna greška koju računamo iz formule:

49

Page 50: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

12. Kliknimo Debug > Stop Debugging da stopiramo aplikaciju, izađemo iz C-SPY-a i vratimo se u Workbench.

13. Kliknimo File > Exit da izađemo iz Workbench-a.

LABORATORIJSKA VEŽBA IV D/A konvertor -

Izračunavanje greške linearnosti D/A konvertora mikrokontrolera MSP430

50

Page 51: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Uvod: U mikrokontroleru MSP430FG4618 nalazi se DAC12 modul koji predstavlja 12-to bitni digitalno-analogni konvertor. DAC12 modul može biti podešen da radi u 8-mo bitnom ili 12-to bitnom režimu rada. Može se koristiti u sprezi sa DMA kontrolerom.

Karakteristike DAC12 modula su:12-to bitna monotona izlazna funkcija8-mo bitna ili 12-to bitna rezolucija izlaznog naponaprogramabilno podešavanje vremena konverzije nasuprot potrošnji energijeunutrašnja i spoljašnja selekcija referentnog naponapodaci su u jediničnom ili u formatu dvoičnog komplementaopcija automatske korekcije ofseta

Sledeća tabela prikazuje opseg pune skale DAC12 u 8-mo bitnoj ili 12-to bitnoj rezoluciji izlaznog napona.

Na sledećoj slici je data prenosna karakteristika u 12-to bitnom režimu rada za podatke u jediničnom komplementu.

51

Page 52: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Na sledećoj slici je data prenosna karakteristika u 12-to bitnom režimu rada za podatke u dvoičnom komplementu.

Zadatak:Izračunavanje greške linearnosti D/A konvertora mikrokontrolera MSP430.

Grešku linearnosti D/A konvertora izračunavamo na osnovu poznatih, očekivanih vrednosti na izlazu D/A konvertora i dobijenih, izmerenih vrednosti pomoću formule:

gde je yi izmerena i-ta vrednost napona na izlazu D/A konvertora na pinu P6.6 za odgovarajuću digitalnu vrednost xi na ulazu D/A konvertora, ymax najveća vrednost izlaza, a a i b su nagib i odsečak prave.

U ovoj laboratorijskoj vežbi koristimo 12-to bitni D/A konvertor, pa je na prenosnoj karakteristici maksimalna vrednost na X-osi 4095.

Maksimalni izlazni napon D/A konvertora je 2.5V, pa je na prenosnoj karakteristici maksimalna vrednost na Y-osi 2.5.

52

Page 53: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Očekivane vrednosti na izlazu D/A konvertora očitavamo sa slike

Potrebna oprema:

Za izvođenje ove laboratorijske vežbe potrebno nam je:

razvojna ploča MSP430FG4618/F2013

računar

Flash Emulation Tool(MSP-FET430UIF) kojim ćemo razvojnu ploču povezati na računar i izvršiti programiranje kontrolera MSP430FG4618

univerzalni merni uređaj kojim ćemo da izmerimo dobijene rezultate.

Postupak rada:

1. Povežimo USB konektor MSP-FET430UIF-a na računar.

2. Povežimo JTAG konektor MSP-FET430UIF-a na JTAG1

3. Kreirajmo novi projekat u programu IAR Embedded Workbench IDE-u.

Da bismo kreirali novi projekat, napisali program, učitali ga i izvršili na MSP430 uređajima, potrebno je da ispratimo sledeću proceduru:

53

Page 54: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

1. Pokrenimo IAR Embedded Workbench. Kliknimo na Start dugme na taskbar-u i izaberimo All Programs > IAR Systems > IAR Embedded Workbench for MSP430 V4 > IAR Embedded Workbench.

Slika 29: Osnovni prozor IAR Embedded Workbench IDE-a

2. Kreirajmo novi tekstualni fajl (File > New > File).

Slika 30: Kreiranje novog tekstualnog fajla u IAR Embedded Workbench IDE-u

54

Page 55: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

3. Unesimo tekst programa iz Listinga 1 u novo kreirani fajl.

Napomena: Koristimo fajlove sa ekstenzijom .h da pojednostavimo upis kôda.KickStart sadrži fajlove koji definišu registre i imena bitova, za svaki uređaj i oni mogu mnogo da pojednostave razvoj programa. Ovi fajlovi se nalaze u <Installation Root>\Embedded Workbench x.x\430\inc. Uključimo odgovarajući .h fajl, za ciljni uređaj, u tekst fajl (#include "msp430xyyy.h"). Dodatno, postoje i io430xxxx.h fajlovi koji su optimizovani za C izvorne fajlove.

Listing 1:

//******************************************************************************// U ovom primeru je iskorišćen DAC12_0 modul i 2.5V ADC12REF referentni// napon, sa pojačanjem 1, kako bi na izlazu P6.6 dobili pozitivnu rampu. // Normalni režim rada je LPM0 uz isključen CPU. WDT se koristi kako// bi omogućio ~0.5ms prekid kojim se budi CPU i programski upisuje // vrednost DAC.// ACLK = 32kHz, SMCLK = MCLK = WDTCLK = podrazumevane vrednosti////// MSP430xG461x// -----------------// /|\| XIN|-// | | | 32kHz// --|RST XOUT|-// | |// | DAC0/P6.6|--> pozitivna_rampa// | |////******************************************************************************#include "msp430xG46x.h"

void main(void){ WDTCTL = WDT_MDLY_0_064; // WDT ~0.064ms vremenskog intervala IE1 |= WDTIE; // Dozvoli WDT prekid ADC12CTL0 = REF2_5V + REFON; // Unutrašnji ref. napon 2.5V TACCR0 = 13600; // Kašnjenje potrebno za smirivanje // referentnog napona TACCTL0 |= CCIE; // Prekid režima poređenja (Compare) TACTL = TACLR + MC_1 + TASSEL_2; // režim na gore (up), SMCLK je odabran __bis_SR_register(LPM0_bits + GIE); // Uđi u LPM0, dozvoli prekide TACCTL0 &= ~CCIE; // Zabrani prekide tajmera __disable_interrupt(); // Opšta zabrana prekida

55

Page 56: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

DAC12_0CTL = DAC12IR + DAC12AMP_5 + DAC12ENC; // UNUTRAŠNJE POJAČANJE = 1

while (1) { __bis_SR_register(LPM0_bits + GIE); // Uđi u LPM0, dozvoli prekide DAC12_0DAT++; // Pozitivna rampa DAC12_0DAT &= 0x0FFF; }}

#pragma vector = TIMERA0_VECTOR__interrupt void TA0_ISR(void){ TACTL = 0; // Resetuj vrednost u kontrolnom registru Timer_A __bic_SR_register_on_exit(LPM0_bits); // Izađi iz LPM0, dozvoli interapte}

#pragma vector = WDT_VECTOR__interrupt void WDT_ISR(void){ __bic_SR_register_on_exit(LPM0_bits); // TOS = resetuj LPM0}

4. Sačuvajmo tekstualni fajl programa (File > Save) kao main.c.

Slika 31: Izgled prozora nakon unešenog i sačuvanog koda

5. Kreirajmo novi radni prostor (File > New > Workspace)6. Kreirajmo novi projekat (Project > Create New Project). Pojaviće se Create New

Project dijalog prozor.

56

Page 57: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 32: Create New Project dijalog prozor

Proverimo da li je Tool chain postavljen na MSP430, izaberimo Empty project iz ponuđenih projektnih šablona (Project Templates) i kliknimo OK. U standardnom Save As dijalog prozoru, naznačimo direktorijum gde želimo da smestimo projektni fajl, ili kreirajmo novi projektni direktorijum. Ukucajmo naziv projekta, DAC u polje za upis imena fajla i kliknimo Save da bismo kreirali novi projekat. Projekat će se pojaviti u radnom prozoru.

7. Dodajmo prethodno kreirani tekstualni fajl programa projektu (Project > Add Files).Selektujmo željeni tekstualni fajl i kliknimo Open. Alternativno, kliknimo duplim klikom na fajl da ga dodamo projektu.

8. Sačuvajmo radni prostor (File > Save Workspace). Naznačimo ime radnog prostora i kliknimo Save.

9. Podesimo opcije projekta (Project > Options). Za svaku potkategoriju (General Options, C/C++ Compiler, Assembler, Linker, Debugger) prihvatimo polazne opcije Factory Settings sa sledećim izuzecima:

naznačimo ciljni uređaj (General Options > Target > Device) omogućimo asemblerski projekat ili C/asemblerski projekat (General Options

> Target > Assembler-only project). omogućimo generisanje izvršnog izlaznog fajla (General Options > Output >

Output file > Executable). za FET debagiranje, kliknimo Debugger > Setup > Driver > FET Debugger. naznačimo aktivni port koji se koristi za vezu sa FET-om (FET Debugger >

Setup > Connection).10. Debagirajmo aplikaciju korišćenjem C-SPY-a (Project > Debug). Ovim startujemo

C-SPY i on preuzima kontrolu nad uređajem, briše memoriju, zatim je programira aplikacijom i resetuje uređaj.

57

Page 58: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Slika 33: Osnovni prozor C-SPY Debugger-a

11. Upisujemo u registar DAC12_0DAT vrednosti u heksadecimalnom kodu od 0V do 2.5V (0x0000 do 0x0FFF) sa korakom od pola volta. Zatim kliknemo na Debug > Go kako bi startovali aplikaciju i pomoću univerzalnog mernog instrumenta izmerili vrednost napona na izlazu iz D/A konvertora P6.6. Izmerene vrednosti upisujemo u tabelu i računamo grešku linearnosti D/A konvertora.

12. Kliknimo Debug > Stop Debugging da stopiramo aplikaciju, izađemo iz C-SPY-a i vratimo se u Workbench.

13. Kliknimo File > Exit da izađemo iz Workbench-a.

58

Page 59: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Biografije autora

Ime i prezime Milena Jovanović

Datum rođenja 31.08.1978.

Mesto rođenja Požega, Srbija

Obrazovanje završena osnovna škola u Kosjeriću

završena srednja škola: Gimnazija Sveti Sava u Požegi

trenutno apsolvent Elektronskog fakulteta u Nišu, smer Elektronika

Poznavanje rada na računaru Operativni sistemi: Windows XP, Linux Ubuntu

Strani jezik Engleski i poznavanje osnova ruskog

e-mail adresa [email protected]

59

Page 60: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Ime i Prezime Aleksandar Ristovic

Datum i mesto rođenja 25.10.1977, Kraljevo

Kontakt telefon 064/1528631

E-mail [email protected]

Obrazovanje El.teh.pogona (SSS), ESTŠ “Nikola Tesla” Kraljevoapsolvent elektronike, El.Fakultet Niš

60

Page 61: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Prezime: GligorijevićIme: JelenaDatum rođenja: 13.04.1980Nacionalnost: SrbinAdresa stanovanja: Vojvode Putnika 32, 18237 SokobanjaE-mail: [email protected] telefon: 063/88 54 222Obrazovanje: GimnazijaPoznavanje jezika: Poznavanje engleskog jezika

61

Page 62: Univerzitet u Nišues.elfak.ni.ac.rs/Files/J.Gligorijevic, S.Jovanovic, M... · Web view12-to bitna monotona izlazna funkcija 8-mo bitna ili 12-to bitna rezolucija izlaznog napona

Prezime: JovanovićIme: SrđanDatum rođenja: 07.12.1978Adresa stanovanja: Laze Lazarevića 1, 37000 KruševacE-mail: [email protected] jezika: Engleski; C/C++/C#

62