1 / 61

KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAČUNARA PREKO SERIJSKOG I USB PORTA

Elektronski fakultet Niš Katedra za elektroniku. KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAČUNARA PREKO SERIJSKOG I USB PORTA. Ana Andrejić 10434 Magdalena Ranđelović 10620. SERIJSKI PORT. Serijski port je bidirekcioni Razlikujemo -full-duplex -half-duplex

elke
Download Presentation

KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAČUNARA PREKO SERIJSKOG I USB PORTA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Elektronski fakultet Niš Katedra za elektroniku KOMUNIKACIJA MIKROKONTROLERA PIC18F4550 I RAČUNARA PREKOSERIJSKOG I USB PORTA Ana Andrejić 10434 Magdalena Ranđelović 10620

  2. SERIJSKI PORT • Serijski port je bidirekcioni • Razlikujemo -full-duplex -half-duplex • Serijski port se zasniva na UART kontrolerskom čipu

  3. Postoje dva glavna oblika serijskog prenosa -sinhroni -asinhroni

  4. Parametri RS232C standarda • Logička nula "SPACE" nalazi se u opsegu napona +3V do +25V • Logička jedinica "MARK" je u opsegu -3V do - 25V • Oblast između -3 do + 3 V nije definisana • Napon na kolu ne sme da pređe 25V u odnosu na masu (GND) • Struja kola ne sme preći 500 mA.

  5. Serijski port koristi dve vrste konektora: DSUB-25 i DSUB-9

  6. Prilikom serijskog prenosa podataka moguća je pojava sledećih vrsta grešaka: • Greška uokvirenja ili greška rama podatka (framing error). • Greška prekoračenja (overrun error). • Greška parnosti (parity error).

  7. USB standard • ciljne grupe uređaja i brzine koje se koriste u USB sistemu za prenos podataka

  8. Zašto je uveden USB standard? • rešenje u vezi ograničenja broja slotova na osnovnoj ploči kao i broja portova PC računara • jednostavno proširenja PC računara upotrebom softverskih drajvera • mogućnost napajanja eksternih uređaja koji malo troše od strane računara • omogućeno je priključenje do 127 eksternih uređaja na glavni USB port, pa se time rešava ograničenje koje je pre postojalo: jedan uređaj - jedan slot. • omogućene su velike brzine prenosa do 12 Mb/s • pojednostavljuju se kablovi za priključenje uređaja a njihova dužina se povećava • omogućena je kontrola potrošnje eksternih uređaja • podržano je autokonfigurisanje ovih uređaja po principu PnP detekcije novih uređaja u računaru.

  9. Ciljevi projektanata USB standarda • jednostavnost priključivanja uređaja na računar • robustnost prilikom prključivanja • cena koštanja uređaja

  10. USB kabl i konektori

  11. USB uređaji se dele na: • hub-ove • USB funkcije Veza između USB uređaja može se posmatratikao: • fizička veza • logička veza

  12. Komunikacioni tok u USB sistemu

  13. SPI KOMUNIKACIJA SPI (Serial Peripheral Interface) standard za sinhronu serijsku komunikaciju razvijen je od strane Motorolinih inženjera, za potrebu brzog i pouzdanog serijskog prenosa podataka na manjim rastojanjima (do 3m).

  14. SPI KOMUNIKACIJA • SPI (Serial Peripheral Interface) standard je definisala MOTOROLA. Prvobitno, ovaj standard je bio predviđen za komunikaciju sa perifernim uređajima, ali je vremenom razvijena i mogućnost komunikacije između više mikrokontrolera ili mikroprocesora . • Postoji široka paleta perifernih uređaja baziranih na SPI – od običnih TTL pomeračkih (shift) registara, do SPI memorija, displeja, A/D konvertora itd. • Motorolaje svoj serijski asinhroni/sinhroni interfejs nazvala “Serijski komunikacioni interfejs” (Serial Communications Interface, ili SCI). Odgovarajući Intel-ov serijski interfejs nosi naziv “Programibilni komu-nikacioni interfejs” (Programmable Communication Interface, ili PCI) itd.

  15. SPI KOMUNIKACIJA(master i 3 slave-a)

  16. SPI PROTOKOL • Pri SPI prenosu, podaci se šalju preko pomeračkog registra sa serijskim izlazom, a primaju preko pomeračkog registra sa serijskim ulazom. U bilo kom trenutku može da postoji jedan master, kako bi se osigurala ispravna komunikacija. • Kao što je prikazano na Slici potrebne su 4 linije, odnosno za SPI komu-nikaciju koriste se 4 pina: • MOSI (Master Output Slave Input). Kada mikrokontroler radi kao master, onda je ovo li-nija za slanje podataka, a kada radi kao slave – ovo je linija za primanje podataka. • MISO (Master Input Slave Output). Kada mikrokontroler radi kao master, onda je ovo linija za primanje podataka, a kada radi kao slave – ovo je linija za slanje podataka. U slučaju da je komunikacija isključivo jed-nosmerna, svakako da se može ostvariti sa tri linije (bez MOSI ili MISO, zavisno od slučaja).

  17. SPI PROTOKOL • SCK (SPI Clock). Ovo je linija za takt pod kojim se izvodi komunikacija. Takt daje master, a pomerački registar slave-a prima podatke, odnosno očitava ulaz na promenu ovog takta. • SS (Slave Select). Ovaj pin mikrokontrolera se veže na liniju za selek-tovanje slave-a. Kada mikrokontroler radi kao slave, i kada je ovaj (u slučaju ulazni) pin na visokom nivou, onda se takt sa SCK linije i podaci sa MOSI linije se ignorišu. Tek kada se dovede SS na nizak nivo, SPI sistem slave-a prati promene na pinovima koji su vezani za ovaj tip ko-munikacije i može da primi i pošalje informaciju. Kada mikrokontroler radi kao master, SS pin ima dve opcije. Može da se konfiguriše kao ulazni pin i da setuje određeni fleg (flag), tj. da inicira prekid u slučaju da mu bude doveden nizak nivo. To je dobra opcija za međuprocesor-sku komunikaciju. Na ovaj način može uspešno da se eliminiše moguć-nost da više mikrokontrolera u datom trenutku pokušaju da budu masteri. Ovo se rešava softverski.

  18. DIGITALNI POTENCIOMETAR SA SPI INTERFEJSOM

  19. Karakteristike • 256 izvoda za svaki potenciometar • Vrednosti potenciometra od 10 kΩ, 50kΩ i 100 kΩ • Pojedinačne i dual verzije • SPI serijski interfejs (modovi 0, 0 i 1,1) • ±1 LSB max INL & DNL • CMOS tehnologija male snage • Maksimalna struja napajanja od 1µA prilikom izvršenja operacija u statičkom režimu rada • Omogućeno povezivanje (ulančavanje) više uređaja (samo MCP42XXX) • Mogućnost shutdown-a otvorenih kola svih otpornika radi maksimalne uštede energije • Hardverski shutdown putem pina dostupan samo na MCP42XXX • Operiše sa jednim napajanjem (2.7 – 5.5V) • Industrijski temperaturni opseg: -40 C – +85 C • Prošireni temperaturni opseg: -40 C – +125 C

  20. Opis pinova kod MCP41XXX

  21. Opis pinova kod MCP42XXX

  22. Aplikacije digitalnogpotenciometra mogu se podeliti u dve kategorije: • reostatski mod i • potenciometarski, ili mod delitelja napona.

  23. MIKROKONTROLER PIC18F4550 Karakteristike USB modula • Fleksibilan USB 2.0 standard • Brzine: Low Speed (1.5 Mb/s) i Full Speed (12 Mb/s) • Podržava kontrolni, prekidni, izohroni i bulk transfer • Podržava do 32 krajnje tačke, odnosno16 bidirekciono • 1Kbit-ni dvostruki pristup RAM memoriji za USB • Unutar mikrokontrolera je integrisan USB primopredajnik sa sopstvenim regulatorom napona • Interfejs za spoljašnji USB primopredajnik • Protočni paralelni port (Streaming Parallel Port) za (protočni) USB prenos.

  24. Režimi rada • Run mode: i CPU i periferija su uključeni • Idle mode: CPU je isključen a periferija uključena • Sleep mode: i CPU i periferija su isključeni • Idle mode – struja je do 5.8 μA • Sleep mode – struja je do 0.1 μA • Oscilator Timer1: 1.1 μA, 32 kHz, 2V • Watchdog tajmer: 2.1 μA • Dvobrzinski startni oscilator.

  25. Raspored pinova mikrokontrolera PIC18F4550 u kućištu DIP-40

  26. Struktura fleksibilnog oscilatora • Četiri kristalna moda uključujući i visoko precizni PLL za USB • Dva spoljašnja taktna moda, do 48 MHz • Unutrašnji oscilator - 8 frekvencija koje bira korisnik, od 31 kHz do 8 MHz - Podešavanje koje bira korisnik zbog kompenzacije frekvencijskog drifta • Sekundarni oscilator koristi Timer1 • Opcije dvostrukog oscilatora omogućavaju mikrokontroleru i USB modulu da radi na različitim taktnim brzinama • Fail-Safe taktni monitor omogućava bezbedno isključivanje ukoliko se neki takt zaustavi

  27. Ostale specijalne karakteristike • Izdržljivost memorije • Mogućnost samoprogramiranja • Prošireni set instrukcija • Proširen CCP modul • Proširen USART • 10-bitni A/D Konvertor • Rezervisan ICD/ICSP Port

  28. Arhitektura mikrokontrolera PIC18F4550

  29. Organizacija memorije Memorija mikrokontrolera PIC18F4550 je organizovana u sledeće tri celine: • Programska memorija • Memorija podataka (RAM) • EEPROM memorija podataka.

  30. Programska memorija i magacin

  31. USB modul mikrokontrolera

  32. mikroC

  33. mikroC - karakteristike • Ovde ćemo navesti osnovne karakteristike softvera: • Pisanje C kôda korišćenjem kvalitetnog i preglednog editora • Preglednost strukture programa (kôda), promenljivih i funkcija omogućava • Codeexplorer • Jasan asemblerski kôd i standardna kompatibilnost generisanih HEX datoteka • toka programa preko ugrađeg debagera (debugger) • Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje • značajno ubrzavaju pisanje programa • Detaljan izveštaj i grafičko predstavljanje RAM i ROM mape, statistike kôda i sl.

  34. PROJEKAT Za komunikaciju PC računara i mikrokontrolera koriste se alati unutarsoftvera mikroC: USART Terminal (za komunikaciju preko serijskog porta), HID Terminal (za komunikaciju preko USB porta računara). (HID je skraćenica od Human Interface Device)

  35. PROJEKAT – blok šema

  36. PROJEKAT - električna šema

  37. PROJEKAT raspored komponenti

  38. PROJEKAT - štampana ploča

  39. PROJEKAT - algoritam

  40. Algoritam - 1. blok Na samom početku treba definisati varijable i i j, koje se koriste u programu. Obe varijable su 8-bitne i «nose» informaciju o naponu koji se meri preko internog A/D konvertora mikrokontrolera. A1:A0 se definišu kao analogni ulazi Porta A (na njih se dovodi analogni naponi sa digitalnog i obrtnog potenciometra, respektivno), dok se A5:A2 definišu kao digitalni ulazi Porta A (pin A5 se ne koristi, na pin A4 je povezan START taster T2, dok je na pinove A3:A2 povezan DIPSW2 prekidač). Dakle, treba definisati ulaze i izlaze Porta A preko TRISA (adresa F92h) i koji su pinovi analogni ulazi, a koji digitalni (adresa FC1h).

  41. Algoritam - 2. blok Da bi se koristili USART, SPI i USB modul mikrokontrolera (videti Sliku 21), neophodno je da se izvrši njihova inicijalizacija. U okviru softvera mikroC postoje „integrisane” biblioteke koje omogu-ćavaju komunikaciju USART i SPI modula. Za aktiviranje pomenuta dva modula koriste se instrukcije Usart_Init() i SPI_Init (), respektivno. (Adresni prostor koji je rezervisan za inicijalizaciju: 060h-3FFh.) Kada je u pitanju USB modul, koristi se poseban potprogram koji se nalazi u fajlu USBdsc.c –zahvaljujući kome je omogućeno da se mikrokontroleru od strane računara pristupa kao HID (Human Interface Device) uređaju .

  42. Algoritam - 3. blok Definisano je da kada mikrokontroler primi podatak sa serijskog porta računara, isti podatak treba da prosledi ka USB portu. Naime, podatak koji se pošalje iz USART terminala prihvata USART modul mikrokontrolera i preko USB modula ga ka HID terminalu (oba softverska terminala su opisana u 6. poglavlju rada). (Za operacije sa USB modulom mikrokontrolera rezervisane su adrese 0400h-7FFh u koje se smešta potprogram USBdsc.c.)

  43. Algoritam - 4. blok Zavisno od stanja na pinu A4 mikrokontrolera, mikrokontroler će ispitati stanje prekidača DIPSW2 (naredni korak) ili će preskočiti ispitivanje. Za ovo ispitivanje se koristi standardna if petlja. Ukoliko je T2 pritisnut (PA4=0), onda se ispituje stanje DIPSW2 prekidača, a ako nije pritisnut „pres-kače” se procedura ispitivanja stanja DIPSW2 prekidača i prelazi se na blok kašnjenja (1s). (Adresni prostor koji je rezervisan za ove operacije je 060h-3FFh.)

  44. Algoritam - grupa blokova Kada se ispituje stanje DIPSW2 prekidača, relevantna su 3 stanja (00, 01 i 10), dok stanje 11 ne proizvodi nikakav efekat, tj. prelazi se na blok kašnjenja (1s). Ako je DIPSW2=00, mikrokontroler preko SPI modula (koji je softverski implementiran), od-ređuje vrednost ofseta (za stanje digitalnog potenciometra 00000000) i napona pune skale (za stanje digitalnog potenciometra 11111111). Oba podatka se šalju preko USART modula mikrokontrolera ka USART terminalu.

  45. Algoritam - grupa blokova Ako je DIPSW2=01, mikrokontroler preko svog A/D konvertora meri napon na obrtnom poten-ciometru – varijabla i, a zatim ga šalje preko USART modula ka USART terminalu. Ako je DIPSW2=10, mikrokontroler preko svog A/D konvertora meri napon ofseta A/D konver-tora (preko digitalnog potenciometra) – varijabla j , a zatim i na obrtnom potenciometru – varijabla i. Kompenzacija ofseta se, dakle, vrši softverski (i:=i-j), a zatim se napon obrtnog potenciometra sa kompenzovanim ofsetom (i) šalje preko USART modula ka USART terminalu.

  46. Algoritam - 5. blok U okviru svakog obilaska beskonačne petlje nalazi se blok kašnjenja kojim je definisano kašnje-nje od 1 sekunde (1000ms). Projektovano vreme od 1s je izvršeno na osnovu vremena potrebnog da se pritisne taster. (Tokom pisanja programa, prvobitno je ovo vreme projektovano na 500ms, zatim na 800ms, da bi se kao optimalno izabralo vreme od 1000ms.)

  47. Program u mikroC-u 1/3 // (adresni prostor 060h-3FFh) unsigned char userWR_buffer[1]; // Definisanje ulaznog bafera USB porta unsigned short i; // Definisanje 8/bitne varijable i unsigned short j; // Definisanje 8/bitne varijable j // Pozivanje glavne prekidne rutina (iz USBdsc) void interrupt() { HID_InterruptProc(); // (adresni prostor 0400h-7FFh) } // Pocetak glavnog programa void main() { // (adresni prostor 060h-3FFh) TRISA = 0b111111; // Definisanje svih pinova Porta A kao ulaznih (adresa F92h) ADCON1 = 13; // Pinovi A5:A0 su digitalni, a A1:A0 analogni (adresa FC1h) Usart_Init(2400); // Inicijalizacija USART modula (adresni prostor 060h-3FFh) SPI_Init (); // Inicijalizacija SPI modula, standardni parametri HID_Enable(&userWR_buffer, &userWR_buffer); // Dozvola za upisni USB bafer (adresni // prostor 0400h-7FFh)

  48. Program u mikroC-u 2/3 // (adresni prostor 060h-3FFh) do { if (Usart_Data_Ready()) { // Kada mikrokontroler primi podatak od USART terminala, i = Usart_Read(); // memoriše ga u varijablu i, Usart_Write(i); // zatim primljeni podatak vraća ka USART terminalu i HID_Write(&i, 1); //ujedno ga prosledjuje ka HID terminalu (adresni // prostor 0400h-7FFh) } // (adresni prostor 060h-3FFh) if (PORTA.F4 == 0) { //Ako je taster T2 pritisnut, if (PORTA.F2 == 0 && PORTA.F3 == 0) { // i ako vazi uslov, SPI_Write(0x00); i = ADC_Read(1) >> 2; // procitaj vrednost ofseta preko SPI Usart_Write(i); // i posalji ka USART terminalu, SPI_Write(0xFF); i = ADC_Read(1) >> 2; // procitaj vrednost napona pune skale preko SPI Usart_Write(i); // i posalji ka USART terminalu; } // Dva bita najmanje tezine se odbacuju (>>2)

  49. Program u mikroC-u 3/3 if (PORTA.F2 == 0 && PORTA.F3 == 1) { // i ako vazi uslov, i = ADC_Read(0) >> 2; // procitaj vrednost napona na obrtnom potenciometru Usart_Write(i); // i posalji 8-bitni podatak ka USART terminalu; } if (PORTA.F2 == 1 && PORTA.F3 == 0) { // i ako vazi uslov, j = ADC_Read(1); // procitaj vrednost ofseta i = ADC_Read(0); // procitaj vrednost napona na obrtnom // potenciometru i = i - j; // izvrsi kompenzaciju ofseta i = i >> 2; // Odbaci dva bita najmanje tezine (>>2) Usart_Write(i); // i posalji podatak ka USART terminalu; } } Delay_ms(1000); // Kašnjenje 1s (1000 ms) } while (1); // Kraj beskonacne petlje HID_Disable(); // Zabrana za upisni USB bafer }

  50. DETEKCIJA HID UREĐAJA

More Related