www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Mikrokontrolerji in C
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Naturist
Član
Član



Pridružen-a: Tor 02 Okt 2007 20:01
Prispevkov: 11
Aktiv.: 0.05
Kraj: Primorska

PrispevekObjavljeno: Pon Nov 05, 2007 1:34 am    Naslov sporočila:  Mikrokontrolerji in C Odgovori s citatom

Še pred kratkim sem bil mnenja da je najbolje programirat v zbirniku, saj imaš popolno kontrolo nad programom, sem delal en projekt s PIC-om, v zbirniku nekaj napisat vzameme kar precej časa, poleg tega postane kar veliko vrstic in koda nepregledna.
Potem si prenesem prevajanik CC5x, prepišem v C, koda v C-ju izgleda veliko preprostejša.
Če delaš v C-ju isto stvar narediš v polovico krajšem času.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Pon Nov 05, 2007 2:05 am    Naslov sporočila:   Odgovori s citatom

Poznavanje assembelrja je hudo koristna stvar.

Zgornja trditev je sicer resnična in pravilna, vendar s časom vse bolj izgublja na pomenu. Razlog je preprost. Mikrokontrolerji so vse cenejši in istočasno vse bolj sposobni. Koda, ki jo naredijo C compilerjli je vse boljša. Še posebno je to izraženo pri novejših 32 bitnih mikrokontrolerjih kot so naprimer ARM-i. Organizacija teh je taka, da je nabor strojnih instrukcij že skoraj idealno prilagojen višjim jezikom (pogojno izvajanje vsake instrukcije).

Že pri načrtovanju projekta je torej smiselno razmišljati o tem, da si izberemo nekaj močnejši mikrokontroler. Pisanje v assemblerju lahko sicer prihrani nekaj pomnilniškega prostora, tako v programskem delu spomina, kot tudi v delu kjer so spremenjljivke. Žal je pri razvoju novih projektov zdaleč najdražja postavka čas človeka razvojnika. Ta pa je daleč krajši pri programiranju v višjih jezikih, kot je recimo C. Prihranki v spominu in s tem nekaj malega cenejši mikrokontroler tega časa zlepa ne odtehtajo (serije bi res morale biti ogromne).

Zgornja trditev postane pomembna v izjemnih primerih, ko so ekstremno hude časovne zahteve. V te namene ima večina C prevajalnikov možnost vključevanja assemblerske kode.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
bostjang
Član
Član



Pridružen-a: Tor 03 Jan 2006 15:29
Prispevkov: 3469
Aktiv.: 14.65
Kraj: Postojna

PrispevekObjavljeno: Pon Nov 05, 2007 10:23 am    Naslov sporočila:   Odgovori s citatom

Ta trenutek delam predvsem z ARM7 in prevajalnikom Keil CARM. Ko sem pregledoval kodo zanke za prenos podatkov, sem ugotovil, da prevajalnik sploh ne uporablja nekaterih prednosti ARM-a, pa tudi ukaze, ki jih uporablja bi bilo možno sestaviti bolj optimalno.
Z ročnim pisanjem v zbirniku mi je uspelo zanko pospešiti za nekajkrat (ne samo %) in tudi manjša je postala.
Vsekakor se pa strinjam, da je bolj pregledno veči del kode napisati v C-ju. Kratke zanke z veliko prehodi pa se včasih splača napisati v zbirniku.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Auslander
Član
Član



Pridružen-a: Tor 08 Mar 2005 9:53
Prispevkov: 43
Aktiv.: 0.18

PrispevekObjavljeno: Pon Nov 05, 2007 10:58 am    Naslov sporočila:   Odgovori s citatom

bostjang je napisal/a:
Ta trenutek delam predvsem z ARM7 in prevajalnikom Keil CARM. Ko sem pregledoval kodo zanke za prenos podatkov, sem ugotovil, da prevajalnik sploh ne uporablja nekaterih prednosti ARM-a, pa tudi ukaze, ki jih uporablja bi bilo možno sestaviti bolj optimalno.


lahko to predstaviš s primerom prosim, bi znalo biti poučno tudi za ostale.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
alessio
Član
Član



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Pon Nov 05, 2007 11:01 am    Naslov sporočila:   Odgovori s citatom

@bostjang

Prevajalnik bo uporabil vse prednosti ARM-a, če boš C kodo napisal tako,
da mu bo ta dopuščala. Zelo poučna, tudi kar se tiče optimizacije tako
C kot tudi assembler kode, je knjiga "ARM system developers guide" od
Sloss-a et.all.

Za primer lahko navedem dve rutini za izračun checksum-a:

Koda:

int checksum_v1(int *data)
{
char i;
int sum = 0;
for (i = 0; i < 64; i++)
{
sum += data[i];
}
return sum;
}


prevajalnik za to funkcijo zgenerira
Koda:

checksum_v1
MOV r2,r0 ; r2 = data
MOV r0,#0 ; sum = 0
MOV r1,#0 ;i=0
checksum_v1_loop
LDR r3,[r2,r1,LSL #2] ; r3 = data[i]
ADD r1,r1,#1 ; r1 = i+1
AND r1,r1,#0xff ; i = (char)r1
CMP r1,#0x40 ; compare i, 64
ADD r0,r3,r0 ; sum += r3
BCC checksum_v1_loop ; if (i<64) loop
MOV pc,r14 ; return sum


Če pri pisanju C kode upoštevaš arhitekturo ARM-a in
poznaš nekaj trikov boš funkcijo napisal nekaj v tem stilu:
Koda:

int checksum_v6(int *data)
{
unsigned int i;
int sum=0;
for (i=64; i!=0; i--)
{
sum += *(data++);
}
return sum;
}


kar lahko prevajalnik mnogo bolje prevede v:
Koda:

checksum_v6
MOV r2,r0 ; r2 = data
MOV r0,#0 ; sum = 0
MOV r1,#0x40 ;i=64
checksum_v6_loop
LDR r3,[r2],#4 ; r3 = *(data++)
SUBS r1,r1,#1 ; i-- and set flags
ADD r0,r3,r0 ; sum += r3
BNE checksum_v6_loop ; if (i!=0) goto loop
MOV pc,r14 ; return sum


Na željo lahko razložim razliko.
Skratka, ne takoj kritizirati druge, pri sebi najprej razčistite...

Aleš
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Pon Nov 05, 2007 11:13 am    Naslov sporočila:   Odgovori s citatom

bostjang je napisal/a:
Ta trenutek delam predvsem z ARM7 in prevajalnikom Keil CARM. Ko sem pregledoval kodo zanke za prenos podatkov, sem ugotovil, da prevajalnik sploh ne uporablja nekaterih prednosti ARM-a, pa tudi ukaze, ki jih uporablja bi bilo možno sestaviti bolj optimalno.
Z ročnim pisanjem v zbirniku mi je uspelo zanko pospešiti za nekajkrat (ne samo %) in tudi manjša je postala.
Vsekakor se pa strinjam, da je bolj pregledno veči del kode napisati v C-ju. Kratke zanke z veliko prehodi pa se včasih splača napisati v zbirniku.


Kaj pa optimizacije? CARM pozna parameter -o[raven optimizacije] ?

_________________
Lp,
Matevž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Pon Nov 05, 2007 7:41 pm    Naslov sporočila:   Odgovori s citatom

Tole je PIC del foruma, če me spomin in oči ne varajo. Preden sem se odločil za prevajalnik sem jih kar nekaj preveril in ugotovil, da CCS dela najbolj optimalno kodo.

Je pa pri 8 bitnih kontrolerjih še vedno zelo dobro če poznaš ASM, ker je potrebno kdaj pa kdaj kakšno malenkost narediti časovno bolj učinkovito. Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Naturist
Član
Član



Pridružen-a: Tor 02 Okt 2007 20:01
Prispevkov: 11
Aktiv.: 0.05
Kraj: Primorska

PrispevekObjavljeno: Tor Nov 06, 2007 12:29 am    Naslov sporočila:   Odgovori s citatom

Jaz od mikrokontrolerjev poznam samo PIC. Na tem forumu se govori predvsem o PIC, AVR in ARM. Zanima me kakšne so razlike glede razvojnih orodij in prevajalnika C za posamezen mikrokontroler, za katerega je prosto dostopen prevajalnik, imaš veliko uporabnih knjižnic.

Recimo da delam neko vezje v katerem bom uporabu manj zmogljiv mikrokontroler, malo primerkov, cena ni tolk pomembna, sprejemljiva je do 15EUR, programiral bi v C-ju, obstaja tudi prosto dostopen prevajalnik za neprofesionalno uporabo, imaš zraven tudi uporabne knjižnice, po možnosti razvoj v okolju Linux.

Kateri mikrokontroler izbrati , zanima me vaše mnenje ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Tor Nov 06, 2007 1:29 am    Naslov sporočila:   Odgovori s citatom

Vse je odvisno od kriterijev, ki jih postaviš.

Bom stvar osvetlil še z enega vidika in odgovoril na tvoje vprašanje malo hudomušno. Je pa v tem kar nekaj resnice :"Uporabi enak kontroler, kot tisti, ki ti je pripravljen pomagati v prvih korakih !"

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.32

PrispevekObjavljeno: Tor Nov 06, 2007 8:10 am    Naslov sporočila:   Odgovori s citatom

Naturist,

v to kategorijo najbolj paseta AVR in ARM. S to razliko, da je ARM precej bolj zmogljiv (in kompleksen).

Cena in dobavljivost: ni da ni
C: GNU GCC
Orodja: je
knjiznice: so
Linux: vsekakor

Priznam pa, da nisem ravno preprican ali za PICe obstaja Linux okolje.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
harum
Član
Član



Pridružen-a: Sre 22 Feb 2006 8:25
Prispevkov: 172
Aktiv.: 0.73
Kraj: Vitanje

PrispevekObjavljeno: Tor Nov 06, 2007 8:58 am    Naslov sporočila:   Odgovori s citatom

No da še sam povem svoje mnenje.
Predlagati uporabo AVR-ja namesto PIC-a ali predlagati uporabo PIC-a namesto AVR-ja je isto kot forsirati Union namesto Laškega in obratno (oboje je isto sr... najboljši je češki pir).
Kot rečeno uporabljaj tistega, s katerim si začel in ga najbolj poznaš in s katerim boš najlažje na novo (ali iz ostankov starega) postavil projekt. Tako Microchip kot Atmel imata v svojem naboru ogromno izbire od najmanjših do največjih. Poleg teh dveh pa je še ogromno (več kot 10 recimo) drugih proizvajalcev 8-bitnikov, z enako pestrim naborom, a nekako niso v "modi" in orodja zanje niso tako lahko dostopna (no nekaterim recimo so Smile. Podobno je z ARM-om, ki ga vsebuje ogromno mikrokontrolerjev različnih proizvajalcev in je primeren za malce zahtevnejše aplikacije.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Tor Nov 06, 2007 9:55 am    Naslov sporočila:   Odgovori s citatom

Glitch je napisal/a:

Priznam pa, da nisem ravno preprican ali za PICe obstaja Linux okolje.


Orodij za PIC-e je kot dračja. Tudi za Linux.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Glitch
Član
Član



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.32

PrispevekObjavljeno: Tor Nov 06, 2007 10:14 am    Naslov sporočila:   Odgovori s citatom

Potem pa ... VolkD je govoril. Howgh.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Tor Nov 06, 2007 11:00 am    Naslov sporočila:   Odgovori s citatom

Jah.. pa še zdaleč ni povedal vsega !

-preglej internet in s tvojega zornega kota oceni kateri čipi se na področju, ki te zanima največ uporabljajo.
-pozanimaj se kako je s popravki bug-ov, kakšna je literatura.
-za začetnika je precej pomembna dostopnost programatorja.

In ne nazadnje - primorska ni ravno majhna. Če nisi predaleč imaš še mene (sicer ne neomejeno) na razpolago.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Naturist
Član
Član



Pridružen-a: Tor 02 Okt 2007 20:01
Prispevkov: 11
Aktiv.: 0.05
Kraj: Primorska

PrispevekObjavljeno: Sre Nov 07, 2007 12:20 am    Naslov sporočila:   Odgovori s citatom

Bolj me je zanimalo kakšne so razlike med razvojnimi orodji.

Mogoče se bom v prihodnosti lotil neko stvar, ki se bo priklopila na računalnik,
Za komunikacijo bom uporabu ethernet, ker je to nekaj standardnega, pa še na usmerjevalnik lahko priključiš.

Za kateri procesor obstajajo knjižnice za IP komunikacijo, kateri procesor je najprimerje vzeti v tem primeru.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group