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

MicroC programiranje - sam pocetak

[es] :: Elektronika :: Mikrokontroleri :: MicroC programiranje - sam pocetak

[ Pregleda: 3765 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon MicroC programiranje - sam pocetak19.01.2011. u 13:41 - pre 160 meseci
Pozdrav grupi.

Ja sam ovde nesto preko godinu i duze posmatrao sta, ko i kako radi, citao teme, pratio desavanja, i pre manje od godinu dana i krenuo u neku pricu da bih se za svoje potrebe bavio programiranjem mikrokontrolera. U tu svrhu sam kupio razvojni sistem microelektronike EasydsPIC4A, sa pikonjom ds PIC30F4013, touch screen-on, ,lcd displejom.

Sad mi je posao dozvolio malo vise slobodnog vremena , te sam poceo malo da gledam tutorijale na youtube, konkretno programiranje preko microC PRO for PIC, i testiranja napravljenog programa na PIC Simulator IDE. Sad, konkretno nisam nesto jak sa C programom, ali cu polako malo preko knjiga, nesto preko tutorijala, i uz vasu pomoc i napraviti. Za sad sam gledajuci sa youtuba, i ja sam uspeo napraviti paljenje ledara na simulatoru, cilj mi je u startu da se malo uhodam sa elementarnim komandama, i da njih kombinujem u razlicitim kombinacijama, i kasnije testiram na simulatoru, a potom da to ucitam i na ovaj sistem i piconju kojeg imam

Sad na ovom microC for PIC, pisem programcic za PIC P16F84, i taj testiram na simulatoru. Programom bih sad uradio sledece, da konfigurisem port A kao ulazni, i da se kad recimo port RAO, dovedem na ON stanje, upalim izlaze na portu B. Sad posto, jos nisam uhvatio nit u programskom jeziku, negde gresim, pa bih molio za malo pojasnjenja, evo ga i kod:

void main() {
TRISA = 0xff; // definisem port A kao ulazni
TRISB = 0x00; // definisem port B kao izlazni
while (1){
PORTA
PORTB = 0x00; // gasim led na PORTB
Delay_100ms; // 1 sec pauza
PORTB = 0xff; // šalim led na PORTB
Delay_100ms; // 1 sec pauza
} while(1); // beskonacna petlja}}
}


Sta da napisem sad za PORTA, kako bih recimo aktivacijom ulaza RA0, aktivirao/zaustavio paljenje lampi.


Dakle, meni fali znanja, oko ovih komandi, kako da ih uklapam, sta koja kontretno znaci i moze, pomoc ovako preko foruma ili neki link ka nekoj knjizi u kojoj je ovo objašnjeno bi bi mi veoma znacio, ako ko ima.

Pozdrav
 
Odgovor na temu

MasterOfDisaster
Srbija

Član broj: 274933
Poruke: 71
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 14:05 - pre 160 meseci
Imas u mikroC PRO-u sa strane funkcije koje ti kontroler podrzava, pa tamo ima i f-ja "Button" kako bi proverio da li je pin na 1 ili 0...

EDIT:
Cekiraj tamo "Button" f-ju kako bi ti kod radio.

Ovako bi to izgledalo:
Code:

while(1)
  if (RA0_bit == 1)
    {
      PORTB = 0x00; // gasim led na PORTB
      Delay_100ms; // 1 sec pauza
      PORTB = 0xff; // šalim led na PORTB
      Delay_100ms; // 1 sec pauza
    }
}


A ima jedna knjiga (nisam siguran kakva je, pretpostavljam da je dobra):
http://www.mikroknjiga.rs/store/prikaz.php?ref=9788684417147

Pozdrav :)
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
adsl-66-7.teol.net.



+333 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 14:07 - pre 160 meseci
Milovane,
ako sam dobro shvatio, a mislim da jesam, ti bi trebao procitati portA i to RA0, unijeti ga u neku promjenljivu i onda tu promjenljivu baciti na port B.
Recimo:
taster = portA.0;

naravno, prethodno moras deklarisati promjenljivu taster.
E sad, ima vise nacina da upalis port b.
Jedan bi bio

if (taster==1)
{ portB=0xff }

Mozda mozes koristiti i sledeci kod

taster=portA.0; // ocitaj pin A0 i stavi u promenljivu taster
izlaz=taster*0xff ; // ako je taster=0 ( nije pritisnut taster) prom. izlaz = 0 , ako jeste pritisnut taster izlaz=0xff ili biunqarno 11111111
portB.0=izlaz ; // e sad posalji vrijednost promeljive na port b



Uf nisam pisao u c-u 5 godina-Bogdan ce me ispraviti samo dok se pojavi.

I jos nesto 100 ms nije 1 sekunda nego 0.1 sekunda.
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 15:25 - pre 160 meseci
Da obojica ste shvatili sta hocu, mada moram malo prelistati neku knjigu o C jeziku,, ovako sam samo skocio u problematiku, te me sad najvise muce sintaksne greske, koje verujem da nastaju usled loseg slaganja i ovo malo znakova i komandi sto znam. Sad me muci sledeca greska koju mi izbaci prilikom kompajliranja

6 300 Syntax Error: ')' expected, but ';' found led.c

Pitanje za ljude koji duze vremena rade u ovom programu, gde u HELP-u u ovom mikroC for PIC v4.60.0.0, da potrazim znacenje ove sifre 300.?ili kako da pretrazujem ovaj help kako bih rastumacio ove poruke koje mi izbacuje u crvenoj boji kad kompajliram.
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
178.218.202.*



+11 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 16:49 - pre 160 meseci
Syntax error znaci neka greska u kucanju ili tako nesto.
Ako ti je kod kao ono gore sto si postavio,onda ti ne treba 2 puta ono: while(1);

treba da se pise ovako:

while(1) {
//ovde
//ide
//kod
}

Ajde postuj ovde ceo kod.
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
178.218.202.*



+11 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 16:56 - pre 160 meseci
ili evo ti ceo kod koji radi:

void main(){
TRISA=255;
TRISB=0;
PORTB=0;
while(1){
if(RA0_bit){ // ako ovo nece ovako onda napisi if(PORTA.F0==1) jer ja koristim mikroC pro,pa ne znam kako je u ovom
PORTB=0;
Delay_ms(1000);
PORTB=255;
Delay_ms(1000);
}
}
}
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 19:44 - pre 160 meseci
Evo ga problematican:

void main() {
TRISA = 0xff; //setovan ulaz
TRISB = 0x00; // setovan izlaz
while (1){
if(PORTA.F == 1) (
PORTB = 0x00; // ON LEDs on PORTB
Delay_100ms; // 1 ms pauza
PORTB = 0x00; // OFF LEDs on PORTB
Delay_100ms;
while(1); // pa u krug
}
}

a evo ih i greske prilikom kompajliranja

line message no. message text unit
0 1139 Available RAM: 52 [bytes], Available ROM: 1024 [bytes]
0 122 Compilation Started P16F84.c
175 123 Compiled Successfully P16F84.c
0 122 Compilation Started __Lib_Delays.c
123 123 Compiled Successfully __Lib_Delays.c
0 126 All files Preprocessed in 30 ms
0 122 Compilation Started led.c

6 300 Syntax Error: ')' expected, but ';' found led.c
6 402 ; expected, but 'Delay_100ms' found led.c
7 424 '}' expected ';' found led.c
11 424 '}' expected '}' found led.c
0 102 Finished (with errors): 19 Jan 2011, 20:27:40 led.mcppi


sad ovo LINE je po horizontali od linije VOID MAIN, , problem su mi ove boldovane zone, linija 6 je PORTB = 0x00;

Pitanje je sad gde ja to gresim u sintaksi, ima li ili koju literaturu da trazim, gde je ovo oko sintakse pojasnjenjo, da vas negusim ovim , verovatno trivijalnim problemima.
 
Odgovor na temu

Texas Instruments

Član broj: 227540
Poruke: 272
95.180.72.*



+61 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 19:49 - pre 160 meseci
Citat:
milovanmaric: Evo ga problematican:

void main() {
TRISA = 0xff; //setovan ulaz
TRISB = 0x00; // setovan izlaz
while (1){
if(PORTA.F == 1) (
PORTB = 0x00; // ON LEDs on PORTB
Delay_100ms; // 1 ms pauza
PORTB = 0x00; // OFF LEDs on PORTB
Delay_100ms;
while(1); // pa u krug
}
}

a evo ih i greske prilikom kompajliranja

line message no. message text unit
0 1139 Available RAM: 52 [bytes], Available ROM: 1024 [bytes]
0 122 Compilation Started P16F84.c
175 123 Compiled Successfully P16F84.c
0 122 Compilation Started __Lib_Delays.c
123 123 Compiled Successfully __Lib_Delays.c
0 126 All files Preprocessed in 30 ms
0 122 Compilation Started led.c

6 300 Syntax Error: ')' expected, but ';' found led.c
6 402 ; expected, but 'Delay_100ms' found led.c
7 424 '}' expected ';' found led.c
11 424 '}' expected '}' found led.c
0 102 Finished (with errors): 19 Jan 2011, 20:27:40 led.mcppi


sad ovo LINE je po horizontali od linije VOID MAIN, , problem su mi ove boldovane zone, linija 6 je PORTB = 0x00;

Pitanje je sad gde ja to gresim u sintaksi, ima li ili koju literaturu da trazim, gde je ovo oko sintakse pojasnjenjo, da vas negusim ovim , verovatno trivijalnim problemima.


To crveno je greška, treba da stoji {.
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 20:13 - pre 160 meseci
vukboban : Nadjoh gresku, zahvaljujuci tvom kodu, u liniji pet na kraju umesto male zagrade (, treba velika {, a to onda iz meni trenutno malo poznatog razloga uzrokuje da ja imam problem u 6 liniji, jer ova velika zagrada trazi posle nje odredjene komande verovatno.

Moram ipak malo oko ovih sintaksi da odradim. Ljudi, dobih malo samopouzdanja sad, hvala vam.
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
178.218.202.*



+11 Profil

icon Re: MicroC programiranje - sam pocetak19.01.2011. u 20:49 - pre 160 meseci
Da ti kazem nesto,ja kad sam pocinjao,najvise sam gresio kod tih zagrada;od tada koristim jedan prost metod da ne bih pogresio:

za svaku funkciju(pa i main),za svaku petlju koju imas u kodu uradi ovako:

pises recimo main
void main() {

cim otvoris zagradu pritisni enter,pa jos jednom enter i zatvori zagradu.onda se strelicom vrati u prethodni prazan red i tu pisi kod.tako nikad neces zaboraviti da zatvoris zagradu.

Dalje sve funkcije i petlje koriste velike(viticaste)zagrade { i } da se oznaci pocetak i kraj.

argumenti se pisu izmedju malih zagrada ( )
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak20.01.2011. u 16:18 - pre 160 meseci
Danas evo ceo dan pretrazujem , i nadjoh neki tutorijal za C programski jezik. I mogu reci da pomaze za shvatanje oko sintakse, i drugih komandi koje se koriste. Sad shvatio sam i da postoje izvesne razlike izmedju C i mikroC jezika, ovaj mikroC bi trebalo da je razvila Mokroelektronika konkretno za svoje PIC-ove.

Sad dok sam ovo pretrazivao, primetih da postoji C, onda C+, pa i C++. Koja je sad razlika izmedju pa ova 3 programa, osim sto je pretpostavljam C prvobitni program, a ova druga dva su proistekla iz njega. Koji je sad od ova 3 najpriblizniji ovom mikroC, mada meni i ne lici da su neka odstupanja velika izmedju C i mikroC.
 
Odgovor na temu

MasterOfDisaster
Srbija

Član broj: 274933
Poruke: 71
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: MicroC programiranje - sam pocetak20.01.2011. u 16:59 - pre 160 meseci
Ja za C+ nisam cuo al' ko zna :)

C++ ti je objektno orijentisan i nije za mikrokontrolere, taj C koji ima razlike od 'microC-ovog C-a' je ustvari isti C kao i taj iz tih tutorijala,
samo sto ima prilagodjene f-je za mikrokontrolere, pa ti se zato cini da je razlicito.

Bilo kako bilo ako ti je cilj da programiranje koristis za mikrokontrolere cepaj taj tutorijal i pomocice ti dosta u programiranju.

Pozdrav :)
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak21.01.2011. u 19:18 - pre 160 meseci
Sad, htedoh da napisem sledece, imam dva nezavisna ulaza F0 i F2, i svakom od njih dodeljene izlaze 0xC0 i 0x0F. Zamisao mi je da se svaki ulaz/izlaz zasebni za sebe (F0/0xC0 i F2/0x0F), to jest da nema uticaj ukljucenja ulaza F2 na izlaz ulaza F0. Ali meni ukljucenje drugog ulaza ima uticaja na izlaz prvog, i obratno, te mi izlaz ode u oscilaciju. Evo ga i kod

void main(){
TRISA=0xff; //def.ulazni
TRISB=0x00; //def.izlaz
while(1)
{
if(PORTA.F0==1){ // ako je aktivan RA0
PORTB=0xC0; // aktiviraj izlaze C0
}
{
if(PORTA.F2==1) // ako je aktivan RA0
PORTB=0x0F; // aktiviraj izlaze 0F
}
}
}

Sta mi fali u kodu da bi svaki I/O bio sam za sebe?
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
178.218.202.*



+11 Profil

icon Re: MicroC programiranje - sam pocetak21.01.2011. u 20:31 - pre 160 meseci
Ne fali ti nista u kodu.
Ti si mu rekao ovako:ako ima log1 na F0 onda je PORTB=neka vrednost.
ako ima signala na F2 onda je PORTB=neka druga vrednost.

I kod to i radi,kad dobije ulaz,onda ti na CEO port stavi zadatu vrednost.Izlaz ne treba da ti bude ceo port,nego samo jedan pin na tom portu.

Za ulaz F0 imas izlaz na portuB=C0,a to je 11000000 binarno,znaci da ce da ukljuci pinove F6 i F7,a sve druge da iskljuci.
Za ulaz F2 imas izlaz na portuB=0F,a to je 00001111 binarno,znaci da ce da ukljuci F0,F1,F2,F3,a sve druge da iskljuci.

Imas nekoliko resenja za ovo:

Ili definisi svaki izlazni bit posebno :

if(PORTA.F0==1){
PORTB.F7=1;
PORTB.F6=1;
}
if(PORTA.F2==1){
PORTB.F0=1;
PORTB.F1=1;
PORTB.F2=1;
PORTB.F3=1;
}

ili mozes i ovako:

if(PORTA.F0==1) PORTB=PORTB || 0xC0;
if(PORTA.F2==1) PORTB=PORTB || 0x0F;

ali u oba ova slucaja ti se samo prvi put kad dodje signal na ulazni pin menja stanje izlaza sa log0 na log1.Ti ga u kodu nigde ne gasis,odnosno nigde nema uslova da ako nemas signala na ulazu,da ga nema ni na izlazu!

Tebi ce na PORTB da budu sve nule,sve dok ne dobijes neki od ova dva ulaza.Posle toga ce se dobiti odgovarajuci izlazi,ali ce oni uvek ostati na HIGH (log1),bez obzira da li je nestalo signala na ulazima.

dodaj jos jedan red u kodu koji bi to sve gasio ako nema ulaznog signala:

if(!PORTA.F0==1 || !PORTA.F2==1) PORTB=0;
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak21.01.2011. u 20:46 - pre 160 meseci
OK, ukapirao sam. Hvala na pomoci.
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
62.101.128.90



+333 Profil

icon Re: MicroC programiranje - sam pocetak21.01.2011. u 21:07 - pre 160 meseci
Milovane,
eto sad knjigu u sake i uci.
I naravno, ocekujemo da ces za mjesec dva ti pisati ovakve odgovore mladjima.
Poz.
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
..106.109.adsl.dyn.beotel.net.



+28 Profil

icon Re: MicroC programiranje - sam pocetak21.01.2011. u 21:29 - pre 160 meseci
Milovane, ako hoces da naucis C programski jezik, slobodno "pobegni" od MikroC-a, posto isti strasno podseca na PASCAL (koji ja nisam uspeo da "svarim"), a ako hoces da pises i programcice sa PC racunare (u DOS-u) drage volje cu ti poslati Borland C i Borland C++ kompajlere (inace ih Borland daje za dzabe), cisto da vidis kako izgleda ANCI C.
 
Odgovor na temu

milovanmaric
milovanmaric
MElektro
Cacak

Član broj: 218769
Poruke: 315
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: MicroC programiranje - sam pocetak22.01.2011. u 12:34 - pre 160 meseci
Citat:
Sepa011: Milovane, ako hoces da naucis C programski jezik, slobodno "pobegni" od MikroC-a, posto isti strasno podseca na PASCAL (koji ja nisam uspeo da "svarim"), a ako hoces da pises i programcice sa PC racunare (u DOS-u) drage volje cu ti poslati Borland C i Borland C++ kompajlere (inace ih Borland daje za dzabe), cisto da vidis kako izgleda ANCI C.


Sepo, vazi, poslacu ti moj email na pp.

Citat:
veselinovic: Milovane,
eto sad knjigu u sake i uci.
I naravno, ocekujemo da ces za mjesec dva ti pisati ovakve odgovore mladjima.
Poz.
te.

Pa hocu da ga naucim, i nadam se da cu biti kadar da za 2-3 meseca, da dam poneki savet, sto elementaran, sto i malo kompleksnije prirode.

Sad da jos potrazim neke knjige, sacekacu od sepe ovo u vezi sa Borlandom, pa cu da uskladim potragu.

P.S iduce sam sedmice na terenu, te necu biti aktivan na forumu po ovom pitanju. Pozdrav

[Ovu poruku je menjao milovanmaric dana 22.01.2011. u 13:45 GMT+1]
 
Odgovor na temu

Milanche85
Beograd

Član broj: 251830
Poruke: 14
*.dynamic.isp.telekom.rs.



Profil

icon Re: MicroC programiranje - sam pocetak28.01.2011. u 05:45 - pre 160 meseci
Sto se tice ucenja C-a preporucio bih ti knjigu sa vise elektrotehnicke skole za programiranje I. Sve je dosta dobro objasnjeno sa dovoljnom kolicinom primera.
Ja sam se koristio pre 2-3 godine dok sam studirao i trebala bi da ima jos uvek da se kupi.
Dobra stvar je sto uz knjigu dobijas disk sa prikazom rada primera gde tacno vidis korak po korak kako se izvrsava program.
Mislim da je ova knjiga dosta dobra za pocetnike jer te polako i bez suvisnih informacija koje bi te zbunile uvodi u programiranje u C-u.

Pozdrav,
Milanche85
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: MicroC programiranje - sam pocetak

[ Pregleda: 3765 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

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