 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 59.91 Kraj: Divača (Kačiče)
|
Objavljeno: Čet Jun 30, 2011 7:54 pm Naslov sporočila: |
|
|
71GA je napisal/a: |
V ozadju programov ki jih tukaj piše so že driverji. |
Ja ? kakšni ?
In ja res, to niso osnove, za osnove bi verjetno moral začet z elektroni..... _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
71GA Član


Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.00 Kraj: Ljubljana
|
Objavljeno: Čet Jun 30, 2011 8:18 pm Naslov sporočila: |
|
|
Na posnetku uporablja IDE, ki že vsakemu napisanemu programu, ko pritisne gumb compile, doda knjižnico driverjev kar stori v zaglavju programa z ukazoma,
Koda: |
#include <avr/io.h>
#include <util/delay.h> |
v katerih se nahajajo funkcije in startup koda, ki initializira procesor,... Omenjene funkcije dobi že kot priporočilo, če npr. nekje vtipka črko "w" in mu naniza več funkcij, ki se začnejo na "w" npr. wait(). To pa zato, ker je ta IDE narejen točno za njegov mikroprocesor. Isto je z Bascom AVR studio, če se ne motim, ki je za programiranje ATMEGA16. Saj celo sam reče (posnetek 31:22) da z ukazom,
Koda: |
#define tipka_pin PINB |
bere stanje iz registra PINB. Zdi se mi da na posnetku nisem nikjer videl programiranja registrov, torej kje pa je to, če je to kar sem videl vse? Saj register ni poimenovan PINB ampak je vedno 0x001...
Če se motim pa me prosim popravite. |
|
Nazaj na vrh |
|
 |
Mihec Član


Pridružen-a: Pet 24 Mar 2006 20:10 Prispevkov: 415 Aktiv.: 1.77 Kraj: Mengeš
|
Objavljeno: Čet Jun 30, 2011 10:41 pm Naslov sporočila: |
|
|
@71GA: Mogoče veš kakšno kodo vsebuje datoteka "io.h"?
Nekdo je omenil da naj bi bil tečaj jezika "C", začetni ter nadaljvalni. Na tečaju naj bi se govorilo o osnovah, trikih pri pisanju kode (za bilo kateri uP), mehanizmi za kvalitetno odčitavanje tipk, ipd...
Menim da bi bilo nekaj takega še vedno najbolje in najbolj splošno. Platforma za učenje pa niti ni tako pomembna, le če je zasnova splošna. |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 59.91 Kraj: Divača (Kačiče)
|
Objavljeno: Čet Jun 30, 2011 10:53 pm Naslov sporočila: |
|
|
71GA, ne vem čemu ti rečeš driverji, ampak tu v tem primeru to sigurno niso. Vse kar je vključeno (includano) so definicije (#define) registrov za konkreten mikrokontroler. Za nek drug mikrokontroler se pač izbere drug include.
Zdaj smo pa nenadoma spet pri tem, da se pogovarjamo o mikrokontrolerjih namesto o jeziku C.
Nekaj o C:
Kakorkoli vedno je dobra praksa, da naredimo sam program neodvisen od konkretnega mikrokontrolerja določene skupine. V ta namen se v programu izognemo pisanju fizičnih naslovov za posamezne registre. Namesto tega raje uporabljamo kar imena registrov. Kje se ti registri nahajajo pa povemo v eni od datotek, ki jo includamo v glavni program. Tovrstne datoteke običajno dobimo že pripravljene skupaj s prevajalnikom.
Prav tako dobimo pripravljene razne knjižnice standardnih funkcij in procedur. Imena slednjih so z malenkostnimi razlikami enake za različne družine mikrokontrolerjev (fprint, sfprnt, sqrt, ...) Katere od teh knjižnic bomo uporabili je naša odločitev, ki jo prevajalnilku sporočimo z #include direktivo.
Omenjeno predavanje je dejansko osnova. Če gremo še nižje potem to ni več C, ampak že asembler. _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
71GA Član


Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.00 Kraj: Ljubljana
|
Objavljeno: Čet Jun 30, 2011 11:23 pm Naslov sporočila: |
|
|
VolkD je napisal/a: |
Tovrstne datoteke običajno dobimo že pripravljene skupaj s prevajalnikom.
|
Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami?
Mihec je napisal/a: |
Mogoče veš kakšno kodo vsebuje datoteka "io.h"? |
Ne vem kaj vsebuje io.h. Najbrž le parametre za funkcije.
Mihec je napisal/a: |
Nekdo je omenil da naj bi bil tečaj jezika "C", začetni ter nadaljvalni. Na tečaju naj bi se govorilo o osnovah, trikih pri pisanju kode (za bilo kateri uP), mehanizmi za kvalitetno odčitavanje tipk, ipd...
Menim da bi bilo nekaj takega še vedno najbolje in najbolj splošno. Platforma za učenje pa niti ni tako pomembna, le če je zasnova splošna. |
Meni nekaj ni povsem jasno in torej, kako mislite izvesti tečaj splošnih trikov v C za bilokateri uc, če pa vedno, ko želimo preveriti delovanje, program naložimo na nek uc, ki je specifičen in kodo je zanj potrebno prilagoditi saj nimajo vsi uc istih registrov za iste stvari. Če bi vsak prišel s svojo plato bi tečaj trajal precej dolgo, ampak lahko bi pa poiskusili  |
|
Nazaj na vrh |
|
 |
jvolk Član



Pridružen-a: Ned 05 Mar 2006 1:14 Prispevkov: 737 Aktiv.: 3.13 Kraj: okolica Divače
|
Objavljeno: Pet Jul 01, 2011 12:04 am Naslov sporočila: |
|
|
71GA je napisal/a: |
Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami?
Ne vem kaj vsebuje io.h. Najbrž le parametre za funkcije.
|
V io.h so napisani naslovi registrov ter njihova imena.. Se pravi neke vrste "telefonski imenik". To se pač uporablja tako kot je napisano in nima smisla vedno ponovno pisat.. tudi če uporabljaš ASM je stvar podobna. |
|
Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.34 Kraj: Lovrenc na P.
|
Objavljeno: Pet Jul 01, 2011 8:53 am Naslov sporočila: |
|
|
71GA je napisal/a: |
Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami? |
Zakaj bi, če to napišejo proizvajalci prevajalnikov ali proizvajalci krmilnikov. Lahko napišeš sam, greš skozi datasheet in vse definiraš vse registre ter njihove naslove, vendar zakaj bi to delal kar je narejeno in prosto dostopno.
Je pa dobro, da veš kaj je v tistih datotekah. Se spomnim primera iz pred par let, ko mi nikakor ni delala ena periferija na lpc21xx (ne spomnim se točno na katerem) in po buljenju in razhroščevanju sem ugotovil, da se naslov registra v headerju ne ujema s tistim v datasheetu. Tako, da je priporočljivo tu pa tam poiskati zadnje verzije headerjev, npr. keil je pri cortexu m3 (NXP) spremenil headerje vsaj 2x in to radikalno.  |
|
Nazaj na vrh |
|
 |
nakamichi Član

Pridružen-a: Pon 21 Avg 2006 18:51 Prispevkov: 845 Aktiv.: 3.68 Kraj: Nova Gorica
|
Objavljeno: Pet Jul 01, 2011 9:03 am Naslov sporočila: |
|
|
71GA je napisal/a: |
V prvem postu sem omenil programiranje ARM... zakaj ne preberete prvega posta . Nikoli ni bilo rečeno učenje zgolj ANSI C, tega je na youtube na pretek, takoj ko se vežeš na arhitekturo pa je tega vse manj. |
Torej moreš bit še bolj specifičen, ARM XXXX jedro pri XXXX procesorju. To so torej inštrukcije že in ne več neko splošno znanje. Reševanje specifičnega problema mislim, da ni cilj seminarja.
Kot so omenili tudi pisanje header datoteke za nek mikrokrmilnik je povsem neracionalno, saj je že spisana in ti olajša delo saj te ne zanima na katerem naslovu je register ampak samo, da lahko do njega dostopaš, vse kar je v njem je
#define IME_REGISTRA_KOT_V_DATASHEETu *(naslov registra v datasheetu)
Primer:
#define VIC_BASE_ADDR 0xFFFFF000
#define VICIRQStatus (*(volatile unsigned int *)(VIC_BASE_ADDR + 0x000)) |
|
Nazaj na vrh |
|
 |
71GA Član


Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.00 Kraj: Ljubljana
|
Objavljeno: Pet Jul 01, 2011 9:49 am Naslov sporočila: |
|
|
MarkoM je napisal/a: |
71GA je napisal/a: |
Hvala za obrazložitev ampak ali nebi bilo edino pravilno, da te datoteke znamo napisati sami? |
Zakaj bi, če to napišejo proizvajalci prevajalnikov ali proizvajalci krmilnikov. Lahko napišeš sam, greš skozi datasheet in vse definiraš vse registre ter njihove naslove, vendar zakaj bi to delal kar je narejeno in prosto dostopno. |
Ker brez tega ostane neka luknja v znanju pa mi to nikakor ni všeč, ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu. Poleg tega tako kot si rekel tudi sam slej ko prej naletiš na en primer, ko ti nekaj ne dela . No takrat se izvlečeš le tako, da pač greš gledat to kar so ti napisali proizvajalci mcu in mogoče dolgo časa iščeš težavo. Če bi te zadeve napisal sam pa bi problem definitivno hitreje rešil.
Rad bi izpostavil, da je to zelo koristno, pa mi za moj procesor (ARM926ej-s) tega nihče ne zna pokazati . Sem se matral pol leta, da lahko sedaj zastonj compilam programe za ARM v IDE Eclipse v Linux Ubuntuju. Uspešno sem tudi skompilal blinker program (projekt), ki je bil spisan za Keil za Windows. Ampak tega programa si ne znam razložiti, ker takoj ko začnem kopat v library je vsega ogromno, ker imam v projektu več kot 15 headerjev, okrog 8 source datotek, 1 startup kodo in 1 tabelo vektorjev. Kako naj se pol en začetnik to nauči? In to je še najlažji izmed priloženih primerov. Skoraj bolje da grem sam pisat od začetka ampak bi rabil nekega mentorja ali pa tečaj. |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.37
|
Objavljeno: Pet Jul 01, 2011 9:53 am Naslov sporočila: |
|
|
71GA je napisal/a: |
..., ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu. |
Potem kar začni z asemblerjem...  _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
71GA Član


Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.00 Kraj: Ljubljana
|
Objavljeno: Pet Jul 01, 2011 9:55 am Naslov sporočila: |
|
|
gumby je napisal/a: |
71GA je napisal/a: |
..., ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu. |
Potem kar začni z asemblerjem...  |
No to sem že in sem si razložil startup kodo pa tabelo vektorjev. Zdej sem pa na točki, kjer [slovenščina je zame španska vas] spisat C program  |
|
Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.34 Kraj: Lovrenc na P.
|
Objavljeno: Pet Jul 01, 2011 10:32 am Naslov sporočila: |
|
|
71GA je napisal/a: |
Ker brez tega ostane neka luknja v znanju pa mi to nikakor ni všeč, ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu. |
Potem si se stvari lotil malce nerodno. Pilot potniškega letala tudi ni začel svoje kariere na airbusu 380...
Začni z enim enostavnim 8-bitnim krmilnikom (AVR, PIC)... |
|
Nazaj na vrh |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.02 Kraj: Maribor
|
Objavljeno: Pet Jul 01, 2011 11:26 am Naslov sporočila: |
|
|
Kaj pa kak "online" tečaj ?
Tedensko ena lekcija, potem pa vprašanja, diskusija... Vsi vidijo vse.
Odpadejo prostorski problem, časovni problem, transportni problem, skoraj neomejeno število udeležencev ...
Lep pozdrav. |
|
Nazaj na vrh |
|
 |
71GA Član


Pridružen-a: Tor 16 Jun 2009 18:53 Prispevkov: 391 Aktiv.: 2.00 Kraj: Ljubljana
|
Objavljeno: Pet Jul 01, 2011 1:44 pm Naslov sporočila: |
|
|
MarkoM je napisal/a: |
71GA je napisal/a: |
Ker brez tega ostane neka luknja v znanju pa mi to nikakor ni všeč, ker bi rad spoznal mikroprocesor od nižjega nivoja postopno k višjemu. |
Potem si se stvari lotil malce nerodno. Pilot potniškega letala tudi ni začel svoje kariere na airbusu 380...
Začni z enim enostavnim 8-bitnim krmilnikom (AVR, PIC)... |
Sem predaleč, da bi zaj nehal
Obelix je napisal/a: |
Kaj pa kak "online" tečaj ?
Tedensko ena lekcija, potem pa vprašanja, diskusija... Vsi vidijo vse.
Odpadejo prostorski problem, časovni problem, transportni problem, skoraj neomejeno število udeležencev ...
Lep pozdrav. |
Dobra ideja. Lahko preko bloggerja naredimo kaj. |
|
Nazaj na vrh |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1235 Aktiv.: 5.66 Kraj: KOPER
|
Objavljeno: Pet Jul 01, 2011 1:56 pm Naslov sporočila: |
|
|
Ziga: ne rabiš nehat, nadaljuj v assemblerju! _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
 |
|
|
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: 7 dni
Powered by phpBB © 2001, 2005 phpBB Group
|