Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

TUTORIJAL: PicBasic Pro 3 i PIC16F1827

[es] :: Elektronika :: Mikrokontroleri :: TUTORIJAL: PicBasic Pro 3 i PIC16F1827
(TOP topic, by veselinovic)
Strane: 1 2 3 4 5

[ Pregleda: 53943 | Odgovora: 88 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon TUTORIJAL: PicBasic Pro 3 i PIC16F182726.07.2012. u 08:11 - pre 141 meseci
Ovu temu sam zamislio kao pomoć početnicima ili onima sa nedovoljno iskustva da svaladaju rad sa PIC mikrokontrolerima i PicBasic Pro verzija 3 kompajlerom pošto se povremeno neko od njih javi ili na forum ili na privatnu adresu nekog od poznavalaca materije.

Krenućemo od nekih osnova, ali nećemo se za početak previše baviti teorijom - biće tu nešto malo uvoda pa ćemo jako brzo da predjemo na konkretne primere i uz njih objašnjavati teorijski deo kao i hardverske komponente mikrokontrolera.

Voleo bih da se sve poruke ovde odnose isključivo na temu, da se ne bavimo time šta je bolje, PIC , ATMEL ili nešto treće, ovaj ili onaj PIC itd, itd. Za tako nešto možete da iskoristite ovu temu:
http://www.elitesecurity.org/t453061-PIC-PBP-tutorial
ili otvorite novu. Uostalom, nije loše da pročitate ovu temu, ako već niste.

Što se tiče dinamike tekstova, imajte na umu da ja ovo radim u slobodno vreme (koga danas skoro niko nema previše) pa ne mogu ništa da obećam, ali ću da se trudim da bude bar 1 nedeljeno.

Pozdrav.
Sinisha


 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182729.07.2012. u 23:08 - pre 141 meseci
Ako hoćete da učite po ovom tutorijalu biće vam potrebne 3 stvari:

1. PICBASIC Pro 3 kompajler čiju probnu verziju, potpuno funkcionalnu u trajanju od 15 dana, možete da skinete sa sajta tvorca kompajlera:
http://pbp3.com/download.html
Prvi fajl od 122 MB sadrži sve što je potrebno, kompajler, MPLAB i IDE pod nazivom "Micro Code Studio" (u daljim tekstovima MCS), dok je drugi bez MPLAB-a i podrazumeva da ga već imate instaliranog (verziju 8.85).

2. programator za 16F1827.
Obzirom da ovaj PIC pripada novoj generaciji 8-bitnih PIC-eva sa unapredjenim jezgrom (enhanced na engleskom), malo je programatora koji mogu da ga programiraju i to jeste donekle problem. Tačnije, meni su za sada poznata samo dva programatora koji ga provereno programiraju, a to su PICKit 2 i PICKit 3 (PK2 i PK3 u daljim tekstovima). Po priči mnogih, PK2 se, iako stariji, pokazao bolje od PK3, ali ostaje na vama da se odlučite.
Ako radite u WINDOWS operativnom sistemu onda vam je svejedno, ali ako radite u LINUX-u, morate da znate da za PIC-eve sa unapredjenim jezgrom ne postoji podrška za PK2, tako da vam ostaje PK3. Pošto ja nemam PK3 molim one koji ga imaju, a rade u LINUX-u, da napišu ako imaju iskustva sa programiranjem ovih piceva sa unapredjenim jezgrom.
Medjutim, ovih dana ću da testiram dva programatora koja bi trebalo da rade i pod WINDOWS i pod LINUX OS-om, od kojih je jedan predvidjen za serijski, a drugi za USB port tako da će, ako sve bude kako treba, postojati mogućnost izbora za sve opcije.
Postoji i softver WINPIC800 koji u spisku podržanih ima ovaj PIC, ali ne može da se programira sa JDM baziranim hardverom. Koji hardver omogućava to, ne znam, ako neko ima iskustva neka napiše ovde.

3. Hardver na kome ćemo isprobavati programe.
U pripremi je mini razvojni sistem koji će nam pomoći u tome, uskoro će biti postavljena njegova shema (koncept možete da vidite ovde http://www.elitesecurity.org/p3140549) i nacrt za PCB.

Postoji i četvrta stvar koja nije neophodna, a može da posluži umesto hardvera, a to je program PROTEUS koji u sebi ima i odličan simulator pomoću koga će moći da se simulira možda i sve što ćemo ovde da radimo, tako da vam razvojni sistem i neće biti potreban, ali ipak preporučujem da se sve proba i na pravom hardveru.
Na ovoj adresi možete da skinete probnu verziju koja je potpuno funkcionalna sem učitavanja, snimanja i štampanja vaše sheme:
http://www.labcenter.com/download/prodemo_autodl_general.cfm

Pozdrav.
Sinisha
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182702.08.2012. u 17:56 - pre 141 meseci
Dobre vesti za one koji bi da prate i isprobavaju primere koje ćemo da obradjujemo: pronašao sam još 2 programa koji mogu da programiraju PIC 16F1827 od kojih jedan omogućava nekoliko tipova programatora, a drugi je predvidjen za USB port, i za oba postoje verzije za LINUX i za WINDOWS operativni sistem. Oba su potpuno besplatna i javno dostupna.

Prvi program se zove WxPic koji podržava nekoliko tipova hardvera, a ja sam bio u prilici da probam sa ALLPIC-om koji je JDM baziran (mada u opcijama za hardver treba odabrati COM84). Da bi PIC16F1827 mogao da se programira, potrebno je modifikovati jedan fajl, a modifikaciju sam opisao ovde:
http://www.elitesecurity.org/p3146048

Drugi program je OpenProg, predvidjen za USB port, i to je ustvari komplet hardver + softver, a sve što je potrebno za njegovu izradu i korišćenje možete da pogledate na sledećem linku:
http://openprog.altervista.org/OP_eng.html

Eto, sada su pokriveni i LINUX i WINDOWS OS, kao i serijski i USB port, pa svako ko planira da prati ove tekstove kroz praktične primere, sada može da odabere šta mu odgovara.

Pozdrav.
Sinisha
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182709.08.2012. u 21:54 - pre 141 meseci
Krećemo sa prvim tekstom u ovom tutorijalu u kome ćemo da se osvrnemo na neke teorijske stvari. Pre toga da napomenem da razvojni sistem nije još gotov, kao i da postoji još jedan USB PIC programator koji je napravljen po uzoru na PK2 (iako nije kopija već samostalan proizvod) koji se zove usbpicprog. Nisam ga još napravio, podrška za PIC16F1827 postoji, ali nije testirana. Ko je raspoložen za njegovu izradu može da pogleda sajt na kome se nalazi sve što je potrebno.
http://usbpicprog.org/
Za njega postoji softverska podrška za linux, windows i macintosh, tako da su sada sve opcije pokrivene i više nećemo da se bavimo novim programatorima, ova 3 pomenuta su više nego dovoljna.

Šta je to mikrokontroler
================
Pojava mikroprocesora, čipova koji su mogli da izvršavaju neki korisnički program, napravila je revoluciju u elektronici omogućivši izradu raznih uredjaja koji su odjednom postali manji, brži, sa više mogućnosti, pa čak dovela i do pojave prvih kompjutera.

Mikrokontroler nije isto što i mikroprocesor, moglo bi da se kaže da je mikrokontroler u stvari njihova nadgradnja. Mikroprocesor se sastoji od aritmetičko-logičke jedinice, nešto malo RAM-a i adresne magistrale kojom su se povezivali sa spoljnom memorijom i ulazno-izlaznim jedinicama. Neki od njih imaju u sebi i programsku memoriju u kojoj se nalazi program koji izvršavaju, dok ostali zahtevaju spoljnu memoriju.

Mikrokontroler takodje sadrži aritmetičko-logičku jedinicu, ali ne poseduje adresnu magistralu jer ima integrisanu programsku memoriju, a uz to ima ugradjene mnoge druge hardverske komponente, kao što su logički ulazno-izlazni pinovi, brojači, tajmeri, oscilatori, RAM, EEPROM, PWM moduli, A/D i D/A konvertori, komparatori, watch-dog tajmeri itd. Moglo bi da se kaže da su mikrokontroleri kompjuteri u malom - uz dodatak neke ulazne jedinice za komunikaciju sa korisnikom (tastatura, miš) i izlazne za prikaz rezultata (ekran, štampač) može da se napravi kompjuter koji bi daleko prevazišao performanse nekadašnjih kompjutera baziranih na osmobitnim mikropocesorima (npr. Z80). Naravno da danas ne bi imalo mnogo smisla praviti takve kompjutere, ali sa mikrokontrolerima možemo da napravimo mnoge zanimljive uredjaje koji mogu da nam posluže za zabavu, edukaciju pa čak i zaradu.

Treba imati na umu da se danas mikrokontroleri nalaze svuda: u digitalnim satovima, digitalnim fotoaparatima, mašinama za izradu fotografija, kafematima, punjačima baterija (ima ih i u samim baterijama), u džepnim baterijskim lampama, pa i u igračkama. U modernim automobilima ih ima na desetine i većina njih komunicira medju sobom (npr. samo u volanu može da ih bude nekoliko).

Cilj ovog tutorijala nije da napravimo neki visoko komercijalan uredjaj već da zainteresovani mogu da nauče osnove rada sa njima, jer je početniku upravo najveći problem da nauči osnove - ako to nema odakle da savlada, početni entuzijazam može brzo da predje u razočaranje.

Postoje mnogi proizvodjači mikrokontrolera, a svaki od njih ima nekoliko familija. Odlučiti se za nekog proizvodjača početniku je jako teško i postoje mnoga mišljenja oko toga šta je za početnika bolje. Mi nećemo da se bavimo tim pitanjima, ovo će biti tutorijal za mikrokontroler proizvodjača "Microchip" i to iz 8-bitne famillije sa unapredjenim jezgrom sa oznakom PIC16F1827. Učićemo kako se za njega pišu programi u programskom jeziku PICBasic Pro, a verovatno ćemo povremeno da se dotaknemo i asemblera. Kasnije, kada savlada osnove, svako može da odluči hoće li da ostane uz Microchip proizvode ili želi da predje na proizvode drugog proizvodjača u zavisnosti od potreba ili nekih drugih razloga.


[Ovu poruku je menjao rsinisa dana 09.08.2012. u 23:05 GMT+1]
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182710.08.2012. u 22:26 - pre 141 meseci
Hteo bih da se osvrnem na samu reč "mikrokontroler" jer bi mogla pogrešno da se shvati. Naime, reč kontrola nema isto značenje u našem jeziku kao u engleskom. U našem jeziku ta reč označava nadzor, proveru, dok u engleskom jeziku ta reč (controll) označava upravljanje, tako da bi neki bukvalni prevod reči mikrokontroler bio mikroupravljač. Naravno, u našem jeziku se reč mikrokontroler odomaćila i svi poznavaoci materije znaju o čemu se radi tako da ćemo i mi ovde da je koristimo, a ona neće biti jedina koja se koristi u svom izvornom obliku, mada ću ja da se trudim da, kad god to ima smisla, koristim naše reči koje su manje-više odgovarajuće za neke pojomove. Ovo isključivo iz razloga što mislim (a postoje i neki dokazi od pametnih ljudi) da mnogi hoće da unište na razne načine naša nacionalna obeležja, a jedno do njih je svakako jezik.

Smatram da mi Srbi treba da budemo samosvesni i da se trudimo da sami očuvamo, koliko god je to moguće, naš nacionalni identitet na svim poljima, a jedno od njih je i jezik. Činjenica je da ima mnogo mladih koji su pročitali više teksta od svojih drugara preko raznih društvenih mreža nego iz knjiga domaćih autora i zato ne treba nikome zameriti jer je veoma moguće da za neke reči iz tehničke oblasti mladja populacija jednostavno ne zna domaći izraz. Naravno, nisam ni ja lingvista niti poznajem sve te reči, ali ću da se trudim koliko znam i umem da koristim domaće reči tamo gde to ima smisla.
Malo sam skrenuo sa teme i to je neka druga priča, za neko drugo mesto, ali sam hteo da obrazložim ukoliko naidjete na neku reč za koju smatrate da nije adekvatna za ovu oblasti, ili vam se učini besmislena.

Neke stvari će ovde biti objašnjene ukratko, ili možda karikirano i nedovoljno kako se ne bi uplitali u neke, bar za početak, nebitne stvari, a verovatno ću negde i da napravim grešku pa molim sve koji smatraju da nešto nije napisano kako treba, da se slobodno jave i isprave me.



[Ovu poruku je menjao rsinisa dana 11.08.2012. u 00:41 GMT+1]
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182710.08.2012. u 23:34 - pre 141 meseci
Programiranje mikrokontrolera
====================
Kao što smo već rekli, mikrokontroler ima u sebi programsku memoriju u kojoj se nalazi program koji treba da se izvršava i upravlja nekim uredjajima i procesima. Postoje mikrokontroleri (u daljem tesku MCU od engleskog izraza "microcontroller unit") koji u sebi već imaju fabrički, u toku proizvodnje, upisan neki program, ali oni su specijalizovani za odredjene namene i nama nisu od neke koristi - nas zanimaju oni koje možemo sami da programiramo prema svojim potrebama. Pošto takvi MCU-i dolaze sa potpuno praznom programskom memorijom, kada bi ih ubacili u naše kolo koje smo projektovali, ništa se ne bi desilo, naše elektronsko čedo bilo bi potpuno "mrtvo", pa je potrebno da mi sami napišemo program i smestimo ga u programsku memoriju. PIC kontroler koji ćemo mi da koristimo ima tzv. FLASH (čita se fleš) programsku memoriju, odn. memoriju u koju možemo više puta da upisujemo naš program, brišemo ako nešto nije dobro, i ponovo upišemo drugi program. Broj takvih piši-briši ciklusa kod PIC MCU-a obično se kreće od 10 000 do 100 000 tako da nam je jedan PIC više nego dovoljan za eksperimetisanje. Jedna od osobina fleš memorije je da i nakon isključenja napona napajanja njen sadržaj ostaje nepromenjen, tako da je naš uredjaj spreman za rad pri savakom uključenju bez ponovnog programiranja. Sledeće logično pitanje koje se postavlja je kako se programira MCU.

Mašinski jezik i asembler
================
Pošto MCU pripada familiji digitalniih čipova koji prepoznaju isključivo dva stanja - nema napona što se obeležava sa cifrom 0, i ima napona što se obeležava sa cifrom 1, sve što on razume su instrukcije koje se sastoje iz nula i jedinica i te instrukcije se nazivaju mašinski jezik, što je prirodni "jezik" svakog mikroprocesora i mikrokontrolera. Brojni sistem u kome se koriste samo dve cifre zove se binarni brojni sistem ("bi" znači dva, i o brojim sistemima će biti reči kasnije) i on je najnepogodniji za čoveka i bilo bi jako teško i sporo pisati programe u tom obliku. Zato je osmišljen asembler, programski jezik najnižeg nivoa kod koga je za svaku mašinsku instrukciju, tj. za nizove nula i jedinica, osmišljena reč ili skraćenica koja je mnogo razumljivija za čoveka i kod koga svaka asemblerska instrukcija predstavlja jednu jedinu mašinsku instrukciju.
Doduše, da budem iskren, imao sam prilike da vidim da tvorci asemblera, ne bi li olakšali malo programerima, ugradjuju instrukcije koje se najčešće sastoje iz 2 ili 3 mašinske koje prirodno "idu zajedno". Takva je npr. instrukcija "bnz" u Microchipovom asembleru za PIC kontrolere koja ne postoji (bar kod 8-bitnih PIC-eva) i koja se u stvari sastoji iz dve mašinske instrukcije.
Pojavom asemblera programeri su znatno ubrzali pisanje programa jer je bilo mnogo lakše pamtiti skraćenice nego nizove 0 i 1. Tako napisan program je asembler prevodio u mašinski jezik koji se upisivao u mikroprocesore i kasnije mikrokontrolere.

Da napravim malu digresiju: svoje prve mašinske programe za mikroprocesor Z80 sam pisao na ZX-81 kompjuteru, ali pošto tada nisam imao asembler za njega, program sam pisao na papiru u asembleru, a onda iz tabele instrukcija ručno prevodio u brojeve koje sam, takodje ručno, upisivao u memoriju ZX-81 i izvršavao (iz ovoga se može zaključiti da nisam baš mlad). Ubrzo se pojavio čuveni paket sa asemblerom (pod nazivom GENS3M) i disasemblerom (MONS3M) i stvari su postale mnogo lakše.

Medjutim, asembler je, pošto je jezik najnižeg nivoa, ipak bio spor za pisanje jer mnogi tadašnji mikroprocesori, pa i današnji mikrokontroleri sem sabiranja, oduzimanja na nivou jednog bajta, i uporedjivanja nisu imali nikakve druge artimetičke operacije, pa je za svaku složeniju matematičku operaciju bilo potrebno napisati mnogo linija programa u asembleru te se tako pojavila potreba za drugim jezicima kod kojih se jedna linija programa prevodi u nekoliko asemblerskih, pa čak i u čitave potprograme. Tako su nastali viši programski jezici, iliti jezici višeg nivoa.
Oni su znatno ubrzali pisanje programa, ali je asemblerski jezik i danas povremeno u upotrebi - neki isključivo koriste njega jer su ili takve potrebe, ili su oni jednostavno zaljubljenici (neki bi rekli zaludjenici), a neki kombinuju viši programski jezik sa kritičnim delovima pisanim u asembleru jer se najbolja i napreciznija kontrola ostvaruje upravo primenom asemblera.


[Ovu poruku je menjao rsinisa dana 11.08.2012. u 00:44 GMT+1]
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182712.08.2012. u 15:58 - pre 141 meseci
Viši programski jezici
==============
Program koji je napisan u nekom programskom jeziku zove se izvorni program, a uobičajen naziv je i sors (od engleske reči source - izvor) i predstavlja u stvari tekst samog programa (tesktualni fajl) i ako su potrebne izmene, prepravi se i ponovo kompajlira. Iz izvornog programa uvek može da se napravi mašinski, dok je obrnut slučaj moguć samo za asembler (i taj program se zove disasembler).

Kao što smo već rekli, viši programski jezici su se javili zbog potrebe bržeg pisanja programa i ograničenih mogućnosti mikroprocesora i mikrokontrolera. Npr. jedan prost izraz u nekom višem programskom jeziku kao što je:

a = 2 + 3

bi u PIC asembleru izgledao otprilike ovako:

movlw 2
addlw 3
movwf a

Iako je ovo najprostiji primer, već se ovde vidi koliko je za čoveka prirodnije napisati ovaj izraz u višem jeziku. Za izraz tipa:

a=(2 + 3) * 4

ne treba ni trošiti vreme, pogotovo što PIC koji ćemo da koristimo nema instrukciju za množenje, tako da bi ceo ovaj program imao desetak linija u asembleru.

Možemo da kažemo da danas na tržištu postoje praktično 3 viša programska jezika za PIC MCU, a to su: C, BASIC i PASCAL.

C je definitivno postao standard i ako želite da se zaposlite u nekoj firmi ili prodajete svoje izvorne programe drugima, najbolje da se odmah opredelite za njega; mada, ako ste baš apsolutni početnik i nemate drugi način da naučite osnove, krenite od ovog tutorijala, naučite osnove PBP-a pa se prebacite na C.
Ja sam pre mnogo godina napisao nekoliko programa za PC u C-u, ali mi je njegova sintaksa jednostavno odbojna i meni je on potpuno nezanimljiv i nisam ga koristio za mikrokontrolere. Obzirom da nemam iskustva sa C-om, mogu samo da pretpostavim da je njegova sintaksa standardizovana kod svih proizvodjača i verujem da su razlike, ako postoje, minimalne tako da bi, kada jednom savladate C, trebalo bez većih problema da možete da pišete programe za razne MCU-e.

Meni BASIC sasvim odgovara za moje skromne potrebe, mada moram da kažem da sam u BASIC-u pisao bez problema i znatno složenije programe. Ako pišete programe isključivo za sebe i svoje potrebe, možete slobodno da se posvetite BASIC-u, sintaksa nije komplikovana mada se malo razlikuje kod nekih kompajlera, ali ćete moći za kratko vreme da je savladate. Kao što smo već rekli, koristićemo PICBasic Pro kompajler koji je relativno skroman po svojim mogućnostima, ali po mom iskustvu sasvim je primeren PIC-u na kome ćemo da učimo.
Takodje prilično popularan, a veoma sličan PBP-u je PROTON BASIC kompajler koji ima nešto više instrukcija i većina programa pisanih u PBP-u može uz minimalne izmene da se kompajlira u PROTON-u.

Kada je u pitanju PASCAL, znam jedino za "MikroPASCAL PRO" domaćeg proizvodjača "Mikroelektronika"; možda postoje i drugi, ali meni nije poznato.

Većina viših programskih jezika omogućava mešanje i asmeblerskih instrukcija jer, kako smo već rekli, jedino uz pomoć njega možemo da napišemo kritične delove programa za koje moramo da znamo tačno za koje vreme se izvršavaju ili koje sve registre menjaju i sl. U većini slučajeva to nije neophodno, ali ja volim da u PBP ubacujem ponegde i asemblerske instrukcije pa će biti toga i u ovom tutorijalu. Još jedan razlog zbog koga volim je PBP što je stil pisanja donekle sličan asembleru pa imam utisak skoro potpune kotrole dešavanja.

Kako se pišu programi
===============
Moderni kompajleri imaju takozvano integrisano razvojno okruženje (na engleskom IDE - integrated development enviroment) u kome kucate program i pritiskom na jedan taster (ili jednim klikom na ikonicu) vaš izvorni program se prevodi u mašinski. Ako ima grešaka u programu, kompajler će da vas obavesti o tome, a ako nema, dobićete takozvani HEX fajl (fajl sa nastavkom .hex) koji se uz pomoć programatora ubacuje u mikrokontroler.
Ovde nećemo da pominjemo konkretne načine programiranja za razne programatore (sem ako bude izričitih zahteva), ali je suština kod svih maltene ista: startujete program, priključite programator na odgovarajući port računara, dovedete spoljno napajanje (ako je potrebno), podesite hardver (ako je potrebno), učitate hex fajl i kliknete na ikonu za upis programa u PIC. Posle par sekundi program će vam javiti da li je programiranje uspelo ili ne.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182713.08.2012. u 21:48 - pre 141 meseci
Iako sam planirao da teorijski uvod bude kratak, zaključio sam da je bolje da se neke bitne stvari objasne detaljno kako bi se postavila dobra osnova i neke stvari kasnije lakše shvatile. Prema tome, idemo dalje sa teorijom.

Broj(ev)ni sistemi
============
Opšte prihvaćen izraz je brojni sistem, mada se meni izraz brojevni sistem čini logičnijim, ali ćemo ipak koristiti prvi. Pre nego što obradimo temu, moram da kažem da sam primetio da neki ljudi ne razlikuju termin "broj" od "cifra", pa treba reći da je broj sastavljen od cifara, cifra je osnovni element za zapisivanje brojeva, kao što je slovo za reči.

Šta je brojni sistem? To je sistem, odnosno način, zapisivanja brojeva. Čudna mi čuda, pa to smo svi naučili još u osnovnoj školi (neki i pre), svi znamo da pišemo brojeve. Tačno, ali mi smo naučili dekadni brojni sistem koji je prirodan za nas, ali zato veoma nepogodan za rad sa digitalnom elektronikom. U tekstu o mašinskom jeziku napomenuli smo da mikrokontroleri mogu da rade sa samo dva stanja, a to su 0 i 1, što znači da znaju da rade samo u binarnom brojnom sistemu pa je dobro da ga i mi naučimo kako bi smo bolje razumeli neke stvari.

Hm, ako postoje dekadni i binarni, da li postoje još neki brojni sistemi? Naravno, moguće je napraviti bilo koji brojni sistem, sa bilo kojim brojem cifara, samo je pitanje ima li ikakve svrhe koristiti brojni sistem sa npr. 7 cifara (0, 1, 2, 3, 4, 5, 6). Ili npr sa 13 cifara, tačnije znakova. Doduše, sistem sa 3 cifre: 0, 1 i 2 koji bi se zvao (verovatno) trinarni bi imao primenu u realnom svetu, s tim što bi možda bolje bilo da brojevi budu -1, 0 i 1. Jedan od primera bi bio lift: 0 bi značilo da lift stoji, 1 da ide naviše, a -1 da ide naniže. Nekada se koristio i oktalni brojni sistem (sa osnovom 8), mada ga ja u praksi do sada nisam susreo.

Postoji još jedan brojni sistem koji se često koristi u praksi, zove se heksadekadni i koristi 10 cifara i 6 znakova, a to su: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E i F, gde slova od A do F predstavljaju brojeve od 10 do 15 respektivno. Videćemo kasnije čemu on služi.

Broj cifara koji čine brojni sistem zove se baza ili osnova, što znači da je dekadni sistem u stvari sistem sa osnovom 10, binarni sa osnovom 2, heksadekadni sa osnovom 16 itd. Svaki od ova 3 ćemo da obradimo detaljnije.


[Ovu poruku je menjao rsinisa dana 13.08.2012. u 22:58 GMT+1]
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182714.08.2012. u 21:26 - pre 141 meseci
Dekadni brojni sistem
===================
To je brojni sistem koji srećemo svuda oko nas i koji je za ljude potpuno prirodan jer je nastao iz činjenice da mi imamo 10 prstiju. Da smo se rodili sa 8, najverovatnije da bi oktalni sistem bio nama najpogodniji i da nam dekadni nikada ne bi zatrebao.
Na dekadnom sistemu ćemo da shvatimo princip formiranja brojeva i računanja njihovih vrednosti što će da nam pomogne da lakše shvatimo isto to za bilo koji drugi brojni sistem.

Uzećemo, na primer, broj 3747, za koji svi znamo koja je to vrednost i znamo da krajnja leva cifra označava koliko ima hiljada u njemu, druga cifra gledano sa leva označava koliko ima stotina, treća cifra sa leva označava koliko ima desetina i poslednja sa leva označava koliko ima jedinica. To znači da ovaj broj možemo da napišemo i ovako:
3*1000 + 7*100 + 4*10 + 7*1.

Krajnja leva cifra u svakom broju zove se cifra najveće težine i kako idemo u desno tako vrednost cifre opada, a krajnja desna je cifra najmanje težine što se i vidi iz razloženog zapisa broja - vidimo da u našem broju imamo dve iste cifre, dve sedmice, ali vidimo da leva sedmica ima veću težinu jer označava stotine, dok krajnja desna sedmica označava jedinice. Vidimo da je vrednost svake leve cifre tačno 10 puta veća od one sa desne strane, a to je upravo zato što koristimo dekadni sistem, odn. sistem sa 10 cifara. Kada smo to shvatili, vidimo da isti izraz možemo da napišemo i ovako:
3*103 + 7*102 + 4*101 + 7*100
Malo objašnjenje za one koji ne stoje najbolje sa stepenovanjem: svaki broj stepenovan sa nulom jednak je 1, zato smo i krajnju desnu cifru upravo napisali korišćenjem osnove 10 stepenovanu sa nulom.

Vidimo da se broj 10 stepenuje sa mestom na kome se nalazi umanjenim za 1: za cifru na prvom mestu (krajnjem desnom) broj 10 (osnova) stepenuje se sa 0, za cifru na drugom mestu osnova se stepenuje sa 1, za cifru na trećem mestu osnova se stepenuje sa 2 i tako dalje. To znači da npr. broj 253068 možemo da predstavimo sledećim izrazom:
2*105 + 5*104 + 3*103 + 0*102 + 6*101 + 8*100
Ovde je cifra najveće težine 2 (na engleskom: most significant digit, skraćeno MSD), a cifra najmanje težine je 8 (na engleskom: less significant digit, skraćeno LSD).

Iz svega ovoga proizilazi formula kojom možemo da izračunamo dekadnu vrednost bilo kog broja zapisanog u bilo kom drugom brojnom sistemu:

Xn * Bn-1 + Xn-1 * Bn-2 + ... + X2 * B1 + X1 * B0

gde X predstavlja cifru na nekom mestu, n mesto na kome se nalazi cifra gledano sa desna u levo, i B bazu (osnovu) brojnog sistema (10 za dekadni, 2 za binarni, 16 za heksadekadni itd).

PBP ne "poznaje" decimalne brojeve, ali ćemo ukratko, radi kompletnosti teksta, napisati i kako se zapisuju decimalni brojevi, što je, videćete, vrlo jednostavno, a i logično.
Broj 42,573 primenom izraza za dekadni sistem može da se napiše kao:

4*101 + 2*100 + 5*10-1 + 7*10-2 + 3*10-3

dok bi univerzalni izraz izgledao ovako:

Xn * Bn-1 + Xn-1 * Bn-2 + ... + X2 * B1 + X1 * B0 + X-1 * B-1 + X-2 * B-2+ ... + X-n * B-n

gde se mesta desno od decimalnog zareza obeležavaju sa -1, -2 itd. gledano od zareza.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182717.08.2012. u 12:25 - pre 141 meseci
Binarni brojni sistem
==============
Kao što mu ime kaže, sastavljen je od samo 2 cifre, 0 i 1, i uz pomoć njih moguće je predstaviti sve brojeve, pa čak i decimale. One nas, za sada, ne zanimaju pa ćemo ukratko da obradimo cele brojeve.
Pošto imamo samo dve cifre, kako ćemo onda napisati npr. broj 2? Isto kao i kod decimalnog sistema, dopisivanjem cifara veće težine. Za broj 0 treba nam samo jedna cifra i on se u binarnom sistemu piše kao i u bilo kom drugom: 0. Broj jedan takodje se logično piše: 1. Pošto cifra 2 ne postoji u binarnom sistemu, moramo da prenesemo jednu cifru na mesto veće težine pa ćemo broj 2 da predstavimo sa: 10. Broj 3 predstavljamo tako što uvećavamo za 1 cifru najmanje težine pa pišemo: 11. Napisaćemo sada tabelu sa nekoliko prvih binarnih brojeva i njihovih dekadnih vrednosti:

0 = 0
1 = 1
10 = 2
11 = 3
100 = 4
101 = 5
110 = 6
111 = 7
1000 = 8
1001 = 9
1010 = 10 itd.

Proverićemo sada pomoću gore napisane formule da li je dekadna vrednost binarnog broja 1001 zaista 9.
Ako u formuli

Xn * Bn-1 + Xn-1 * Bn-2 + ... + X2 * B1 + X1 * B0

zamenimo B sa 2, jer je za binarni brojni sistem to baza, dobićemo sledeće za 1001:

1*23 + 0*22 + 0*21 + 1*10 = 8 + 0 + 0 + 1 = 9
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182719.08.2012. u 16:27 - pre 140 meseci
Bit, bajt, vord
=========
Pre nego što predjemo na heksadekadni sistem, ovo je idealan momenat da objasnimo pojmove kao što su bit, bajt i vord.

Bit
---
U svetu digitalne elektronike binarni sistem je osnova svega jer je sve predstavljeno sa samo 2 nivoa: 0 za nema napona i 1 za ima napona. Da budem skroz precizan, postoji i nešto što se zove negativna logika gde su sada stanja zamenjena, pa se 0 upotrebljava za informaciju da ima napona, a 1 da nema.
Npr. ako imamo jedan prekidač, potrebna nam je informacija da li je on isključen ili uključen, i ta jedna informacija je osnovna informacija u digitalnoj elektronici koja se zove bit. Još jednom, bit je minimalna i osnovna informacija koja može da zauzme samo 2 stanja, 0 ili 1. Oznaka za bit je "b" (malo slovo b).

Bajt
----
Sa jednim bitom možemo, kao što smo videli, da prenesemo informaciju od samo 2 stanja, ali šta ako nam je potrebno da prenesemo više informacija? Zato je osmišljena veća jedinica koja se zove bajt i sastoji se iz 8 bitova što znači da je njegova maksimalna vrednost 11111111, što u dekadnom sistemu iznosi 255 (ko ne veruje neka proveri kroz formulu). Znači, jedan bajt može da sadrži ukupno 256 informacija (28), tj. bilo koji broj od 0 do 255. Oznaka za bajt je "B" (veliko slovo B).
Logično pitanje koje se postavlja je zašto je za bajt uzeto 8 bitova, a ne neki drugi broj, npr. 10? Pošto računari ne znaju za slova, interpunkcije i ostale simbole, trebalo ih je kodirati, tj. svaki od simbola predstaviti nekim brojem. Engleski alfabet ima 26 slova, sa velikim i malim slovima to čini 52, sa još 10 cifara, nekoliko znakova za interpunkciju i kontrolnih karaktera bilo bi potrebno nešto oko 100 kodova. Za 100 brojeva treba nam 7 bitova (jer sa 6 imamo samo 64 kombinacije: 26), ali je izabran broj 8 jer je u svetu digitalne elektronike sve podredjeno stepenu broja 2, a 8 je upravo 23.
Takodje treba pomenuti 1000 puta veću jedinicu, a to je kilobajt (piše se KB) koji u stvari nema 1000 bajtova već 1024. To je opet zbog stepena broja 2 jer je 210 upravo 1024, a to je najbliže broju 1000. Na isti način, 1 megabajt (MB) ima 1024 kB, tj. 1 048 576 bajtova.

Vord
----
Na engleskom se piše "word" i znači "reč", a radi se o 2 bajta, tj. 16 bitova, što znači da može da zauzme bilo koje stanje od 0 do 65535. U praksi se taj izraz povremeno sreće i za svaki broj koji ima od 9 do 16 bitova.
Nedavno sam jednom profesoru koji predaje osnove računara pomenuo tu memorijsku jedinicu, na šta je on rekao da nije čuo za to i da to ne postoji. Pa ... možda u "mudrijaškim" knjigama zaista ne postoji, ali ćete je u svetu mikrokontrolera često sretati.
Postoji još i izraz "long word" (dugačka reč) ili "double word" (dupla reč) što je naziv za 2 vorda koji sada čine jedan broj. Njegovu maksimalnu vrednost izračunajte sami.

Obzirom da je u svetu digitalne elektronike osnovna jedinica bit, krajni levi, bit najveće težine, obeležava se skraćenicom MSB (od engleskog "most significant bit" - bit najveće težine), dok se krajnji desni, bit najmanje težine obeležava sa LSB (od engleskog "less significant bit" - bit najmanje težine) što ćete povremeno sretati u praksi.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182724.08.2012. u 15:39 - pre 140 meseci
Heksadekadni sistem
==============
Iako brojni sistem sa osnovom 16 izgleda potpuno besmisleno, on je svoju praktičnu primenu u svetu računara doživeo kada je bilo potrebno zapisati veću količinu bajtova (8-bitnih brojeva). Mladjima će možda izgledati besmisleno, ali jedno vreme su se neki kratki mašinski programi, potprogrami ili tabelarni podaci za programe štampali u računarskim časopisima kako bi korisnici mogli da ih unesu i koriste jer u to vreme nije bilo interneta ili nekog sličnog mesta sa koga bi svi mogli da ih preuzmu. Zapisivanje velike količine brojeva u dekadnom obliku niti izgleda lepo niti može lako da se prekontroliše da li smo preskočili neku cifru kod prekucavanja. Tabela sa po 8 dekadnih brojeva bi izgledali recimo ovako:
Code:
23,101,3,55,111,0,236,97
219,189,201,188,1,137,101,89

itd...

Na prvi pogled se vidi da brojevi nisu zapisani jedan ispod drugog jer imaju različit broj cifara, i da izmedju svaka 2 broja stoji zarez. Ako sad pogledamo jedan bajt u binarnom obliku vidimo da tih 8 bitova možemo da podelimo u dve grupe od po 4 (grupa od 4 bita zove se nibl - na engleskom: nibble), od kojih svaka ima 16 mogućih stanja (eto prilike za primenu ovog brojnog sistema) i vidimo da sada svaki bajt zapisan u heksadekadnom obliku zauzima tačno 2 mesta i da nam onda čak ni zarezi nisu potrebni za odvajanje susednih brojeva, pa bi gornja tabela izgledala ovako:
Code:
176503376F00EC61
DBBDC9BC01896559

što izgleda neuporedivo urednije i znamo da u svakom redu moramo da imamo 16 znakova.

Prilično uobičajeno je i da se adrese memorijskih lokacija zapisuju u tom formatu.

Za vežbu ćemo heksadekadni broj A7E da pretvorimo u dekadni po već navedenoj formuli pa kad zamenimo šta treba dobijemo sledeći izraz:

A*162 + 7*161 + E*160 = 10*162 + 7*161 + 14*160 = 10 * 256 + 7 * 16 + 14 * 1 = 2686
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182730.08.2012. u 20:13 - pre 140 meseci
Obeležavanje brojnih sistema
===================
Kada radimo sa više brojnih sistema moramo nekako da obeležimo broj kako bi smo znali u kom brojnom sistemu je zapisan. Npr. broj 1011 može da bude zapisan u bilo kom brojnom sistemu, a u matematici se to obeležava ovako:
101110 dekadni sistem
10112 binarni sistem
101116 heksadekadni sistem

U programiranju se to obeležava nešto drugačije jer je ovakav način zapisivanja nepraktičan pri kucanju na tastaturi. Najčešći načini zapisivanja su:
dekadni sistem = 1011,
binarni sistem = %1011 ili b1011 ili 1011b
heksadekadni sistem = $1011 ili 1011h illi 0x1011

PBP koristi načine koji su prvi prikazani za svaki od sistema.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182702.09.2012. u 17:06 - pre 140 meseci
Pretvaranje dekadnog broja u druge brojne sisteme
=================================
Najlakši način prebacivanja brojeva iz jednog u drugi brojni sistem su kalkulatori; u linuxu za to možete da upotrebite "galculator", a u windowsu onaj koji dolazi u standradnoj instalaciji: odaberete brojni sistem u kome je broj zapisan, otkucate ga i zatim kliknete na dugme koje označava drugi brojni sistem i na ekranu se pojavi rezultat.
Ako nemate pri ruci kalkulator pokazaćemo kako se to radi na primeru pretvaranja dekadnog broja u binarni. Nećemo da pišemo formulu, ali bi algoritam mogao da se opiše ovako:
broj koji pretvaramo deli se sa osnovom brojnog sistem u koji ga pretvaramo. Rezultat zapisujemo sa 2 broja, ceo broj i ostatak. Zatim taj ceo broj iz rezultata ponovo delimo sa osnovom i rezultat zapisujemo sa 2 broja i tako sve dok ne dodjemo do nule. Da bi to sve bilo jasnije, evo primera:
Pretvorićemo dekadni broj 19 u binarni.

19/2=9 (1)
9/2=4 (1)
4/2=2 (0)
2/2=1 (0)
1/2=0 (1)

Sada ostatke čitamo odozdo na gore i zapisujemo sa leva na desno:
10011
I eto našeg binarnog broja.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182702.09.2012. u 17:17 - pre 140 meseci
Da bi ste mogli da pratite praktične lekcije koje će da uslede posle teorije biće Vam potreban razvojni sistem na kome ćete sve to i da isprobate. On je u pripremi, uskoro će biti objavljeni svi fajlovi potrebni za samogradnju kao i shema. Sve vezano za ovaj razvojni sistem možete da pročitate (a i pitate) u ovoj temi:
http://www.elitesecurity.org/t454860-PIC-razvojni-sistem
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182707.09.2012. u 21:39 - pre 140 meseci
Algoritam
=======
U prošloj lekciji smo pomenuli algoritam, pa da vidimo šta je to jer može da nam bude od koristi kod pisanja programa.
Jedna od zvaničnih definicija glasi: Algoritam je konačna i precizno definisana procedura, niz dobro definisanih pravila, kojom se ulazne vrednosti transformišu u izlazne, ili se opisuje izvršavanje nekog postupka. Jednostavnijim rečnikom rečeno, algoritam predstavlja opis izvršavanja nekog postupka razložen na pojedinačne korake i svaki korak mora biti potpuno jasan i nedvosmislen. To znači da npr. neki kulinarski recept možemo da smatramo algoritmom jer opisuje sve korake jednog postupka.

Npr. algoritam za pečenje palačinki može da izgleda ovako: 1. zamesiti testo za palačinke, 2. ostaviti da odstoji pola sata, 3. uključiti ringlu, 4. staviti tiganj na ringlu, 5. sipati testo u tiganj, 6. ispeći sa obe strane i izvaditi iz tiganja, 7. vratiti se na korak 5.
Za neke je ovo sasvim dovoljan opis, ali za neupućene nije dovoljno precizno jer ne znaju šta ide u testo, pa umesto tačke 1. može da se napiše preciznije taj deo postupka: uzeti brašno, jaja, mleko i pomešati sve zajedno. I ovako možemo da razložimo na još preciznije postupke svaku tačku za koju ne znamo dovoljno precizno kako da je izvedemo; time olakšavamo obavljanje postupka i smanjujemo mogućnost greške. Medjutim, dobar algoritam ne samo da sadrži detaljno opisan kompletan postupak već mora da sadrži postupke u slučaju kada nisu svi uslovi ispunjeni, kao i postupke u slučaju greške. Npr. posle tačke 4. možemo da dodamo tačku u kojoj proveravamo da li se ringla ugrejala na potrebnu temperaturu, i ako nije onda možemo da proverimo da li ima struje i sl. Takodje tačku 7. možemo da modifikujemo ovako: 7. vratiti se na korak 5 ako ima još testa, u protivnom isključiti ringlu i završiti postupak.

Algoritam može da se predstavi na nekoliko načina, a najčešći su: prirodni govorni jezik i dijagram toka. Algoritam opisan prirodnim jezikom smo upravo predstavili na primeru pečenja palačinki, a evo kako bi mogao da izgleda algoritam za popravku neispravne lampe predstavljen dijagramom toka (preuzeto sa wikipedije):



Za programere algoritam može da bude od velike koristi, pogotovo kada je u pitanju neka složenija procedura. Kada se jednom napiše, posle ga je moguće prevesti na bilo koji programski jezik prevodjenjem koraka u odredjene programske komande.
Za one sa manje programerskog iskustva preporučujem da za početak pišu algoritme za ceo program (ionako su početnički programi uglavnom jednostavni i kratki) jer mogu da im uštede mnogo časova nerviranja i traženja greške u programu samo zato što su prevideli neki korak.
Ovaj tutorijal neće više da se bavi ovime pa za više informacija o pisanju algoritama pogledajte na internetu, npr ovaj link:
http://bs.wikipedia.org/wiki/P...entarne_algoritamske_strukture
Prikačeni fajlovi
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182718.09.2012. u 20:03 - pre 139 meseci
ASCII kodovi
=========
Već smo rekli da računari, tj. procesori, razumeju samo binarni oblik, ne poznaju slova, brojeve, interpunkcijske znakove i sl. pa je bilo potrebno da se svi ti znaci kodiraju, odn. da im se dodele brojevi - svaki znak jedan broj. Prvi standard je zvanično predstavljen 1963. godine, bio je 7-bitni, baziran na engleskom alfabetu, i služio je za komunikaciju pomoću teleprintera. Nazvan je ASCII (čita se aski) što je skraćnica od engleskog izraza "American Standard Code for Information Interchange" (američki kodni standard za razmenu informacija).

Sa 7 bitova moguće je ostvariti 128 kombinacija što je u ono vreme bilo sasvim dovoljno za namenu za koju je osmišljen jer je tu bilo mesta za sve znakove engleskog alfabeta i još za nekoliko kontrolnih kodova, tačnije 95 znakova za prikaz i 33 kontrolna karaktera (od kojih je većina zastarela). Evo tabele tih 128 znakova (preuzeto sa wikipedije):


Pomoću ove tabele možemo da odredimo heksadekadni broj (kod) za svaki prikazani karakter koji se odredjuje tako što se prvo pročita vertikalni, a zatim horizontalni znak. Npr. broj "0" ima kod $30, a veliko slovo "A" ima kod $41.

Pojavom računara koji su radili sa bajtovima (8 bitova) pojavilo se 128 praznih kodova, od 128 do 255, u koje su smešteni razni grafički karakteri koji su se koristili za crtanje jednostavnije grafike. Širenjem računara po celom svetu ukazala se potreba za novim znakovima koji su specifični za odredjenu zemlju, kao što su naša slova "čćšžđ" ili grčki alfabet, pa su izmišljene kodne strane kod kojih je prvih 128 znakova identično prvobitnoj tabeli, a u drugoj polovini tabele su smeštani potrebni specifični znaci i simobli. Nama kodne strane nisu bitne jer ćemo uglavnom da koristim kodove koji su standardizovani po IBM standardu ili koji su ubačeni u periferiju koju koristimo (npr. LCD displej).

Prikačeni fajlovi
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182728.09.2012. u 22:10 - pre 139 meseci
Analogna i digitalna elektronika
====================
Nekoliko puta do sada smo pomenuli termin "digitalna elektronika" pa pre nego što objasnimo šta je to, da pomenemo da pored nje postoji i analogna elektronika.

Analogna elektronika
-------------------------
Definicija analogne elektronike bi mogla da glasi ovako: analogna elektronika operiše sa kontinulanim signalima po vremenu i amplitudi. Kontinualni signali su definisani u svakom vremenskom trenutku i mogu imati bilo koju vrednost amplitude.

Analogni signal ima praktično bezbroj vrednosti izmedju minimalne i maksimalne, samo je pitanje koja je preciznost instrumenta kojim se meri i koja je preciznost nama potrebna, odnosno dovoljna. Analogni signal je veoma podložan promenama usled smetnji.

Analogna elektronika je nastala iz činjenice da je većina fizičkih veličina analognog tipa, tj. da se menjaju kontinualno kao što su brzina, temperatura, pritisak itd. pa su napravljeni senzori koji tu veličinu pretvaraju u analogni električni signal. Evo kako bi mogao da izgleda grafik nekog analognog signala:




Digitalna elektronika
------------------------
Digitalna elektronika operiše sa diskretnim signalima. Diskretni signali mogu imati vrednost amplitude iz tačno određenog skupa, što je diskretizacija po amplitudi, i biti definisani samo u određenim vremenskim trenucima, što je diskretizacija po vremenu.
Diskretni signal je onaj kod koga je za odredjeni vremenski period amplituda signala konstantna, a zatim se menja na drugi konstantni nivo.
Mi smo već pomenuli da te nivoe obeležavamo sa 0 i 1, ali oni imaju svoje apsolutne vrednosti. Dugo su te dve vrednosti bile 0V i 5V, ali su u poslednje vreme veoma česte vrednosti od 0V i 3,3V.

Postoje i vrednosti koje nisu dozvoljene, odn. ako se napon nadje u nedozvoljenim granicama kažemo da signal nije definisan.
Za PIC 16F1827 maksimalna vrednost napona za logičku nulu se kreće od 0,8V do 1,5V, a minimalna za logičku jedinicu je od 2 do 5V, pri naponu napajanja od 5V. Sve vrednosti izmedju njih se smatraju nedozovoljenim. Granične vrednosti bi trebalo da budu fiksne, ali PIC ima raznovrsne hardverske komponente pa su prema njima odredjene i granice. Baš zbog činjenice da postoje granice, digitalni signal je mnogo otporniji na smetnje.

Evo primera jednog digitalnog signala:



[Ovu poruku je menjao rsinisa dana 28.09.2012. u 23:25 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182706.10.2012. u 11:44 - pre 139 meseci
AD i DA konvertori
=============
Vidimo da su analogna i digitalna elektronika dva potpuno različita sveta, signali su potpuno drugačiji i zbog toga nije moguće direktno povezivanje već nam je potreban prevodilac.

Znamo da nam je za govorni jezik dovoljan jedan prevodilac jer on može da prevodi u oba smera - prvo sluša na jednom, a zatim priča na drugom jeziku (jedan smer), nakon toga radi obrnuto.
U svetu elektronike su vam najčešće potrebna dva prevodioca, po jedan za svaki smer. To nije zato što je nemoguće smestiti oba na isti čip, već zato što nam najčešće nisu potrebna oba istovremeno, vrlo često je potreban samo jedan i to onaj koji prevodi analogni u digitalni signal.

Prevodilac koji prevodi signal iz analognog u digitalni zove se, sasvim logično, analogno-digitalni konvertor i u tekstovima se predstavlja na jedan od tri načina: ADC, AD konvertor ili A/D konvertor.
Prevodilac koji radi suprotnu stvar se, opet sasvim logično, zove digitalno-analogni konvertor i predstavlja se sa: DAC, DA konvertor ili D/A konvertor.

U prvim danima digitalne elektronike postojali su samo posebni čipovi, a pojavom mikrokontrolera sve je češća praksa da se u njih smešta samo ADC, samo DAC ili oba.
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.dynamic.isp.telekom.rs.



+321 Profil

icon Re: TUTORIJAL: PicBasic Pro 3 i PIC16F182706.10.2012. u 21:24 - pre 139 meseci
AD konvertor
=========
Princip rada
--------------
Uprošćeno gledano, princip rada ovog konvertora je relativno jednostavan - u nekom trenutku uzme uzorak analognog signala, zadrži ga, i nekom od mnogobrojnih metoda taj uzorak pretvara u digitalni oblik. Videli smo da analogni signal menja vrednost kontinualno tokom vremena pa je neophodno uzeti uzorak i zadržati ga tokom pretvaranja kako bi ta vrednost bila na istom nivou dok traje taj proces. Tu ulogu ima ulazni deo konvertora koji se zove "sample and hold", odn. "uzmi i zadrži", i najčešće se sastoji od kondenzatora spojenog na signal koji "uzima" uzorak signala, i prekidača koji odspaja kondenzator od ulaznog signala kako se uzeta vrednost ne bi promenila.
Neke od karakteristika AD konvertora su: broj bitova (tj. rezolucija), referentni napon, brzina konverzije i tip izlaza (serijski ili paralelni).

Broj bitova
--------------
Broj bitova odredjuje sa koliko različitih stanja AD konvertor može da predstavi analognu veličinu. Ako je to 8, znači da mereni signal možemo da predstavimo sa 256 različitih stanja. Ako imamo 10 bitova, kao PIC koji ćemo da koristimo, znači da imamo 1024 moguća stanja. Koliko je meni poznato, danas postoje AD konvertori do 32 bita, što je veoma velika rezolucija, odn. analogni signal može da se predstavi sa preko 4 milijarde stanja.
Postavlja se pitanje koja rezolucija je dovoljna? Sve zavisi od konkretnog slučaja, ali da uzmemo primer kada želimo na digitalnom displeju da prikažemo napon laboratorijskog ispravljača koji daje napon od 0 do 30V. Ako uzmemo 8-bitni AD, to znači da ceo opseg ispravljača (30V) možemo da podelimo na 256 stanja (30 / 256) i vidimo da dobijemo minimalni korak od 0,117V. Za ozbiljan laboratorijski ispravljač je to praktično premalo pa hajde da vidimo kakva je situacija sa 10 bitova, sa kojima imamo 1024 mogućih stanja. Kada podelimo 30 sa 1024, dobijemo minimalni korak od 0,029V što je sasvim zadovoljavajuće za tu namenu. Naravno, što veća rezolucija to bolje, ali povećanje rezolucije unosi neke probleme. Po meni, 10 bitova je sasvim dovoljna rezolucija za većinu primena, a i 8 zna da bude dovoljno.


[Ovu poruku je menjao rsinisa dana 06.10.2012. u 22:44 GMT+1]
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: TUTORIJAL: PicBasic Pro 3 i PIC16F1827
(TOP topic, by veselinovic)
Strane: 1 2 3 4 5

[ Pregleda: 53943 | Odgovora: 88 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.