Transcript PDS

NRS NAMENSKI RAČUNARSKI SISTEMI PART 3 Autor: Nenad Jovičić

Projektni zadatak 2 Napisati C projekat za razvojni sistem RS MSP430F449 koji obezbe đuje serijsku vezu mikrokontrolera sa PC računarom. Brzina komunikacije treba da bude 2400 bit/s, bez bita parnosti i sa jednim stop bitom. Pritiskom na tastera potrebno je generisati slanje podatka u promenljivoj

data

. Sa druge strane, numerički jednocifreni podatak primljen preko serijske veze treba snimiti u promenljivu

data

i ispisati ga na sedmosegmentni LED displej.

Opis hardvera Razvojni sistem RS MSP430 poseduje više funkcionalnih celina od kojih su one interesantne za ovaj projekat prikazane na slici

Kreiranje projekta S obzirom da je tražena implementacija u C-u, u dijalogu kreiranja projekta se bira C-ovski template.

Osnovni fajl Predefinisani Template za C-ovski projekat je prikazan na slici

UART Podatak dužine 7 ili 8 bita i bit parnosti Nezavisan rad prijemnika i predajnika Baferisani prijemni i predajni registri Ugrađena podrška za multiprocesorsku komunikaciju Mogućnost buđenja iz LPMx moda na startnu ivicu signala na ulazu u prijemnik Mogućnost podešavanja brzine prenosa u širokom opsegu i sa velikom rezolucijom Hardverska detekcija greški u prenosu Dva nezvisna prekida prijemnika i predajnika

UART – blok šema

Format prenosa podatka

Baud rate generator

Baud rate generator Generator sadrži 16-bitni brojač, 16-bitni delitelj/preskaler i modulator Bitska učestanost BITCLK može biti najviše jedna trećina BRCLK Faktor N kojim se deli učestanost BRCLK u cilju dobijanje željene bitske učestanosti se dobija kao N=BRCLK/baud rate U opštem slučaju N nije ceo broj

Baud rate generator Ceo deo odnosa N se upisuje u UxBR registar a decimalni deo se predstavlja sa osam bita upisanih u registar UxMCTL

Algoritam

Inicijalizacija 1

Inicijalizacija 2

Inicijalizacija 3

Program

Program

Testiranje

Drugi pristup - UART prekidi UART poseduje dva odvojena prekidna vektora – jedan za prijemnik i drugi za predajnik Prekid prijemnika se događa kada je podatak primljen i upisan u UxRXBUF registar Prekid predajnika se događa kada je sadržaj predajnog registra UxTXBUF prebačen u izlazni pomerački registar i može se upisati novi podatak

Algoritam sa prekidima

Multiprocesorski mod UART daje mogućnost da se iz serijskog niza karaktera izdvajaju adrese i podaci Na taj način se omogućava paralelno vezivanje više uređaja (procesora) na serijsku magistralu Dva načina multiprocesorske komunikacije:  “idle line” protokol  protokol sa bitom markerom adrese

“idle line” protokol Jednom serijskom porukom se smatra niz karaktera koji se šalje u kontinuitetu tako da je vremensko rastojanje između dva karaktera manje od deset perioda serijskog takta Prvi karakter u nizu predstavlja adresu Niz karaktera koji slede su podaci Svaki vemenski razmak veći od deset perioda serijskog takta se smatra za kraj poruke

“idle line” protokol

“idle line” protokol Predajnik automatski generiše idle line stanje kada se setuje odgovarajući bit u kontrolnom registru Prijemnik može biti podešen da izaziva prekid samo po prijemu karaktera adrese, a da ostale karaktere ignoriše Po prijemu adrese u prekidnoj rutini se rekonfiguriše prijemnik za prijem podataka

Multiprocesorski mod sa adresnim bitom U okvir serijskog podatka koji sadrže 7 ili 8 bita može se dodati i deveti bit koji služi kao marker adrese kod serijske produžne magistrale Kao i kod idle_line moda prijemnik može biti podešen da izaziva prekid samo po prijemu karaktera adrese, a da ostale karaktere ignoriše Po prijemu adrese u prekidnoj rutini se rekonfiguriše prijemnik za prijem podataka

Multiprocesorski mod sa adresnim bitom

Greške u prenosu Prijemnik automatski prepoznaje geške u prenosu i setuje odgovarajuće flegove

SPI – serial peripheral interface USART modul podržava i sinhronu komunikaciju Sinhrona serijska komunikacija Fizički se ostvaruje korišćenjem tri pina SIMO, SOMI i UCLK U slučaju vezivanja više uređaja paralelno na magistralu koristi se i pin STE Podražava prenos 7 ili 8 bita podataka

USART u SPI modu

SPI – MSP kao Master

SPI – MSP kao Master Proces slanja počinje upisom podatka u UxTXBUF. Nakon toga podatak se prebacuje u pomerački registar i kreće slanje sa prvim bitom najveće težine. Uporedo sa slanjem podatka, od druge strane (slave) se dobija podatak koji se upisuje u prijemni pomerački registar. Po prijemu podatak se prebacuje iz pomeračkog registra u UxRXBUF i izaziva se prekid.

Operacije predaje i prijema podatka su povezane i funkcionišu isključivo u paru U slučaju više paralelno vezanih uređaja master je onaj koji na svom STE pinu ima visok logički nivo

SPI – MSP kao Slave

SPI – MSP kao Slave Podaci upisani u UxTXBUF i prebačeni u pomerački registar pre pojave takta od strane mastera se šalju preko SOMI linije Na suprotnu ivicu takta upisuju se podaci u ulazni pomerački registar Po prijemu svih bita izaziva se prekid Dok je nivo na STE pinu nizak SPI funkcioniše normalno. STE na visokom nivou zaustavlja prijem podataka, SOMI se konfiguriše kao ulazni pin

Generator takta

Kontrola takta

Prekidi Dva posebna prekida :   Jedan za prijemnik koji se događa po prijemu podatka u UxRXBUF Drugi za predajnik koji se događa kada je UxTXBUF spreman da primi sledeći podatak. Slanje upisanog podatka u UxTXBUF se startuje tek pošto se završi slanje prethodnog podatka.

I 2 C (inter-IC control) modul Prisutan kod podfamilije MSP430x1x kao deo USART0 modula Zadovoljava Philips-ov I 2 C standard v2.1

7-bitne ili 10-bitne adrese Master ili slave mod rada Prenos bajta ili reči Brzine prenosa do 400kb/s u fast modu Multi-master arbitracija Automatsko brojanje prenetih podataka Mogućnost startovanja i iz LPMx moda

I 2 C modul

I 2 C povezivanje na magistralu Svaki uređaj na magistrali može da radi i kao predajnik i kao prijemnik Svaki uređaj može takođe da bude ili master ili slave Svakom uređaju je dodeljena jedinstvena 7-bitna ili 10 bitna adresa

I 2 C signali na magistrali Master je onaj uređaj koji diktira takt SCL. Svi ostali su slave-ovi.

Master započinje prenos obaranjem SDA signala dok je takt SCL na visokom nivou (START) Prvi podatak u nizu je adresa, a posle nje idu podaci U zavisnosti od R/W bita master će u nastavku prenosa biti ili predajnik ili prijemnik Slave posle primljene adrese ili prijemnik posle svakog primljenog podatka izdaje odziv ACK (prijemnik može da bude ili master ili slave). ACK se generiše kao držanje niskog nivoa na SDA liniji dok je takt aktivan.

Po završetku prenosa master završava prenos podizanjem nivoa na SDA liniji dok je signal takta na visokom nivou (STOP)

Adresiranje 7-bitno adresiranje 10-bitno adresiranje

I 2 C Prekidi Jedan prekidni vektor je zajednički za sve izvore prekida Postoji osam različitih izvora prekida koji svi setuju posebne flegove Slično kao i kod tajmera postoji registar generator vektora I2CIV, koji se koristi za skok na početku prekidne rutine u zavisnosti od izvora prekida

Prekidi I 2 C

TO BE CONTINUED 