[ goran_68 @ 29.12.2012. 00:03 ] @
Pitanja možete postavljati ovde. Takođe, dobrodošli su i svi predlozi kako bi smo zajedno unapredili temu o programiranju PIC mikrokontrolera u jeziku C.
[ yt1nvs @ 29.12.2012. 23:05 ] @
pitanje:

while(1) sta konkretno znaci ovo (1) u while petlji i da li tu moze biti neka druga vrednost i ako moze sta u stvari to znaci.


[ lestrigonac @ 29.12.2012. 23:33 ] @
Mislim da je to pre pitanje vezano za C, a ne mikrokontrolere, ali i to nekako spada u ovu oblast. :)

U zagradi while petlje se nalazi uslov koji odredjuje da li ce se petlja izvrsavati ili ne.
Kada se radi sa mikrokontrolerima mora postojati jedna beskonacna petlja u kojoj ce program da se izvrsava, jer na neki nacin samo to ima smisla.
Posto je u C-u uslov ispunjen ako je resenje nekog izraza razlicito od 0, jasno je da broj 1 predstavlja ispunjen uslov. A ako zelimo da dobijemo beskonacnu petlju, moramo da imamo izraz koji je uvek tacan. Bilo koji broj razlicit od nule je uvek razlicit od nule i samim tim je uslov uvek ispunjen. Osim broja 1 u zagradi moze da stoji bilo koji broj razlicit od nule. Ako bi stojala nula, while petlja se nikada ne bi izvrsavala. Verujem da se najcesce stavlja broj 1 zato sto se poistovecuje sa TRUE ili "ima napona" pri logickoj jedinici, a 0 predstavlja FALSE ili "nema napona".

Nadam se da je odgovor zadovoljavajuc. :)

Pozdrav,
lestrigonac
[ yt1nvs @ 29.12.2012. 23:49 ] @
Odgovor vise nego jasan,hvala.
[ goran_68 @ 30.12.2012. 17:08 ] @
I dobio si ga zaista brzo. Odlično! AKo još neko ima pitanja vezana za C izraze neka ih postavlja ovde. U drugom sam primeru dodao for i if izraze. Javite se ukoliko treba pojašnjenja i za to.
[ yt1nvs @ 24.06.2013. 21:12 ] @
Prvi put radim sa MPLAB X instalirao sam i kompajler XC8 v1.12 FREE verziju i to je sve ok.Prvi primer (za probu) sam uradio po ovom tutorijalu:

http://www.siriusmicro.com/mplabx-c.html

ali mi nije jasno zasto se ovo desava sa

__delay_ms(100);

evo screen

ne mogu da uploaduem

pa cu reci

u liniji gde je

__delay_ms(100); imam ! u crvenom krugu umesto broja linije

[Ovu poruku je menjao yt1nvs dana 24.06.2013. u 22:29 GMT+1]
[ goran_68 @ 24.06.2013. 22:20 ] @
Mora da postoji negde tekst koji prati (objasnjava) to upozorenje. Ne koristim MPLABX pa ti ne mogu reci gde da trazis. Nadji tu poruku koju ti izbacuje nakon pokusaja prevodjenja pa je daj ovde da pogledamo.
[ mikikg @ 24.06.2013. 22:57 ] @
XC8 kompajler (nevezano za MplabX) nema vise te delay funkcije. Mogu da se prepisu/portuju ali cela ideja iza toga je da se vise ne koriste takve vrste funkcija. Sve situacije gde je tako nesto potrebno se resavaju na druge nacine, npr preko tajmera ili cekajuci neki statusni bit od neke periferije.

Recimo prost ekvivalent te delay funkcije bi bilo ovako nesto:

Code:
// Insert some delay
long x;
x = 1024*1024;
while(x--);


Ovo parce code-a ce potrositi nekih 2^20 takt ciklusa da bi napravilo oko 1s pauzu sto je skroz neefikasno i jos dodatno "nestabilno" jer npr moze neki interapt to vreme da produzi pa se iz prakticnih razloga takve stvari resavaju sa tajmerima+interapt.
Naravno kod ovako velih pauza reda sekundi nije kriticno neki takt tamo-vamo ali kada se to smanji na dosta kraca vremena onda vec budu veoma primetne greske.