510 likes | 1.04k Views
ELEKTRONSKI FAKULTET SEMINARSKI RAD IZ MIKROPROCESORA MENTOR: PROF. DR MILE STOJČEV. KOMUNIKACIJA MIKROKONTROLERA PIC16F877- 20 PREKO SPI MODULA. Du šan Đorđević 10797 Žarko Đorđević 10798. SADRŽAJ. O SEMINARSKOM RADU MIKROKONTROLERI I EMBEDDED SISTEMI SPI KOMUNIKACIJA PIC16F877
E N D
ELEKTRONSKI FAKULTETSEMINARSKI RAD IZ MIKROPROCESORAMENTOR: PROF. DR MILE STOJČEV KOMUNIKACIJA MIKROKONTROLERA PIC16F877-20 PREKO SPI MODULA Dušan Đorđević 10797 Žarko Đorđević 10798 Komunikacija PIC16F877-20 preko SPI
SADRŽAJ • O SEMINARSKOM RADU • MIKROKONTROLERI I EMBEDDED SISTEMI • SPI KOMUNIKACIJA • PIC16F877 • SOFTVER ZA PIC MIKROKONTROLERE • KOMUNIKACIJA MIKROKONTROLERA PREKO SPI MODULA:PRAKTIČNA REALIZACIJA • LABORATORIJSKA VEŽBA • ZAKLJUČAK • KORIŠĆENA LITERATURA • PRILOG • O AUTORIMA SEMINARSKOG RADA Komunikacija PIC16F877-20 preko SPI
O SEMINARSKOM RADU • Autori su realizovali ovaj projekat u nameri da studentima približe jedan od način kako mogu da komuniciraju dva mikrokontrolera PIC16F877-20. Ovde je za komunikaciju iskorišćen serijski komu-nikacioni modul SPI koji je integrisan u mikrokontrolerima. • Mikrokontroleri su programirani preko AllPIC programatora o kojem je priložen kompletan članak na kraju rada, a za pisanje programa korišćen je softver mikroC, koji je razvila i ponudila tržištu beogradska Mikroelektronika. • Električna šema i dizajn štampane pločice (PCB) su kreirani u Protel-u. • Realizovanje štampane pločice na vitroplastu je urađeno u niškoj firmi «Denitron» i ovom prilikom se zahvaljujemo gospodinu Draganu Deniću na ekspeditivnosti i kvalitetu izrade. • Posebnu zahvalnost dugujemo profesoru Miletu Stojčevu što nam je pružio priliku da realizujemo ovaj projekat. Komunikacija PIC16F877-20 preko SPI
MIKROKONTROLERIMIKROPROCESOR Razlike između mikrokontrolera i mikroprocesora: • Mikroprocesori su najcešće CISC tipa, tako da za kopiranje podataka iz spoljašnje memorije koriste veći broj opkôdova, dok mikrokontroleri jedan ili dva, • Za manipulisanje sa podacima tipa bit, mikroprocesori koriste jedan ili dva tipa instrukcija, dok je kod mikrokontrolera taj broj veći, • Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno adresiranih lokacija u čip, dok se kod mikrokontrolera brzi prenos bitova obavlja u okviru čipa, • Mikrokontroler može da funkcioniše kao računar bez dodataka spoljnih gradivnih blokova (memorije i U/I uređaja), dok operativnost mikroprocesora bez spoljne memorije i U/I podsistema nije moguća. Komunikacija PIC16F877-20 preko SPI
BLOK ŠEMA MIKROKONTROLERA Komunikacija PIC16F877-20 preko SPI
PRIMENA MIKROKONTROLERA • Mikrokontroleri se danas koriste u embedded sistemima za upravljanje raznim funkcijama. Naime, oni se veoma često koriste i u situacijama kada treba da se veoma brzo reaguje na spoljne signale – posebno ako se takvi sistemi koriste za rad u realnom vremenu. • Mikrokontroleri su sastavni delovi mnogih vrsta elektronske opreme (pogledati embedded sistemI). Oni čine većinu svih prodatih mikro-procesorskih čipova. Preko 50% su "jednostavni" mikrokontroleri, a drugih 50% su specijaliozovani digitalni procesori signala (DSP). Mikrokontroler je prisutan u skoro svakom električnom uređaju, veš mašini, mikrotalasnoj pećnici, telefonu itd. Komunikacija PIC16F877-20 preko SPI
PROIZVOĐAČI MIKROKONTROLERA • AMCC • Atmel • Cypress Microsystem • Freescale Semiconductor • Fujitsu • Holtek • Intel • Microchip • National Semiconductor • NEC • Philips Semiconductor • Renesas Tech. Corp. • ST Microelectronics Komunikacija PIC16F877-20 preko SPI
PROIZVOĐAČI MIKROKONTROLERA • ST Microelectronics • Texas Instruments • Toshiba • Western Design Center • Ubicom • Xilinx • ZiLog • BASIC programibilni MCU-ovi. Komunikacija PIC16F877-20 preko SPI
EMBEDDED SISTEMI • Embedded sistem predstavlja računarski sistem specijalne namene, koji je potpuno zatvoren od strane kontrola uređaja. Za razliku od ličnih ra-čunara opšte namene, embedded sistem ispunjava specifične zahteve i izvršava prethodno definisane zadatke. Programibilni hardverski čip je "sirov materijal" i on je programiran određenom aplikacijom. Ovo treba shvatiti samo kao poređenje sa starijim sistemima sa potpuno funkcio-nalnim hardverom, ili opšte namenskim hardverom, koji imaju učitan softver eksterno. • Embedded sistemi su kombinacija hardvera i softvera koji omogućavaju laku serijsku proizvodnju i raznovrsnost aplikacija. U proteklih nekoliko godina interesovanje za ovu vrstu sistema je naglo poraslo, i danas predstavlja nezaobilaznu temu u računarskom svetu. Komunikacija PIC16F877-20 preko SPI
PRIMERI EMBEDDED SISTEMA • automatske mašine za brojanje novca • avijaciona elektronika, kao što je inercioni navigacioni sistemi, kontrola avionskog hardvera/softvera i drugih integrisanih sistema u avionima i projektilima • mobilni telefoni i telefonski tasteri • kompjuterska mrežna oprema, uključujući rutere, servere vremena i firewall-ovi • kompjuterski štampači • kopir mašine • pogon diska (flopi i hard disk pogon) • kontroleri motora i kontroleri antiblokade kočnica za automobile • proizvodi za kućnu automatizaciju, poput termostata, klima, prskalica i sistemi obezbeđenja • ručni kalkulatori Komunikacija PIC16F877-20 preko SPI
PRIMERI EMBEDDED SISTEMA • kućni aparati, uključujući mikrotalasne rerne, mašine za pranje veša, televizija, DVD plejeri/snimači • medicinska oprema • merna oprema kao što su digitalni osciloskopi, logički analajzeri i spektralni analajzeri • multifunkcijski ručni satovi • multifunkcijskii štampači (MFP) • lični digitalni asistent (personal digital assistant - PDA), to jest, mali ručni kompjuteri sa PIM-ovima i drugim aplikacijama • mobilni telefoni sa dodatnim sposobnostima, na primer, mobilni digitalni pomoćnik sa telefonom i PDA i Java (MIDP) • programibilni logički kontroleri (PLC-ovi) za industrijsku automatizaciju i nadgledanje • stacionarna video igračka konzola i ručne igračke konzole • prenosivi kompjuter. Komunikacija PIC16F877-20 preko SPI
SPI KOMUNIKACIJA • SPI (Serial Peripheral Interface) standard za sinhronu serijsku komu-nikaciju razvijen je od strane Motorolinih inženjera, za potrebu brzog i pouzdanog serijskog prenosa podataka na manjim rastojanjima (do 3m). 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. Komunikacija PIC16F877-20 preko SPI
SPI I SCI KOMUNIKACIJA- POREĐENJE • Tabela pokazuje kako je SPI komunikacija oko 10 puta brža od SCI komunikacije (Standard Communication Interface) kada mikrokontroler radi kao master, i oko 20 puta brža kada mikrokontroler radi kao slave. Takođe se vidi da kada mikrokontroler radi kao slave, moguća je brzina prenosa podataka jednaka internom taktu mikrokontrolera. Komunikacija PIC16F877-20 preko SPI
SPI PROTOKOL Komunikacija PIC16F877-20 preko SPI
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). Komunikacija PIC16F877-20 preko SPI
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. Komunikacija PIC16F877-20 preko SPI
SPI POLARITET I FAZA TAKTA Komunikacija PIC16F877-20 preko SPI
SPI POLARITET I FAZA TAKTA Na Slici je prikazan vremenski dijagram takta (SCK) koji generiše up-ravljačka SPI logika, uključujući polaritet i fazu takta. Neposredno ispod dijagrama data su objašnjenja za sve moguće varijante, odnosno za sva četiri moda: • Pri CPOL=0 (bazična vrednost takta je 0) važi sledeća logika: CPHA=0 (podatak se čita na rastuću, a menja na opadajuću ivicu takta), CPHA=1 (podatak se čita na opadajuću, a menja na rastuću ivicu takta). • Kada je CPOL=1 (bazična vrednost takta je 1) važi logika: CPHA=0 (podatak se čita na opadajuću, a menja na rastuću ivicu takta), CPHA=1 (podatak se čita na rastuću, a menja na opadajuću ivicu takta). Komunikacija PIC16F877-20 preko SPI
SPI EEPROM 25XX640 Komunikacija PIC16F877-20 preko SPI
SPI EEPROM 25XX640 • Pored četiri standardna pina bitna za SPI interfejs (CS, SCK, SI, SO), • napajanja Vcc i mase (Vss), 25xx640 poseduje i sledeća dva pina: • HOLD (pin preko koga se ova memorija, po potrebi, može privremeno «isključiti» iz SPI interfejsa), • WP (Write Protect pin, preko koga se memorija štiti od neželjenog upisa) Komunikacija PIC16F877-20 preko SPI
SPI ADC LTC1286 Komunikacija PIC16F877-20 preko SPI
SPI ADC LTC1286 - SEKVENCA Korišćeni analogno-digitalni konvertor ne zahteva konfiguracionu reč od stranemikrokontrolera i nema ulaz za prijem podataka Din koji služi i za kaskadnovezivanje više konvertora. Pošto ovaj konvertor ima dva ulaza D+ i D- on jeinicijalno konfigurisan kao diferencijalni ulaz ili jedan običan ulaz ako je drugivezan na masu. Opadajuća ivica CS signala koji služi za prozivanje konvertora,inicira prenos podatak između konvertora i mikro- kontrolera, kao što je prikazano na Slici. Komunikacija PIC16F877-20 preko SPI
PIC16F877 - FOTOGRAFIJA Komunikacija PIC16F877-20 preko SPI
PIC16F877 - RASPORED PINOVA Komunikacija PIC16F877-20 preko SPI
PIC16F877 - ARHITEKTURA Komunikacija PIC16F877-20 preko SPI
PIC16F877 - ARHITEKTURA • Flash programska memorija – 8 kiloreči obima 14 bita • RAM (File Registers) – 368 bajtova • Aritmetičko-logička jedinica (ALU) • Akumulator (Working Register) • Hardverski magacin (Stack) organizivan u 8 nivoa • EEPROM memorija podataka obima 256 bajtova • Višekanalni A/D konvertor, USART (univerzalni sinhroni i asinhroni primopredajnik), tajmere, portove itd. Komunikacija PIC16F877-20 preko SPI
PIC16F877 - OPŠTE KARAKTERISTIKE • RISC mikroprocesor veoma visokih performansi • 35 instrukcija obima jedne reči • Radna frekvencija od 20 MHz • Trajanje taktnog intervala 0.2 µs, pri frekvenciji 20 MHz • 13-bitni opkôd • Harverski magacin (stack) sa osam nivoa • Tri načina adresiranja (direktno,indirektno i relativno) • Programska flash memorija kapaciteta 8k X 13-bitnih reči • Memorija za podatke tipa RAM kapaciteta 368 X 8 bita • Memorija za podatke EEPROM tipa kapaciteta 256 X 8 bita • Prekidi (do 14 izvora prekida) • U/I portovi: A, B, C, D, E • Tri tajmera: Timer0 (TMR0): 8-bitni tajmer/brojač_događaja Timer1 (TMR1): 16-bitni tajmer/brojač_događaja Timer2 (TMR2): 8-bitni tajmer/brojač_događaja Komunikacija PIC16F877-20 preko SPI
PIC16F877 - OPŠTE KARAKTERISTIKE • 10-bitni 8-kanalni analogno-digitalni (A/D) konvertor • Serijska komunikacija: MSSP, USART • Paralelna komunikacija: PSP • Power-on Reset - reset pri uključenju napajanja (POR) • Power-up timer - unošenje kašnjenja nakon uključenja napajanja (PWRT) • Oscillator Start-up Timer - unošenje kašnjenja nakon stabilizovanja radne frekvencije oscilatora (OST) • Sleep mode - režim rada sa malim utroškom energije • Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad • Izbor tipa oscilatora • Radni napon je u opsegu od 2V do 5,5V Komunikacija PIC16F877-20 preko SPI
PIC16F877 - OSCILATOR • Kod mikrokontrolera PIC16F877 postoje četiri konfiguracije oscilatora: • RC Resistor/Capacitor • XT Crystal / Resonator • LP Low Power Crystal • HS High Speed Crystal / Resonator. Komunikacija PIC16F877-20 preko SPI
PIC16F877 - PORTOVI • PIC16F877 poseduje pet portova i oni predstavljaju vezu njegove interne strukture sa spoljašnjim svetom. • Svaki od njih može da se konfiguriše kao ulazni ili kao izlazni. Pomenuti portovi su različitog obima: • 8-pinski (PORTB, PORTC, PORTD), • 6-pinski (PORTA), • 3-pinski (PORTE). Komunikacija PIC16F877-20 preko SPI
PIC16F877 - PORTOVI • Svakom pinu bilo kojeg porta, u zavisnosti od režima rada, mogu da se dodele fiksne ili promenljive funkcije. Konfiguracija smera prenosa ostvaruje se upisom na odgovarajuću bit-poziciju u pripadajućem TRIS registru (0 - pin je izlazni, 1 - pin je ulazni). • Svakom portu je dodeljen registar podataka (PORTX), preko kojeg se programski pristupa U/I pinovima. Upis u neki od tih registara inici-raće upis u latch tog porta, a njegovo čitanje rezultiraće čitanjem logič-kih stanja direktno sa pinova. Sve instrukcije upisivanja su tipa read-modify-write. To znači da se pri upisu u port najpre očitaju stanja pinova, zatim izvrši modifikacija, a potom korigovana vrednost upiše u latch porta. • Ne postoji velika razlika u konstrukciji pomenutih pet portova. Jedino se Port B od ostalih razlikuje zbog posebne opcije koju nude četiri MSB. Ukoliko se setuje bit RBIE u registru INTCON, svaka pro-mena stanja na ovim pinovima, generisaće prekid mikrokontrolera. Komunikacija PIC16F877-20 preko SPI
PIC16F877 - MEMORIJA • Memoriju mikrokontrolera čine tri odvojene celine: • Programska memorija • Memorija podataka • EEPROM memorija podataka. • Inače, u mikrokontroleru postoji i stack (magacin), koji radi na principu cikličnog bafera, što znači da se u njega mogu staviti osam različitih adresa, dok se sa upisom devete adrese – briše prva i tako redom. Programski se ne može utvrditi da li je došlo do prepunjenja stack-a. Komunikacija PIC16F877-20 preko SPI
PIC16F877 - REGISTRI Komunikacija PIC16F877-20 preko SPI
MIKROC Komunikacija PIC16F877-20 preko SPI
MIKROC • Navešćemo njegove osnovne karakteristike: • Pisanje C kôda korišćenjem kvalitetnog i preglednog editora, što se ogleda u automatskoj kontroli i upozorenjima vezanim za sintaksu kôda, korišćenih parametara, kao i automatskoj korekciji pojedinih grešaka • Preglednost strukture programa (kôda), promenljivih i funkcija omogućava Code explorer • 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, sta- tistike kôda Komunikacija PIC16F877-20 preko SPI
REALIZACIJA SPI KOMUNIKACIJE Komunikacija PIC16F877-20 preko SPI
REALIZACIJA SPI KOMUNIKACIJE Komunikacija PIC16F877-20 preko SPI
REALIZACIJA SPI KOMUNIKACIJE • Kao što je prikazano na Slici, uloga master-a (ujedno je povezan sa se- rijskim portom PC računara) je dodeljena mikrokontroleru U2, dok je uloga slave-a dodeljena mikrokontroleru U3. Na Portove B oba mikro- kontrolera povezani su po četiri tastera i četiri LED diode. • Komunikacija PC↔U2 ostvaruje se samo preko Rx i Tx signala (bez handshaking-a), što je u našem slučaju sasvim dovoljno. • Potenciometri P1 i P2 su povezani na pinove PA0 oba mikrokontrolera. • Tri pina Porta C (PC3, PC4 i PC5) su dovoljni za ostvarenje SPI komunikacije master-slave. PC3 ima ulogu takta (SCK), kod master-a PC4 i PC5 imaju ulogu SI (Serial Input) i SO (Serial Output), respektivno, a kod slave-a je obrnuto. • Može da se primeti kako je reset zajednički za oba mikrokontrolera i ostvaruje pritiskom na taster SW0. Komunikacija PIC16F877-20 preko SPI
REALIZACIJA SPI KOMUNIKACIJE Komunikacija PIC16F877-20 preko SPI
REALIZACIJA ŠTAMPANE PLOČE Komunikacija PIC16F877-20 preko SPI
REALIZACIJA ŠTAMPANE PLOČE • Na Slici je mogu da se uoče po dve grupe tastera (SW1-SW4,SW5-SW8) i dve grupe LED dioda (LED1-LED4, LED5-LED8). • Prva grupatastera i LED je povezana za Port B mikrokontrolera kojem je softverski dodeljena uloga master-a, dok je druga grupa tastera i LED povezana za Port B slave-a. • Firmware-i (ugrađeni softveri) za master i slave su različiti. Komunikacija PIC16F877-20 preko SPI
ZADATAK ZA STUDENTE • Podesiti parametra USART terminala: • COM1 ili COM2 (zavisno na koji port je povezano kolo) • Brzina 9600 Bauda, 1 stop-bit (One Stop Bit), Space bit parnosti (Parity), osam bitova čini karakter/podatak (Data bits), isključen RTS (Off) • Podesite da prenos mikrokontroler↔PC bude ASCII. • Ispitati funkcije kola prema Tabeli. Komunikacija PIC16F877-20 preko SPI
PROZOR USART TERMINALA Komunikacija PIC16F877-20 preko SPI
DUŠANOV CV Komunikacija PIC16F877-20 preko SPI
ŽARKOV CV Komunikacija PIC16F877-20 preko SPI
IZGLED PROJEKTA Komunikacija PIC16F877-20 preko SPI