V prejšnjem nadaljevanju smo nadaljevali s periferijo Microchipovih 8-bitnikov in se lotili praktičnega primera izdelave krmilnika LED osvetlitve z daljinskim upravljalnikov.
Avtor: dr. Simon Vavpotič
Novi 8-bitni mikrokontrolerji imajo poleg naprednih ADC in DAC še veliko drugih novosti, kot sta CWG modul, ki omogoča ustvarjanje komplementarnih krmilnih signalov, in ZCD modul, ki samodejno zazna prehod signala čez vrednost napetosti 0 V, kar pride še posebej prav pri natančnem merjenju signalov. Omenjenega in še marsikatere novosti 8-bitnikov se lotimo tokrat, ko bomo pobliže spoznali še nekatere novejše družine 8-bitnih mikrokontrolerjev, kot je PIC18-Q84, ki so primerjavi s PIC16F18855 še precej zmogljivejši. Imajo tudi A/D pretvornik z računsko enoto in možnostjo preklapljanja med konteksti. Če vseeno pogrešate USB vmesnik, povejmo, da ga imajo člani nekoliko starejše, a še vedno sodobne 8-bitne družine PIC18-J94 z veliko novimi funkcionalnostmi pa tudi z vgrajenim krmilnikom LCD prikazovalnika in z do 100 zunanjimi priključki. USB 2.0 vmesnik s polno hitrostjo (12 Mbps) imajo tudi člani družine PIC16(L)F145x, a imajo v ohišjih malo naprednih funkcijskih enot; kar pa je tudi razumljivo, saj jih izdelujejo v ohišjih s 14 (PIC16(L)F1454), 16 (PIC16(L)F1455) in 20 (PIC16(L)F1459) priključki. Prednost nove izvedbe USB 2.0 vmesnika, je tudi vezje za samodejno prilagajanje frekvence ure USB 2.0 vodila gostiteljskemu računalniku, zato PIC16(L)F145x ne potrebuje kristalnega oscilatorja, kar bistveno poenostavi implementacijo strojnih rešitev.
Ta vsebina je samo za naročnike
Če želite odkleniti to vsebino, se naročite.
Tudi v majhnem je lahko moč!
Ko smo že pri PIC16(L)F145x mikrokontrolerjih, povejmo, da pride manjše število priključkov pogosto prav pri posebnih aplikacijah, kot so vmesniki med USB 2.0 vodilom in RS-232 (EUSART), SPI ali I2C, pri katerih potrebujemo predvsem procesno zmogljivost, ki zagotavlja hiter in nemoten tok podatkov. Denimo, tak vmesnik lahko uporabimo za programiranje ESP32 ali ChipKit Arduino modulov. Kljub temu imajo mikrokontrolerji s 16 in 20 priključki tudi vgrajena tudi 5-bitna D/A pretvornika, ki ju lahko uporabimo za krmiljenje analogih vezij, medtem ko imata za kakovostno predvajanje glasbe premalo nivojev. Po drugi strani, nudi 10-bitna PWM enota v kombinaciji s CWG (generator komplementarnih signalov) tudi možnosti za zahtevnejše krmiljenje enosmernih in koračnih motorjev. Povejmo še, da mikrokontrolerje programiramo z ICSP protokolom.
Sorazmerno veliko SRAM-a in Flash RAM-a, zunanje pomnilniško vodilo pa tudi strojni množilnik
Čeprav 8-bitna arhitektura v osnovi ni prilagojena za velike količine pomnilnika, saj lahko z osmimi biti v osnovi naslovimo zgolj 256 lokacij, je s sorazmerno enostavnimi strojnimi dodatki mogoče velikost glavnega pomnilnika skoraj poljubno povečati. PIC16 in PIC18 ostajata zvesta harwardski arhitekturi, katere značilnost sta ločena pomnilnika za strojne ukaze (Flash RAM) in podatke (SRAM). Za naslavljanje pomnilnika za strojne ukaze že od vsega začetka uporabljata 16-bitno naslovno vodilo. Zato ob vse naprednejši tehnologiji izdelava čipov ni bilo programskega pomnilnika ni bilo težko povečati na 64 kB ali celo na 128 kB, vendar je za slednje že potrebno uporabiti mapiranje pomnilnika.
Veliko nekoliko drugače pa je bilo pri podatkovnem pomnilniku, ki je organiziran v pomnilniške banke po 256 bajtov. Mikrokontroler banke izbira s pomočjo posebnega registra. Za povečanje količine pomnilnika je bilo treba samo dodati še nekaj bitov v register za izbiro pomnilniške banke. Zato ne preseneča, da ima družina PIC18-Q84 celo do 12 kB podatkovnega SRAM-a, medtem ko PIC18-J94 morda zaradi zahtevnosti implementacije USB vmesnika še vedno ne preseže 4 kB (4096 bajtov), kar je prav toliko kot pri družini PIC18F46J50, ki smo jo v preteklih leti že dodobra spoznali tudi v SE. Sicer implementacija dodatnega pomnilnika s programerskega stališča ni zapletena, saj je BSR (memory bank select register) register v osnovi 8-biten, kar teoretično omogoča do 64 kB SRAM-a, če bi Microchipovi inženirjih izkoristili vse bite. Posebnost čipov družine PIC18-J94 je tudi zunanje 16-bitno naslovno-pomnilniško vodilo, ki ga lahko uporabimo za priklop do 2 MB velikih pomnilnikov SRAM, kar omogoča tudi razvoj zahtevnejše vgrajene programske opreme.
V nekoliko zahtevnejših aplikacijah (npr. digitalnih filtrih) je zelo uporabna funkcijska enota tudi strojni množilnik, ki omogoča množenje dveh bajtov z enim samim strojnim ukazom, pri čemer se 16-bitni rezultat shrani v registrski par PRODH:PRODL. V Microchipovi dokumentaciji izkazujejo približno 15-kratno hitrejše računanje, kot če bi množenje implementirali s strojnimi ukazi, ki jih imajo PIC18 mikrokontrolerjih brez vgrajenega strojnega množilnika, kar velja tako za implementacijo množenja predznačenih kot nepredznačenih 8-bitnih vrednosti, kot tudi pri implementaciji algoritma v zbirniku za množenje predznačenih in nepredznačenih 16-bitnih vrednosti.
Kljub temu je treba poudariti, da Microchip nadaljnji razvoj 8-bitnih mikrokontrolerjev usmerja predvsem v podporne aplikacije, kot so pametni senzorji, ki lahko meritve opravljajo bolj ali manj samostojno in jih tudi začasno shranijo. Meritve so nato prek hitrega vodila SPI, I2C ali drugega na voljo nadzornim mikrokontrolerjem (navadno 32-bitnim) ali računalnikom z grafičnim uporabniškim vmesnikom, katerih procesorska obremenitev je tako neprimerno manjša, obenem pa lahko nadzorujejo množico senzorjev.
PIC18F97J94 s krmilnikom klasičnega segmentnega LCD prikazovalnika
Zahtevnejše aplikacije si brez LCD prikazovalnika ne moremo predstavljati, vendar LCD z ustreznim krmilnikom pogosto ni niti najhitrejša, niti najcenejša opcija. Navadno ga krmilimo prek SPI vodila, redkeje prek počasnejšega I2C. Čeprav ima neposredni dostop do LCD segmentov, pa kljub temu ne pomeni kakšne bistvene prednosti pri hitrosti delovanja, saj je vgrajeni krmilnik bistveno premalo zmogljiv za poganjanje večjih grafičnih LCD prikazovalnikov. Lahko pa z njim krmilimo sorazmerno velike klasične segmentne prikazovalnike. A pogoj je, da zna krmilnik LCD sliko na njem osveževati brez pomoči procesne enote mikrokontrolerja. Krmilnik LCD v PIC18F97J94 čipu s 100 priključki lahko krmili LCD prikazovalnike z do 480 segmenti, če uporabljamo med 5 in 8 priključkov za združevanje (commons), oziroma od 5 do 8-kratno prepletanje. Slednje je uporabno predvsem za industrijske aplikacije, ki še uporabljajo tovrstno tehnologijo.
Kljub temu PIC18F97J04 lahko zaradi velikega števila priključkov brez težav povežemo tudi z najzmogljivejšimi LCD-TFT in drugimi grafičnimi barvnimi prikazovalniki z visoko ločljivostjo, ki za prenos uporabljajo 8-bitna ali 16-bitna paralelna vodila. A vprašati se moramo, ali se to dejansko izplača. Pri zahtevni računalniški grafiki se dosti bolje obnesejo zmogljivejši PIC24 in PIC32, ki lažje procesirajo zajetne količine podatkov. Kljub temi pa je PIC18F97J94 lahko odličen vmesnik med SPI ali I2C vodilom in vzporednim vodilom, ki ga ima veliko v LCD-TFT vgrajenih krmilnikov. S tem nočem reči, da ne moremo kupiti razvojnih ploščic, ki že vsebujejo ustrezen vmesnik na SPI in/ali I2C vodilo, ampak veliko tovrstnih rešitev ima vgrajen tak ali drugačen vmesniški čip. Kakorkoli pa novejši PIC18-Qxx mikrokontrolerji tovrstnih krmilnikov nimajo več.
Je PIC18-Jxx družina vmesni razvojni člen do družine PIC18-Qxx?
Tehnološki preskok med prvimi člani družine PIC18 mikrokontrolerjev, kot je PIC18F46J50 in zadnjimi, kot je PIC18F97J94, je sorazmerno velik. Čeprav ostaja procesorsko jedro z vgrajenim strojnim, množilnikom 8-bitnih vrednosti bolj ali manj enako, so pri Microchipu osnovni nabor funkcijskih enot znatno razširili.
Ena izmed ključnih novosti je ACT (active clock tuning) modul, ki omogoča samodejno aktivno fino prilagajanje hitrosti frekvence notranjega taktnega oscilatorja s frekvenco približno 8 MHz. Zato, denimo za hitre USB 2.0 komunikacije in druga hitra komunikacijska vodila ne potrebujemo kristalnega oscilatorja. Možnost uravnavanja frekvence notranjega taktnega oscilatorja znaša +/- 0,2%, kadar pa bi bili potrebni večji popravki, ACT modul postavi vrednost bita ACTORS (ACT out of range) ne logično 1, s čemer na morebitne posledične težave pri prenosu podatkov, ali drugih operacijah, ki zahtevajo natančno sinhronizacijo ur oddajnega in sprejemnega računalnika. Kljub temu lahko kristalni oscilator ali kristalni resonator še vedno vgradimo, kadar potrebujemo natančno merjenje časa, kar je podobno kot pri starejšem PIC18F46J50.
12-bitni A/D pretvornik s SAR in iskanjem praga
Pri merjenju signalov pogosto potrebujemo hitro, natančno in zanesljivo A/D pretvorbo, zato so izboljšave A/D pretvornika vsekakor dobrodošle. Z največjo hitrostjo vzorčenja do 500 ksps (do 500.000 vzorci na sekundo) se vsekakor lahko spogleduje s PIC32, prav tako za 12-bitno ločljivostjo, ki jo imajo samo A/D pretvorniki v PIC32MZ.
PIC18-Q84 s funkcijskimi enotami, ki smo jih spoznali pri PIC16F18855, in novostmi
1 kB podatkovnega EEPROM-a za hrambo nastavitev in drugih podatkov, ki jih uporablja vgrajena programska oprema, je več kot dovolj za hrambo osnovnih nastavitev delovanja in varnostnega preverjanja vgrajene programske kode.
Med novostmi je tudi JTAG vmesnik za kompleksno razhroščevanje vgrajene programske opreme in periferne strojne opreme, ki je vgrajen tudi v veliko zmogljivejše PIC32 mikrokontrolerje, ki pa jih prek EJTAG vmesnika (razširjeni JTAG) lahko tudi programiramo. Programiranje sicer lahko poteka tudi prek ICSP vmesnika, vendar pri PIC32 prek tega le prenašamo podatke v vgrajeno EJTAG kontrolno enoto iz nje, medtem ko PIC18-Qxx mikrokontrolerje prek ICSP tudi neposredno programiramo, prav tako starejše PIC18 družine. PIC18-Qxx mikrokontrolerje lahko preko JTAG vmesnikov povežemo v marjetično verigo, ki omogoča, da vselej preverimo delovanje kateregakoli izmed njih in tako lažje odkrijemo morebitno napako v kompleksnejših elektronskih vezjih. Povejmo še, da 8-bitne družine PIC18-Jxx, PIC18-Kxx in starejše, JTAG vmesnika nimajo, prav tako ga nimajo PIC16 mikrokontrolerji.
Še k AVR-jem!
Atmelovi 8-bitni mikrokontrolerji imajo v povprečju nekoliko manj vgrajenih funkcijskih enot, a obenem tudi take, ki smo jih pri PIC-ih včasih pogrešali. Od kar je Atmel v lasti Microchipa pa PIC funkcijske enote dobivajo tudi AVR družine in obratno. Obenem je Atmel pred leti veliko več vlagal v razvoj zmogljivih 32-bitnih AVR32 in kasnejših SAM mikrokontrolerjev z ARM arhitekturami, s katerimi je naposled prehitel Microchip, ki ga je nato kupil in njegove tehnologije uvrstil v svoj portfelj.
Vsekakor bi potrebovali več časa, če bi hoteli do potankosti raziskati vsako od sodobnih 8-bitnih AVR družin, lahko pa namesto tega raziščemo zgradbo najzmogljivejših in ugotovimo, katere možnosti so na voljo. Obenem je nekako logično, da imajo navadno mikrokontrolerji z manj priključki tudi manj funkcijskih enot in so obenem bolj prilagojeni za izvajanje posebnih nalog, denimo krmiljenje koračnih motorjev, zato vseh niti ne potrebujejo. Vendar preostale funkcijske enote niso dosti drugačne od tistih pri njihovih sodobnih zmogljivejših bratrancih, zato je dovolj, da podrobneje spoznamo predvsem slednje.
AVR DB procesorsko jedro
AVR mikrokontrolerji na harvardski RISC arhitekturi, ki zaradi majhnega števila učinkovitih strojnih ukazov ne zahteva zapletene in prostorsko potratne implementacije procesorskega jedra na silicijevi rezini, hkrati pa je tako več prostora na voljo za funkcijske enote. Procesorsko jedro ima 32 registrov, ki so neposredno povezani za aritmetično-logično enoto (ALU), ki lahko izvaja računske operacije nad 8, 16 in 32-bitnimi števili. Podobno kot PIC procesorsko jedro, ima tudi AVR DB ločena pomnilnika za strojne ukaze in podatke ter vgrajen strojni množilnik za 8-bitne vrednoti, rezultat pa je 16-biten. Deluje pri taktih do 24 MHz, vendar lahko vsak strojni ukaz izvede v enem procesorskem ciklu.
AVR DB organizacija pomnilnika
Programski pomnilnik je Flash RAM s 16-bitnimi pomnilniškimi besedami, medtem ko je programski števec, prek katerega ga procesorsko jedro naslavlja 16-biten. Zato lahko AVR DB procesorsko jedro naslovi največ 128 kB velik pomnilniški prostor, kar s pridom izkoriščajo najzmogljivejši AVR DB mikrokontrolerji AVR128DB z 28, 32, 48 in 64 priključki, ki imajo vgrajenega po 128 kB programskega Flash RAM-a, ki ga je po Microchipovih navedbah mogoče do 10.000-krat zbrisati in ponovno sprogramirati. Za hrambo pogosto spreminjajočih se nastavitev je tako prikladnejši vgrajeni EEPROM s 512 bajti, ki omogoča desetkrat več ciklov brisanja in pisanja (100.000).
Po drugi strani je podatkovni pomnilniški prostor sestavljen iz 8-bitnih besed s 16-bitnim naslavljanjem, kar znese največ 64 kB. Vendar je ta prostor, podobno kot pri PIC18, namenjen tudi kontrolnim registrom vgrajenih funkcijskih enot. Tako ga je za SRAM namenjenih samo 16 kB, kar je tudi največ SRAM-a kolikor ga lahko imajo AVR-ji.
Kljub temu to ne pomeni, da AVR mikrokontrolerji ne morejo uporabljati večjih pomnilnikov, če imajo na voljo strojno logiko za preslikavo njihovih delov v omenjeni naslovni prostor. Je pa res, da je tako hkrati na voljo samo določen del pomnilnika. Omenimo še klasični procesorski sklad (stack), ki ga potrebujemo za preklapljanje med konteksti in izvajanje podprogramov, ki je implementiran v RAMu. Pri programiranju moramo tako paziti, da ne presežemo največje velikosti sklada.
Spoštujemo vašo zasebnost in se zavezujemo, da bomo osebne podatke, pridobljene prek spletnega informacijskega sistema, skrbno varovali in jih brez vaše privolitve ne bomo posredoval tretji osebi oziroma jih uporabili v druge namene. Ker obstajajo v spletnem informacijskem sistemu določene povezave na druge, zunanje spletne strani, ki niso vezane na nas, ne prevzemamo nobene odgovornosti za zaščito podatkov na teh spletnih straneh.
Hkrati se zavezujemo, da bomo po svojih najboljših možnih močeh varovali podatke in zasebnost obiskovalcev spletne strani .
Da bi preprečili nepooblaščen dostop do pridobljenih podatkov ali njihovo razkritje, ohranili natančnost osebnih podatkov in zagotovili njihovo ustrezno uporabo, uporabljamo ustrezne tehnične in organizacijske postopke za zavarovanje podatkov, ki jih zbiramo.
Piškotki, ki so nujno potrebni za delovanje spletne strani
Nujno potrebne piškotke bomo na vašo napravo vedno nameščali, saj brez njih naša spletna stran ne deluje pravilno. Med nujno potrebne piškotke uvrščamo piškotke, ki vam omogočajo dostop do spletne strani, delovanje posameznih funkcionalnosti spletne strani in hkrati ne zbirajo analitičnih ali drugih podatkov o vašem obisku.
Ime piškotka
Trajanje
Opis
PHPSESSID
dokler ne zaprete brskalnika
Piškotek omogoča shranjevanje sej med posameznimi zahtevami znotraj sistema za upravljanje z vsebinami.
moove_gdpr_popup
1 leto
Shrani uporabnikove preference politike piškotkov
Če onemogočite ta piškotek, ne bomo mogli shraniti vaših nastavitev. To pomeni, da boste morali vsakič, ko obiščete to spletno mesto, ponovno omogočiti ali onemogočiti piškotke.
Piškotki tretjih oseb
Med piškotke tretjih oseb spadajo analitični in funkcijski piškotki, ki jih na vašo napravo nameščajo druga podjetja, kot so Facebook Inc. in Google Inc.. Ti piškotki vam omogočajo uporabo vtičnikov in funkcij na naši strani, ki so povezane z njihovimi družbenimi omrežji in drugimi platformami ter za sledenje vaši uporabi njihovih storitev.
Ime piškotka
Trajanje
Opis
_ga
2 leti
Google Analytics Zabeleži razlikovanje med uporabniki in sejami.
_gid
1 leto
Google Analytics Zabeleži novo sejo ali novega uporabnika.
_gat
10 min
Google Analytics piškotek se uporablja za omejevanje pogostosti zadetkov..
IDE
2 leti
Oglaševalski piškotek podjetja Google Inc. Ki nam omogoča prikazovanje oglasov.
Najprej omogočite strogo potrebne piškotke, da lahko shranimo vaše nastavitve!
Uporaba piškotkov na spletišču
Spletišče v brskalnik računalnika obiskovalca oziroma uporabnika odloži tako imenovani “piškotek”. Piškotki so tekstovne datoteke, ki se shranijo na uporabnikovem računalniku in omogočajo analize o uporabnikovem obisku, številu obiskov in kaj ga zanima v teh obiskih. V piškotku so osnovni podatki o uporabnikovem obisku določene spletne strani, npr. ime obiskovane spletne strani, ki jih opravi v spletišču. Vsebina piškotka se shrani v računalniku uporabnika v posebni mapi. Z dvakratnim klikom na datoteko dobimo podrobnejše informacije o obiskani spletni strani, datumu in uri obiska. Vsi ti podatki so shranjeni tudi pri upravljavcu spletne strani, ki jo uporabnik obiskuje.
Uporabnik lahko piškotke z določenimi nastavitvami briše, izključuje oziroma jih pogojno uporablja, a posledično uporabnik ne bo mogel uporabljati vseh funkcij spletišča v polni meri. V osnovi so brskalniki nastavljeni tako, da piškotke sprejemajo, zavračajo pa nastavljanje piškotkov, ki ne izvirajo iz področja, zapisanega v naslovni vrstici.