Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pitanja u vezi tutorijala | Programiranje PIC mikrokontrolera u jeziku C
#22
<p>Da pomognem malo Mikiju sa nekim korisnim detaljima.</p>
<p>&nbsp;</p>
<p>Možda bi za početnike bilo dobro da krenu odmah od PIC18F modela...</p>
<p>&nbsp;</p>
<p>Nema arbitracije sa memorijskim bankama (linearno adresiranje), PLL&nbsp; za&nbsp; &gt;=40MHz oscilatora.</p>
<p>&nbsp;</p>
<p>Sve je isto kao kod starog PIC16F877 osim brzine i prilično dosadne i ponekad nezgodne arbitracije memorijskim bankama.</p>
<p>&nbsp;</p>
<p>Jedan od najjednostavnijih, kod koga se hardver poklapa sa PIC16F877 i/p&nbsp; je PIC18F452 i/p.</p>
<p>&nbsp;</p>
<p>Pinovi su potpuno kompatibilni.</p>
<p>&nbsp;</p>
<p>U njega se mogu bukvalno preneti sa beznačajnim izmenama svi programi pisani za PIC16F877, za koga postoji gomila besplatnih tutorijala i primera.</p>
<p>&nbsp;</p>
<p>Ovo je samo predlog za one koji bi praćenjem nekog primera za PIC16F877 još lakše to radili sa PIC18F452 jer je mlađi i napredniji model, a kompatibilan.</p>
<p>&nbsp;</p>
<p>Oba su prilično stari modeli, ali zato jednostavni i sa dovoljno mogućnosti za vrlo ozbiljne naprave.</p>
<p>&nbsp;</p>
<p>Sa bilo kojim od njih se može napraviti PLC sa 25in/out (bez ekspandera)&nbsp; +&nbsp; tastatura&nbsp; +&nbsp; LCD&nbsp; +&nbsp; RS232 komunikacija za online upisivanje bootloaderom, čim se može upravljati prilično složena mašina.</p>
<p>&nbsp;</p>
<p>Za početak ne treba birati model sa mnogo specijalnih modula unutra, jer početniku je uvek najteže da raskrsti sa setovanjem tih modula. Za upoznavanje SFR registara je potrebno vreme.</p>
<p>&nbsp;</p>
<p>Kod PIC18F452 je dovoljno u funkciji inicijalizacije (konfiguracije) MCU samo napisati instrukciju</p>
<p>&nbsp;</p>
<p>ADCON1 = 0x07;&nbsp; /* adc off */</p>
<p>&nbsp;</p>
<p>i svi će pinovi postati digitalni, što je početniku i najpotrebnije.</p>
<p>&nbsp;</p>
<p>Ako to ne uradite, taj MCU je inicijalno postavljen sa uključenim A/D konvertorima na ANx pinovima, što je za početnika prerano i napraviće mu zbrku.</p>
<p>&nbsp;</p>
<p>Posle toga se lako mogu obavljati razni blink testovi i slično.</p>
<p>&nbsp;</p>
<p>Vlo mladi modeli imaju gomilu modula unutra i zahtevaju vremena i posla za njihovo pravilno setovanje.</p>
<p>To vam je kao kod novijih mobilnih telefona: bezbroj mogućnosti a treba vam samo nekoliko :-).</p>
<p>Lakše je zato početi od jednostavnijih.</p>
<p>-------------------------------------</p>
<p>Kod većine PIC kontrolera korisnički pinovi mogu biti ulazni ili izlazni, po izboru.</p>
<p>&nbsp;</p>
<p>Kada se konfigurišu kao ulazni, onda imaju vrlo visoku ulaznu impendansu, jednaku uobičajenim logičkim kolima iz CMOS serije (serija 40xx ili 45xx).</p>
<p>&nbsp;</p>
<p>Za razliku od CMOS kapija, kada se na PIC pinovi koriste kao izlazni, mogu raditi sa +-25 mA po pinu, a u datasheet-u treba pogledati koliko ih odjednom sme davati toliko struje.</p>
<p>&nbsp;</p>
<p>+25mA znači da svaki pin kao izlazni može davati potrošaču 25mA iz +5V napajanja(+Vdd), gde je drugi kraj potrošača na masi(-Vss). To je praktično aktiviranje potrošača stanjem 1 na dotičnom pinu.</p>
<p>&nbsp;</p>
<p>-25mA pak znači da isti taj pin može pokretati potrošač čiji je jedan kraj "okačen" na +5V(+Vdd), a pin ga aktivira stanjem 0, tj. "povuče ga ka masi.</p>
<p>&nbsp;</p>
<p>Ne mogu svi pinovi odjednom imati po 25mA zbog ograničenja discipacije MCU.</p>
<p>&nbsp;</p>
<p>Kod npr. PIC18F452 piše:</p>
<p>&nbsp;</p>
<p>Maximum current out of VSSpin ...........................................................................................................................300 mA<br>
Maximum current into VDDpin .............................................................................................................................. 250 mA</p>
<p>&nbsp;</p>
<p>To pokazuje koliko bi pinova smelo istovremeno biti opterećeno maksimalnom strujom.</p>
<p>&nbsp;</p>
<p>Ako nam je potrebno baš dosta izlaznih pinova koji bi trebalo da daju dosta struje za svoje potrošače, onda možemo primeniti "caku" da 10 pinova koristimo sa stanjem 1 kao aktivnim snabdevanjem potrošača, i istovremeno još 11 sa invertovanom logikom, tj. sa stanjem 0 kao aktivnim snabdevanjem potrošača (povuku ih ka masi).</p>
<p>Tako nećemo "overiti" na primer PIC o kome sam pisao.</p>
<p>&nbsp;</p>
<p>Takođe mnogi početnici pogreše tako što pin RA4 upotrebe kao izlaz sa aktivnim 1. Taj pin je skoro po pravilu kod većine PIC open drain, tj. ima mosfet samo ka masi. Ako se koristi kao snažniji izlaz, onda mora "povući" potrošač ka masi, ili ako je potrošač slabašan onda mora imati pull-up otpornik koji će taj potrošač snabdevati stanjem 1.</p>
<p>&nbsp;</p>
<p>Daleko je jednostavnije da se odmah naviknete da taj pin koristite uvek kao ulaz (ukoliko nužda ne zahteva drugačije).</p>
<p>&nbsp;</p>
<p>------------------------------------</p>
<p>Nekorišćene pinove kod bilo kog MCU ne treba ostaviti da "lebde". Ako postoje pinovi koji lebde mogu se događati vrlo neočekivane pojave. Oni pinovi koji su konfigurisani kao ulazi, vrlo su visokoimpendansni, pa samo približavanje ruke do njih ih može pobuditi sa mrežnim brumom od 50Hz, koji potiče sa vašeg tela, a zbog blizine mrežnih provodnika pored vas, a vrlo neočekivanim rezultatima rada :-).</p>
<p>&nbsp;</p>
<p>Ne treba ostavljati lebdeće pinove čak ni kada radite sa baterijama, na stolu postavljenom na livadi, jer i tada svojim kapacitativnim punjenjem (od trenja odeće), približavanjem i udaljavanjem od PIC možete menjati stanje na lebdećim ulazima.</p>
<p>&nbsp;</p>
<p>Važno pravilo broj 1 za početnike:</p>
<p>-nikada ne ostavljajte neupotrebljene pinove lebdećim!</p>
<p>Ili ih konfigurišite kao izlaz (i ako vam nisu potrebni), ili im stavite pull-up ili pull-down otpornike reda nekoliko do nekoliko desetina&nbsp; K, ka +Vdd ili -Vss, respektivno.</p>
<p>&nbsp;</p>
<p>Pravilo broj 2 za početnike:</p>
<p>-svakom korisničkom pinu, odmah do čipa, povežite serijski otpornik od bar 220R najmanje. Kada greškom konfigurišete pin kao izlaz, a na njemu je npr. taster ka masi ili ka Vdd, nećete spaliti MCU (mada se PIC baš teško spaljuju, ali ipak može :-). Taj otpornik će imati ulogu ograničenja struje na max. oko 22mA ma šta vi uradili sa tim pinom, a kada pin koristite kao ulaz ni malo neće smetati, jer je impendansa ulaza toliko visoka da taj otpornik biva "nevidljiv".</p>
<p>Impendansa pina kao ulaza je &gt;5Megaohm, tj. u najgorem temperaturnom uslovu mu je potrebno max, 1uA, što će na tom serijskom otporu od 220R izazvati pad napona (umanjenje veličine ulaznog signala) za 220uV, što je potpuno beznačajna veličina, Dakle. sa aspekta ulaza taj otpornik ne postoji, a u slučaju naše greške zaštitiće pin.</p>
<p>&nbsp;</p>
<p>Ja na primer tu stavljam od 330-680R, jer to je dovoljno za pogon većine LED ili optokaplerskih LED. Ne razmišljam da li će mi potrošač biti u kratkom spoju ili da li ću slučajno "nabosti" pin ka masi ili plusu...</p>
<p>&nbsp;</p>
<p>Eto nekih korisnih info uglavnom vezanih za hardver.</p>
<p>&nbsp;</p>
<p>Kada bude vremena dodaću još po nešto korisno.</p>
Reply


Messages In This Thread
Pitanja u vezi tutorijala | Programiranje PIC mikrokontrolera u jeziku C - by Macola - 02-23-2014, 03:26 AM

Forum Jump:


Users browsing this thread: 72 Guest(s)