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

Pomoć oko nekih nedoumica vezanih za asembler

[es] :: Elektronika :: Mikrokontroleri :: Pomoć oko nekih nedoumica vezanih za asembler

Strane: 1 2 3 4 5

[ Pregleda: 14407 | Odgovora: 84 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

strš
ČAČAK

Član broj: 59295
Poruke: 324



+2 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler22.05.2010. u 22:11 - pre 168 meseci
Pozdrav.
I dalje sam prijatno iznenađen koliko imate želje i entuzijazma da komentarišete celu priču.
Mislim da nema potrebe da polemišete koji program je bolji jer moja tema nije za to.
Moja pitanja nemaju trenutno dodira sa programom sa kojim ću da programiram mikrokontroler već da shvatim na koji način prići celoj priči i da svoje nedoumice kristališem u tačne definicije.To što spominjem assembler ili BASIC je samo kao primeri koji mi olakšava razumevanje programiranja.
Ako nije problem nastavio bih sa mojim početničkim pitanjima.Zahvaljujem.
Za sada ovako shvatam priču.:
1-odaberem sa kojim ću mikrokontrolerom da radim
2-odaberem u kom ću programu raditi(assembler,BASIC...)
3-"skinem" njegov datasheet
4-u tom datasheetu nađem set instrukcija
5-pišem program koristeći te set instrukcije u programu koji sam izabrao (ovu tačku ne znam ali za sada nije bitno)
6-snimim ga u hex sa asemblerom
7-upišem hex fajl u mikrokontroler sa nekim programatorom
Ovo je kostur cele proče ,po mom.Ako nije tako ispravite me.
Pod uslovom da je ovo gore tačno imam neka podpitanja ,a to su:
Ako pišem u assembleru (ovo je samo kao primer nije moj stav da je assembler najbolji) koji ima svoj set instrukcija a i mikrokontroler ima svoj set instrukcija ,koga da "slušam" tj. koje set instrukcije da pišem?
Mislim da kad shvatim rečenicu "a kod BASIC-a ne radiš sa adresama već sa promenljivima, tako da adrese nisu bitne" biće mi mnogo jasnije.
Moj problem je u tome što mikrokontroler ima svoj set instrukcija a i program u kom pišem ima isto ,kako onda te dve stvari da spojim.
Verovatno ovakvo moje razmišljanje nije tačno,verovatno i da sam pomešao žabe i babe ali nadam se da će te mi objasniti kako stvarno treba da gledam na ove stvari.
Dalje neću da zapitkujem dok ovo nerešim(nadam se uz vašu pomoć).
Još jednom Vas molim da nekomentarišete koji je program bolji ili gori ,jer mi na taj način ničim nepomažete već temu odvlačite na drugu stranu.
Unapred hvala.
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
109.106.252.*



+28 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler22.05.2010. u 22:37 - pre 168 meseci
Nemoj da mesas 'babe' i 'zabe', odnosno ono sto ti nazivas setom instrukcija.

Mikrokontroler, bilo koji da je, ima svoj set instrukcija, barem ga mi tako nazivamo i predstavlja alfanumericku reprezentaciju binarnih instrukcija kojima mikrokontroler direktno operise. Ono sto stoji u datasheet-ovima samo nama, ljudima, daje smislene skracenice koje mi razumemo, a kompajler ih 'prevodi' u binarne brojeve.

Visi programski jezici su, nama ljudima, MNOGO razumljiviji od asemblerskih instrukcija i njihove 'naredbe' predstavljaju skupove instrukcija koje ce na odredjeni nacin kompajler pretvoriti u binarni kod, razumljiv mikrokontroleru. Ovi jezici se u sintaksi i naredbama/funkcijama medjusobno razlikuju tako da je na programeru da se opredeli za programski jezik koji mu najbolje 'lezi'. Takodje i medju visim programskim jezicima od iste vrste (BASIC, na primer) postoje razlike u nazivima naredbi/funkcija i u nacinu kako je sam kompajler organizovan, tj. da li je strukturni ili ne, da li su promenljive samo globalne ili mogu da se deklarisu i lokalne,...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler22.05.2010. u 23:56 - pre 168 meseci
Citat:

1-odaberem sa kojim ću mikrokontrolerom da radim
2-odaberem u kom ću programu raditi(assembler,BASIC...)


yup. za pocetak ta dva .. samo mala ispravka
za pocetak - odaberes familiju mikrokontrolera (os microchip PIC, ili oces ATMEL atmega ili attyny ili oces TI MSP430 ili ...)
e biras "u kom programu" - vec u kom ces programskom jeziku pisati .. a programa ima mnogih, za mnogo sta. programski jezici koji su ti uglavnom u opticaju kod mcu-a su assembler, basic, pascal, c, c++
tu mozes i malo "blize" da se odredis posto imas razlicite basice, razlicite C-ove i slicno ... slicni su, ali nisu identicni

Citat:

3-"skinem" njegov datasheet


trcis pred rudu sad. kada se odlucis za familiju i programski jezik, onda odlucis STA ces da radis .. obicaj je da krenes sa nekim hello world programom za paljenje i gasenje ledara .. pa onda polako napred .. treba da odlucis TACNO KOJI mcu ces da koristis za startno igranje. Ja ti jaaaaaaako preporucujem da tu ne kreces sa nekim prehristovskim mcu-ovima kao sto je 16F84 koji se ne prave godinama i kostaju papreno bas zato sto su "nekad bili popularni" a sada ih odrzavaju ljudi koji se boje promena ... ako ces da se odlucis za PIC, moja ti je preporuka neki PIC18F2550. Ima odlican hardware u sebi, seriski port, usb .. ima sa njim da naucis cudo stvari. A posle, lako odes na microchip sajt i koristeci njihov alat odaberes za odredjeni projekat tacno odredjeni chip koji ima tacno hw koji tebi treba. Ovaj ti odlican za pocetak. Ako hoces ATMEL, ja ti preporucujem ATmega168 ili jos bolje ATmega328.

Citat:

4-u tom datasheetu nađem set instrukcija


u data sheet-u se nalazi mnooooooogo vise od seta instrukcija, nalazi se koji hardware se nalazi u mcu-u i kako se isti koristi (kako mu se pristupa, sta moze etc).

Citat:

5-pišem program koristeći te set instrukcije u programu koji sam izabrao (ovu tačku ne znam ali za sada nije bitno)


jok ba

pises program koristeci instrukcije programskog jezika koji si odabrao u tacki 2.

Citat:

6-snimim ga u hex sa asemblerom


jok. programski jezik po izboru ce tvoj program iskompajlirati i kao rezultat ti izgenerisati HEX (a i neke druge fajlove).

Citat:

7-upišem hex fajl u mikrokontroler sa nekim programatorom


yup. Za microchip PIC jaaaaaaaako savetujem nabavku PICKIT2 (original ili klon, klon imas u kitu u kelcu a i ovde na formumu imas ljude koji ti prodaju gotov istestiran klon, ne savetujem PICKIT3 osim ako neces odma da radis sa 32MX serijom posto je pickit2 mnoooooogo bolji) posto je za 10 klasa bolji od svih ostalih koji se nude posto pored samo programiranja nudi i mogucnost in circuit debagiranja, moze da se koristi kao 4kanalni logic analyzer, serial port decoder etc etc ... mnogo mocna alatka. Za ATMEL, ja licno koristim USBASP koji sam kupio ovde na forumu i sa kojim sam vrlo zadovoljan. Za TI MSP430 ja koristim OLIMEX programator i original TI-ov EZ430 .. olimex je brzi :) i laksi za koristenje.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 00:01 - pre 168 meseci
btw, ne volem da reklamiram nikoga al .. pogledaj sajt www.mikroe.com .. momci imaju jednu od najboljih platformi za ucenje i testiranje za pocetnike. EasyPIC6, EasyAVR6, EasyARM ... mnooooooogo dobri alati a nisu mnogo skupi. Dodatno oni prave odlican C kompajler (koji na zalost nije dzaba a nije ni 1/1 kompatibilan sa microchip alatima u pic varijanti) koji je extra lak za koristenje, ima biblioteke za cudo i karate stvari... momci prodaju dodatne "extension" plocice sa svim i svacim (rfid citac, lcd ovakav, onakav, gsm, gps, accelerometar ... i cudo toga) i za sve dobijes primer u c-u i basic-u kako da korists ... dakle za pocetnike - stvarno mnogo mocno .. malo kasnije sve to prevazidjes posto napravis svoj dev kit sam prilicno lagano ali .. realno, ako si ozbiljan da oces da ucis, i imas da ulozis u to, ja mislim da ti je to najbrzi i najbolji put
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 00:09 - pre 168 meseci
@strs
Moras malo prvo poraditi na terminologiji, da umjesto odgovora na svoja pitanja ne bi uvijek dobijao "ispravke" pitanja.

1. Programiranje u Asembleru je obicno redjanje instrukcija koje postoje za neki mikrokonotroler. To su iste one instrukcije tebi poznate kao "set instrukcija" odredjenog mikrokontrolera, a nalazis ih u datasheetu. Svaka od tih instrukcija obicno predstavlja neku primitivnu operaciju koju je CPU mikrokontrolera sposoban da izvrsi; npr. premjesti podatak sa jedne lokacije na drugu, uporedi dva broja i tome slicno.
Ako hoces da saberes dva broja i rezultat sacuvas negdje u memoriji treba sam da tu operaciju predstavis pomocu tih jednostavnih operacija, npr:
Code:

1. ucitaj prvi broj iz memorije na lokaciji x u registar 1
2. ucitaj drugi broj iz memorije na lokaciji y u registar 2
3. saberi ono sto se nalazi u registrima 1 i 2 (rezultat ce npr. otici u registar zvani akumulator)
4. premjesti ono sto se nalazi u akumulatoru u memoriju na lokaciju z

Na isti nacin postupas i za bilo koju drugu funkcionalnost koja ti je potrebna - moras da sklopis niz primitivnih operacija (instrukcija) na takav nacin da odrade ono nesto slozenije sto ti treba.

2. Basic, C,... nisu programi. To su programski jezici. Pomocu programskog jezika pises programe. Basic i C su "visi" programski jezici u odnosu na asemblerske instrukcije zato sto na "visem" nivou apstrakcije mozes da predstavljas operacije. Konkretno, u prethodnom slucaju sabiranja dva broja gdje si u asembleru morao da koristis 4 jednostavne operacije i da vodis racuna o memorijskim lokacijama, u visem programskom jeziku je dovoljno samo da napises:
Code:

z = x + y;

Kompajler je program koji ce od ove jedne naredbe u visem programskom jeziku da napravi ona cetiri koraka iz tacke 1, cime tebe oslobadja da se bakces tim detaljima i omogucava ti da se koncentrises na sustinu problema, a ne na detalje oko konstrukcije procesora. Znaci kompajler neki slozeniji izraz iz viseg programskog jezika "razbije" na niz jednostavnih asemblerskih instrukcija koje procesor moze fizicki da izvrsava.
Ako pises direktno u asembleru, kompajliranje prakticno i ne postoji, posto si vec sam napisao program kao niz tih elementarnih operacija.

3. Asembler nije univerzalni jezik, niti je jezik u smislu u kom su to Basic i C. Programirati u asembleru jednostavno znaci pisati program koristeci se jedino setom instrukcija koje dati mikrokontroler posjedujue, a posto svaki ima svoj set instrukcija to je i programiranje u asembleru razlicito za svaki od njih. Neki procesori imaju 30-tak asemblerskih instrukcija, a neki i 120 i vise.

4. Da bi mogao da obavis sve to oko pisanja programa za mikrokontrolere potreban ti je u najmanju ruku neki text editor u kom ces otkucati svoj 'program', zatim kompajler koji ce da ga razbije na niz asemblerskih instrukcija koristeci set instrukcija tog konkretnog procesora i da napravi '.hex' fajl koji se treba upisati u programsku memoriju mikrokontrolera, jedna sprava koja se zove programator pomocu koje ces fizicki '.hex' fajl prebaciti iz PC-a u mikrokontroler i naravno program koji upravlja tim programatorom i procesom upisa '.hex' fajla u mikrokontroler.
Za sva ta tri koraka (kucanje programa, kompajliranje i upis u mikrokontroler) mozes koristiti medjusobno nezavisne programe, ali je uobicajenije u danasnje vreme da su sva tri objedinjena u jednu cjelinu koja se naziva IDE (Integrated Development Enviroment) iliti integrisano razvojno okruzenje.
To su npr. MPLAB, AVRstudio, IAR, Keil itd....
Sto se tice one sprave - programatora - svaka familija mikrokontrolera ima svoj nacin kako se to programiranje radi, pa tako imas i razlicite programatore za svaku od njih. Nema univerzalnih programatora.

Citat:
Ako pišem u assembleru (ovo je samo kao primer nije moj stav da je assembler najbolji) koji ima svoj set instrukcija a i mikrokontroler ima svoj set instrukcija ,koga da "slušam" tj. koje set instrukcije da pišem?

Kao sto ti rekoh gore, pisati u asembleru znaci koristiti set instrukcija datog mikrokontrolera - to ti je isto. Asembler nekog mikrokontrolera nije nista drugo nego sinonim za njegov set instrukcija. To nisu dvije razlicite stvari.

Pisanje u C ili Basicu je vec druga stvar. Oni su univerzalni i kod njih je sabiranje dva broja uvijek isto, bez obzira za koji mikrokontroler ti pisao program:
Code:

c = a + b;

Medjutim kompajleri se razlikuju. Kompajler za PIC ce ovaj prethodni C-izraz razbiti na neki niz asemblerskih instrukcija PIC mikrokontrolera (kao npr. na ona cetiri koraka iz tacke 1.), a kompajler za MSP430 ce taj isti izraz razbiti na niz asemblerskih instrukcija koje ima MSP430 kontroler ( a to za razliku od PIC-a mogu biti sasvim neke druge instrukcije, a ne mora ih biti 4, moze ih biti i samo dvije ili npr. 6, zavisi vec od toga kakva je konstrukcija jezgra tog mikrokontrolera).
Sustina je u tome da ti pises " c = a + b; " na kojem god mikrokontroleru da radis, a kompajler za taj mikrokontroler ce da se brine o tome kako ce pomocu seta asemblerskih instrukcija natjerati taj mikrokontroler da sabere a i b i rezultat upise u c. Kompajler to sve radi sam, tako da ti ne moras da brines o tome.
Sustina svega ovoga je u tome da se ti bavis svojim problemom koji hoces pomocu mikrokontrolera da rjesis, a da ne gubis previse vremena i energije na detalje konstrukcije koji tebi nisu bitne.

Razlika izmedju viseg programskog jezika i asemblera je kao npr. da imas dva segrta, od kojih jednom mozes da kazes:
a) Idi zakucaj onaj ekser sto je ispao iz tarabe;
dok ovom drugom moras ovako:
b) Ustani, okreni se 75 stepeni u desno, kreni napred,..., stani, ispruzi ruku, otvori saku, spusti saku na cekic, uhvati cekic, okreni se 90 stepeni lijevo, kreni... stani, cucni, ispruzi lijevu saku iznad eksera, podigni ekser, namjesti ekser na tarabu, zategni desnu ruku unazad, zamahni cekicem.....

To sve radi i onaj prvi, samo ne moras ti da mu objasnjavas svaki korak, a to sto ne moras da mu sve crtas ne znaci da nemas pojma "sta se stvarno desava", sto je cest "argument" zagovornika asemblera. Pa nisi debil pa da ne znas kroz koje se faze prolazi da bi se zakucao ekser. Ali ono sto moze da te napravi debilom je da od ta dva pomocnika ti odaberes pomocnika b).

Iz ovih tvojih pitanja ja sam stekao neku sliku o tvom trenutnom nivou i ako ces mene da poslusas, ostavi na par mjeseci mikrokontrolere po strani i nauci neke osnove programiranja i racunarstva uopste.
Ja bih ti predlozio C za start (iako nije najlaksi za startovanje), ali s obzirom da su cilj mikrokontroleri nadoknadices taj nesto sporiji start kasnije jer kad krenes sa mikrokontrolerima neces morati tada da ga ucis.
 
Odgovor na temu

strš
ČAČAK

Član broj: 59295
Poruke: 324



+2 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 12:48 - pre 168 meseci
Hvala vam na konkretnim odgovorima.Sada mi je dosta jasnije.
Kako shvatam prvo treba da naučim neki programski jezik ,pa tek onda da se prihvatim mikrokontrolera i njihovom programiranju?
Ako je ovo tačno mogu li usput još malo da vas smaram sa pitanjima?Mogu!?Hvala.
Ako nabavim knjigu programiranje u C-u (programski jezik dat kao primer) da li moram da napomenem da mi treba za mikrokontrolere a ne za računare,ili je to isto(glupo pitanje?)? Tj. da li je osnova programiranja ista, i kod mikrokontroler i kod računara, samo se razlikuju neki detalji?
Da li znači ako pišem u neko od "viših" programskih jezika nemoram da znam njegov(mikrokontrolerov) set instrukcija jer će taj posao da obavi kompajler?
Moje je "samo" da znam koje mogućnosti ima mikrokontroler za koji se opredelim?Kad smo kod toga šta se gleda kod mikrokontrolera u zavisnosti od programa koji ću da upišem u njega,tj.imam program i kako da se opredelim koji mikrokontroler uzeti za rad?Ili se uzme jedan sa "povećim" kapacitetima i upisujem programe u njega ,iako sa tim programom nekoristiš ni 10 posto njegovih mogućnosti?Sa ovim pitanjem netražim da mi napišete određeni mikrokontroler već uopšteno.Možda sam na ova pitanja dobio odgovor ,ali sa ovim pitanjima želim da potvrdim dali sam u pravu ili grešim.
Krenuću u učenje nekog programskog jezika i nadam se da ću moći kod Vas potražiti pomoć.
Još jednom hvala vam na detaljnim odgovorima.


 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 13:31 - pre 168 meseci
C je isti i za PC i za mikrokontrolere, samo se donekle razlikuje nacin na koji ga upotrebljavas u jednom i u drugom slucaju. Ali to ne treba sad da te zanima.

Pronjuskaj malo po internetu sta se pocetnicima preporucuje za ucenje programiranja pa nabavi nesto od toga.
Obrati paznju da nije dovoljno da naucis samo neki jezik vec i par drugih osnovnih stvari: o algoritmima, podacima, nesto malo o konstrukciji i radu racunara i tako to...
Takodje moras znati da ce neke kockice poceti da se slazu tek malo kasnije i da se neke nece moci sloziti dok ne "nabavis" neke druge. Tako da ne zastajkujes svaki cas oko svake sitnice nego citaj dalje... sto vise citati....

 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 622
*.dynamic.sbb.rs.



+7 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 15:51 - pre 168 meseci
Interesantna tema, a ja dugo nisam bio na ES.

Sve sto je receno je tacno, sa tim sto je neko potencirao jednu a drugi drugu stvar. Moje misljanje, sobzirom da su predmet mikrokontroleri, je:

1. Asembler je najsnazniji programski jezik za programiranje mikrokontrolera;
2. Asembler omogucuje potpunu kontrolu svih resursa mikrokontrolera po zelji programera;
3. Asembler generise najefikasniji kod i po duzini i po vremenu izvrsenja.

ali:

1. Poznato je da je otprilike potrebno isto vreme po programskoj liniji pri pisanju softvera, pa ispada da je mnogo krace vreme potrebno da se napise program na visem programskom jeziku nego na asembleru.
2. Visi programski jezici su standardizovani tako da imaju skup pravila koji ne zavisi od koriscenog mikrokontroler, pa su zato prenosivi, odnosno isti program moze da se izvrsava na bilo kom mikrokontroleru.

ipak teraba znati:

1. Da bi efikasno pisali program na visem programskom jeziku trebate poznavati sve unutrasnje module MCU-a. Zatim, bez obzira na osobinu prenosivosti, uvek se program mora u nekoj sekciji za definicije ili deklaracije podesiti za dati MCU.
2. Visi programski jezici nude funkcije koje inicijalizuju i upravljaju nekim od modula MCU-a. Ovo sugerise da nije potrebno poznavanje takvog modula, sto je donekle tacno. Medjutim, moze se desiti da su funkcije takve da vam bas ne odgovaraju, i onda je resenje da napisete svoje na asembleru (svaki visi programski jezik dozvoljava pisanje na asembleru). Ovog sam se nagledao u mnogim besplatnim visim programskim jezicima.

Zakljucio bih sa:

1. Bez obzira na izabrani visi programski jezik treba poznavati MCU sa kojim radite, a to upoznavanje se najlakse i najbrze ostvaruje na asembleru, bilo da koristite asemblerski kompajler, bilo da u visem programskom jeziku koristite asemblerske instrukcije.
2. Izaberite obavezno C (taj odvratni jezik apsolutno dominira). Ako ste u mogucnosti neka to bude neka profesionalna verzija u rangu sa Keilom (kompajleri su im bez obzira na MCU vrlo korektni i generisu solidan kod za jedan visi programski jezik). Od Freescale, koji takodje ima odlicne kompajlere, necete naci nista besplatno (a kosta od 3000$ do 5000$) sem demo verzije, koja je kompletna, ali generise kod do 4KB duzine.
3. Sa svim kompajlerima visih programskih jezika postoji problem apdejtovanja za novi MCU. Ako ste ga legalno nabavili nema problema, ali ako niste onda ili necete koristiti novi MCU, ili ce te morati da se dovijate kako da naterate vasu verziju prevodioca da uradi posao kako zelite.
4. Budite spremni na iznenadjenja, bar u pocetku, sa porukama o greskama koje ispisuje C kompajler. Cesto se desava da nisu tamo gde ukazuje kompajler vec na drugom mestu. Ovo se narocito odnosi na greske koje otkriva linker. Kasnije sa iskustvom ovi problemi ce biti lako resivi.
5. C ne spada u vise programske jezike, vec u jezike srednjeg nivoa, pa je bas zato pogodam za programiranje mikrokontrolera. Ali to znaci da ume da sabira "babe i zabe" i da ne vodi racuna o prekoracenju (bas kao i asembler). Ime varijable je uvek varijabla, ali ime niza je pointer na niz, i na to se morati naviknuti. I nije samo ovo, ima jos drugih nedoslednosti na koje se programer mora privici.

Cela ova prica je proistekla iz teznje da se sa sto manje rada (krace vreme) zaradi vise para. Hocu reci ni C nije idealan, ali donosi pare.

Ako se neko pita kako ja radim, pa mucim se kao i svi drugi. Nemam potrbu za osobinom prenosivosti jer radim sa MC9S08 familijom koja je danas u vrhu 8-o bitnih mikrokontrolera, jeftini su, ima ih za sve moguce aplikacije, ali C kompajler za njega kosta ko sirce. Zato sam napravio sopstveno razvojno okruzenje koje je asemblerski kompajler, takav da se najlakse moze opisati ako kazem da je to PASCAL koji umesto PASCAL iskaza ima asemblerske iskaze. Imam vrlo mocne makroe i module kao u DELPHI-ju. Primera radi za manje od mesec dana sam razvo USB na PC HID drajver, i isto toliko vremena je trebalo za CAN komunikaciju. Nesto od ovoga moze se skinuti kao gotovo resenje za neke druge mikrokontroler, ali obe komunikacije sam smestio u module, i mogu i da zaboravim kako sam to radio, a da ih i dalje koristim. Dakle, dosta mucno ali nemam izbora.
 
Odgovor na temu

vlada_vlada
Uber
Beograd

Član broj: 259596
Poruke: 68
*.dynamic.sbb.rs.



+7 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 16:54 - pre 168 meseci
Strs, domacine - isprsi se nauci i asembler i BASIC i C :)

Nije to tako strasno.. ti ces nauciti sve tehnologije koje su pomenuli, dok se oni sloze sta je "najkorisnije pocetniku".

Nema 'silver bullet' jezika. Ako ces da ti ovo bude zanat, trebace ti sve.
 
Odgovor na temu

strš
ČAČAK

Član broj: 59295
Poruke: 324



+2 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 17:56 - pre 168 meseci
Hvala na savetima.
Drži me entuzijazam da savladam (za mene) ovu tešku problematiku ali ne toliko da savladam baš sve programske jezike.Ja želim da budem jedan prosečan "majstor" koji zna i da programira mikrokontrolere.
Svi ovi odgovori su mi dosta pomogli.
Pošto prihvatam vaš savet da prvo malo dopunim svoje opšte znanje vezano za ovu temu ,smem li da Vas pitam šta mi svetujete od literature ali naglašavam za početnike.Pogledaću i na net-u.
Stvarno ste super!
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

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



+321 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 18:11 - pre 168 meseci
Ja sam pre par godina manje-više prekucao tekst Voje Antonića o 16F84 i postavio na sajt. Pogledaj informativno, ali ne preporučujem da uzmeš 16F84 za probu. Ili uzmi 16F628 ili, kao što neko reče nešto iz 18F serije. Mislim, sad opet svako može da vuče na svoju stranu ;), ali šta god da odabereš nećeš mnogo da pogrešiš, bitno je da savladaš princip, a posle za konkretnu aplikaciju biraš kontroler. Ja sam učio na osnovu upravo tih Vojinih tekstova, a posle sam za druge kontrolere pogledao ono što mi je bilo bitno za neki drugi kontroler.

Sajt je http://sinel.freehostia.com/pic/pic_kontroleri.htm

Pozdrav.
Sinisha

P.S. Ako se u tvom browseru preklapaju tabele i tekst, probaj da povećaš veličinu slova - to je moj prvi sajt i tada još nisam ništa znao o pravljenju sajtova pa je zato došlo do preklapanja.
 
Odgovor na temu

strš
ČAČAK

Član broj: 59295
Poruke: 324



+2 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 20:45 - pre 168 meseci
Našao sam jedan sajt sa tutorialim http://tutoriali.org .Na prvi pogled je ok.
Ako može samo da mi odgovorite na ostatak pitanja iz mog predprošlog posta.
Pozdrav.
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 22:34 - pre 168 meseci
Ne moze niko da zna kakva ce 'metodika' prezentovanja te problematike tebi da odgovara.
Na netu mozes pronaci recenzije i misljenja o pojedinim knjigama i tutorijalima i to je sve sto ti je potrebno.
Bitno je da je materijal pouzdan, provjeren i tacan, a da li ce da ti odgovara to mozes znati tek kad pocnes da ga koristis.
Ako ti ne odgovara, batali ga i probaj sa drugim, trecim.....

Po svoj prilici, kad dodjes do mikrokontrolera moraces koristiti vise "izvora" odjednom.
A za ovaj prvi korak - o programiranju uopste - probaj da nadjes nesto od onih izdanja tipa "... za 21 dan" ili "...za neupucene" i tome slicno.
Nema potrebe da ti pocetak bude stresan.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler23.05.2010. u 23:19 - pre 168 meseci
vezano za asm

odlican tutorijal kroz primere - http://www.winpicprog.co.uk/pic_tutorial.htm
odlicna knjitga (malo bajata posto je vezana za 84ku ali): Microcontroller Programming The Microchip PIC

za C -
odlicna: Programming Microcontrollers in C (Second Edition), Ted Van Sickle, ISBN: 1-878707-57-4
malo bajata: Exploring C for microcontrollers (a hands on approach), ISBN 978-1-4020-6066-3 (HB), ISBN 978-1-4020-6067-0 (e-book)

isto tako mozes da skines sa mikroe.com sajta njihov mikroC (demo verzija sa 2k limitom koji ti je za ucenje savrseno dovoljan) i oshonsoft simulator za pic .. u mikroC napravis hex a u oshonsoft-u ga istestiras (oshonsoft je domaca firma i autor daje veliki popust domacim kupcima). Uz mikroE ces dobiti gomilu primera

ja sam krenuo da prevodim nigelove tutorijale za asm u C ( http://elco.crsndoo.com/wordpress/tag/nigel-goodwin/ ) ali nisam daleko stigao ..


Korak, za ozbiljan rad neophodno je znati asm (posto ako ne znas asm tesko da mozes uopste da koncipiras program pravilno), a sto se tice toga da "asm pravi bolji kod", probaj, ako nista a ono za tvoju dusu, ovo sto je Odin rekao, napravi u asm-u i u c-u program koji ce da seta kursor misa po lcd-u, na levi klik setujes pixel, na desni klik resetujes pixel .. i onda uporedi generisani hex iz asm-a i c-a i ako ti je c kompajler iole valjan, C hex ce da bude manji ili brzi, zavisi koju optimizaciju upalis, a mozda i manji i brzi.

to sto si izgubio mesec dana da napravis usb drajver meni znaci da tvojih mesec dana ne kosta puno. Ako taj modul kosta gotov 200E (a ne kosta vise, ima ga i za dzabe) ti si rekao da tvojih mesec dana rada ne vredi ni 200E - ako je to tacno onda je mozda opravdano to sto si mesec dana potrosio da napravis nesto sto ima da se uzme gotovo za te pare. Ako si to radio da bi nesto "naucio" to je druga prica, ali ako govorimo o razvoju software-a za klijenta, onda pricamo o tome koliko kosta inzenjer sat / dan / mesec i ti su upravo rekao da tvoj inzenjer mesec kosta 200E. Pritom, veliko je pitanje
1. da li je taj tvoj modul dovoljno istestiran?
2. da li radi u svakoj situaciji (usb 1.0, usb 1.1, usb 1.2, usb 2.0, sa i bez obavezne prijave potrosnje, sa dinamickim id-om, sa razlicitim host os-om)?
3. da li je uopste manji ili brzi od gotovog resenja?

meni je trebalo da okacim neki logger na usb, ja sam skino library (za 5min) i za manje od 30 min okacio svoj projekat na usb kao hid, a onda iz zezanja probao i namestio u narednih 30min da radi kao serial device i kao mass storage device ... 60min vs 30 dana .. o CAN-u necu ni da pricam ... "tu ima nesto da se implementira" :) ...

dakle, da se ne lazemo, za ozbiljan rad, mora da se ima neko znanje asm-a, ali praviti projekat u asm-u, sorry, upravo tvoj primer da si nesto sto se radi 30min radio 30dana potvrdjuje koliko je asm "efikasan"
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
217.169.223.*



+10 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler24.05.2010. u 12:17 - pre 168 meseci
bogdan.kecman, Odin D.
strsh je hteo da nauci koristiti mikrokontrolere, pri tom ne poznaje hardver nitijednog kontrolera. Bar sam to tako shvatio...

Prvo bi trebao skinuti pdf od najmanjeg modela neke serije npr. 16f84, ostampati na papir i krenuti citati od strane 1A i tako dok se stranice ne pohabaju. Tu je obisan raspored hardvera i kako se aktiviraju pojedini 'sklopovi' pomocu asemblera.
Kada samostalno napises program da se LED pali i gasi u asembleru onda si spreman za bilo koji jezik i hardver. Od neceg se mora krenuti pa zasto to ne bi bilo A?!
__*__
*___*
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler24.05.2010. u 12:36 - pre 168 meseci
_str_, sorry ali ne slazem se otprilike ni sa jednom stavkom koju si napisao ...

- citanje data sheet-a bez ideje o programiranju mu nece pomoci nista
- citanje data sheet-a o 16F84 je pogresan pocetak, to je kao da te neko tera da jases konja da bi te pripremio za ucenje voznje avionom
- paljenje ledare ce da nadje u svakoj knjizi za mikrokontrolere kao prvi primer za bilo koji jezik ... nacice ga uz svaki kompajler kao prvi primer ... nacice ga u helpu svakog kompajlera ..

dakle ucenje iz datasheet-a je pogresan i jako spor nacin, to sto smo mi morali da ucimo iz datasheet-a pre 15 godina ne mora da znaci da danas u doba brzog interneta treba stvari da se rade kao pre 15 godina (i koristi isti %$@%_# 16F84 kao pre 15 godina) ... neke stvari stvarno treba prevazici i dozvoliti im da umru
 
Odgovor na temu

strš
ČAČAK

Član broj: 59295
Poruke: 324



+2 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler24.05.2010. u 15:39 - pre 168 meseci
Pozdrav.
Nema potrebe da se raspravljate šta je bolje ili gore.
Tačno je da ne poznajem hardver ni jednog kontrolera i da cela ova priča je ustvari stvaranje početne slike kako osnovne stvari funkionišu.Dobar je predlog da sam sebi odaberem literaturu koju ću lakše da "svarim" , tako da sam već počeo sa traženjem i čitanjem literature.Sad je na meni koliko ću biti uporan da naučim o programiranju.
Vaši saveti i objašnjenja su mi od velike pomoći i na tome se zahvaljujem od srca.Možda je bezobrazno ali ako može odgovor na pitanja iz predhodnog posta a ono glasi:
"Da li znači ako pišem u neko od "viših" programskih jezika nemoram da znam njegov(mikrokontrolerov) set instrukcija jer će taj posao da obavi kompajler?
Moje je "samo" da znam koje mogućnosti ima mikrokontroler za koji se opredelim?Kad smo kod toga šta se gleda kod mikrokontrolera u zavisnosti od programa koji ću da upišem u njega,tj.imam program i kako da se opredelim koji mikrokontroler uzeti za rad?Ili se uzme jedan sa "povećim" kapacitetima i upisujem programe u njega ,iako sa tim programom nekoristiš ni 10 posto njegovih mogućnosti?Sa ovim pitanjem netražim da mi napišete određeni mikrokontroler već uopšteno.Možda sam na ova pitanja dobio odgovor ,ali sa ovim pitanjima želim da potvrdim dali sam u pravu ili grešim."
Unapred hvala.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler24.05.2010. u 16:14 - pre 168 meseci
Citat:
strš
Nema potrebe da se raspravljate šta je bolje ili gore.


nema rasprave :D .. rasprava je ono "sta se duvas $#_(&& emoj ti ja dodjem tamo da te naucim $#@& kad ti ..." ... i "moj tata ima vecu motku" ....

ovo je samo razmena misljenja :D

Citat:

"Da li znači ako pišem u neko od "viših" programskih jezika nemoram da znam njegov(mikrokontrolerov) set instrukcija jer će taj posao da obavi kompajler?


da ali ne :)

sta je fora, ne moras da znas koje registre ima, ne moras da znas da li se prvo stavlja source pa destination ili obrnuto, koji adresni mod mozes da koristis kada i slicno ... ali moras da znas svaki port u tom mikrokontroleru i sta ce se desiti kada sta upises u njega. Dakle, A=B+C ce raditi uvek i na svakom isto, ali inicijalizacija serijskog porta na 19200 ce retko ici kao usart_init(19200); a mnogo cesce ce zahtevati malo direktnog prckanja po hw-u mcu-a

Citat:

Moje je "samo" da znam koje mogućnosti ima mikrokontroler za koji se opredelim? Kad smo kod toga šta se gleda kod mikrokontrolera u zavisnosti od programa koji ću da upišem u njega,tj.imam program i kako da se opredelim koji mikrokontroler uzeti za rad?Ili se uzme jedan sa "povećim" kapacitetima i upisujem programe u njega ,iako sa tim programom nekoristiš ni 10 posto njegovih mogućnosti?Sa ovim pitanjem netražim da mi napišete određeni mikrokontroler već uopšteno.Možda sam na ova pitanja dobio odgovor ,ali sa ovim pitanjima želim da potvrdim dali sam u pravu ili grešim."


nemoj da se vezujes za PIC iako ti ja mozda dajem vise linkova za PIC nego za neke druge, to je cisto zato sto su mi pri ruci, ne zato sto je nesto "bolje" ... ali evo ti primer:
http://www.microchip.com/maps/main.aspx

odes tu, odaberes mikrokontroleri i videces spisak razlicitih stvari koje jedan mcu ima ... tu odaberes sta ti treba i on ce ti dati spisak picova koji to mogu da ponude ...
ako razmislis malo o tome .. videces da se ne bira mikrokontroler prema "programu" vec se bira prema "nameni" .. ako ces da ga koristis da pricas sa 2 masine preko 2 seriska porta, zelis neki kontroler sa 2 usarta ... ako hoces da direktno kontrolises 20 ulaza i izlaza, bitno ti je da ima 20 io pinova .. ako oces da citas vrednost sa 10 analognih ulaza - treba ti neki sa 10 ADC -ova .. ako ti je potreban jedan ali "tacniji" analogni "citac" onda potrazis neki sa 12 ili 16 bitnim adc-om ... etc etc .. dakle mcu biras kao "onaj koji ima hw koji tebi treba" ...
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 622
*.dynamic.sbb.rs.



+7 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler24.05.2010. u 16:39 - pre 168 meseci
@bogdan.kecman

Da ti odgovorim:

1. Radim sa njim godinu dana bez problema, ali mislim da nikada nije dosta testiranja.

2. Radi sa USB 1.0 i USB 2.0

3. Kod je duzine 2KB, i u odnosu na neke druge programe koji koriste HID drajver nisam primetio da radi sporije.

Dakle, nisam ustedeo pare, ali sam naucio kako da napravim da moj MCU, koji ima USB, moze da komunicira koristeci njega. Mogu da podesavam velicinu paketa kako mi kad odgovara, kada koristim neki drugi MCU koji ima statusno-kontrolne registre na drugim adresama ili ima drukciji raspored bitova, i to mogu lako da podesim.

Inace, teoretski visi programski jezik generise uvek manje efikasan kod i granica efikasnosti je efikasnost asemblera. Pa na kraju krajeva i visi programski jezik generise asemblerske naredbe.

Svojevremeno sam pravio test: 3DES algoritam na C-u za Keil, CodeWarrior i asembler. Asemblerski tekst sam napravio "prepisujuci" C izvorni tekst za 30 min. Ovaj algoritam nije trivijalan, pretpostavljam da ti je poznat, duzine je oko 3KB u asembleru sa nesto manje od 1KB tabela. Rezultat je sledeci: C kompajleri su generisali duzi kod za 20% do 30% kada su bili optimizovani na duzinu koda, a vreme izvrsenja je bilo oko 50% duze, kada su C kompajleri bili optimizovani na brzinu izvrsavanja.

Imaj u vidu da radim sa MC9S08 i da sve sto bi kupio to je vezano za CodeWarrior C kompajler koji nije besplatan i kosta od 3000$ do 5000$. Nadam se da me razumes.

Pozdrav.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Pomoć oko nekih nedoumica vezanih za asembler24.05.2010. u 16:49 - pre 168 meseci
korak, ne sumnjam da je taj modul ispao odlicno ... ali ti si, realno, za to vreme i taj trud i taj nivo kompleksnosti mogao da zaradis za isti taj codewarrior...

sto se tice 3des-a nije bas dobar primer za poredjenje asm-a i visih programskih jezika .. a sto se tice optimizacije, bas je suprotno, ako pogledas kako rade neke od optimizacija danas, ti samo teoretski to mozes da odradis rucno a i to samo na nivou par kilobajta i 8 bitnih mcu-a (i ja rekoh da sam zaradjivao super kintu pisuci kompleksne aplikacije na 8086 .. ubedili su me da predjem na C tek tamo na 386 masini) .. ali vec kada se predje na 16 bitni rad i vece programe, asm postaje bezpredmetan ... u varijanti jednog osmobitnog mcu-a sa par kb rama ... asm je ok .. ali to je tesko "generalni slucaj"

no, odosmo predaleko od osnovne teme ...
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Pomoć oko nekih nedoumica vezanih za asembler

Strane: 1 2 3 4 5

[ Pregleda: 14407 | Odgovora: 84 ] > FB > Twit

Postavi temu Odgovori

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