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


Pridružen-a: Čet 20 Nov 2008 23:52 Prispevkov: 481 Aktiv.: 2.38 Kraj: PMAVs
|
Objavljeno: Pon Jan 24, 2011 3:58 pm Naslov sporočila: |
|
|
ljudsko je napisal/a: |
vilko, za začetek in učenje C-ja priporočam vajo s pisanjem konzolnih programov na računalniku. Tako se je najlažje naučiti C sintakso. Jo dokaj hitro osvojiš. Še večji plus pa je, da si omisliš neko dobro razvojno okolje. Sposodi si kakšno knjigo za osnove C-ja. Ko boš te osvojil, ti prehod na mikrokrmilnike ne bo delal težav.
Moraš pa vedeti, da ko boš začel s C-jem pri mikrokrmilnikih se boš moral dobro poglobiti v arhitekturo mikrokrmilnika (sicer malo manj, kot pri zbirniku, ampak vseeno). Prav tako ima vsak prevajalnik svoje finte. Meni osebno recimo CCS C ni všeč, zaradi zmedenih intergriranih funkcij, ki nikjer niso razložene (pa še precenjen je). Ko se odločiš za nek prevajalnik, se ga pač moraš navadit in od začetka iskati direktive, ki jih uporablja (recimo PORTB namesto 0x05 ali nevem koliko že).
Začni pri podatkovnih tipih, operatorjih, pogojnimi stavki, funkcijah in to vse nadgrajuj. Sicer pa, ne boj se raziskovati. Internet je ena velika baza znanja in mislim, da ji podatkov o C-ju (atanu višjih programskih jezikov, Capo De Capo) res ne bi smelo primanjkovati. |
Da nebi res bil preveč pameten ! Malo se ozri in poglej, kaj vse je vilko že naredil ! In kaj nam boš ti pokazal ? _________________ Danes je težko biti budala, konkurenca je velika, pa še dokazovati se moraš večkrat na dan.
Sem ogledalo: Nisem kriv, če v meni vidite nekaj kar vam ni všeč. |
|
Nazaj na vrh |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1235 Aktiv.: 5.66 Kraj: KOPER
|
Objavljeno: Pon Jan 24, 2011 3:58 pm Naslov sporočila: |
|
|
Za učenje C-ja ti priporočam Quincy 2005. Enostaven, pregleden in zastonj. _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.37
|
Objavljeno: Pon Jan 24, 2011 4:00 pm Naslov sporočila: |
|
|
vilko je napisal/a: |
Ej, drabi Gumby, tvoj primer me je popolnoma pomiril.  |
Malo šok terapije ne škodi včasih
Brez panike... tole so ekstremni primeri zamaskirane kode (samo kot zanimivost kaj vse prevajalnik prebavi). Normalna koda je popolnoma pregledna  _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
žrepko Član

Pridružen-a: Tor 23 Mar 2010 20:12 Prispevkov: 700 Aktiv.: 3.76 Kraj: Ptuj-Maribor
|
Objavljeno: Pon Jan 24, 2011 6:13 pm Naslov sporočila: |
|
|
rudiP je napisal/a: |
Za učenje C-ja ti priporočam Quincy 2005. Enostaven, pregleden in zastonj. |
Meni še enostavnejši: DevC++ (lahko pišeš tudi s C)
Program ti predpripravi okence, vpišeš v main() samo printf("Vilko se uci");
in ti že računalnik soli pamet, da se učiš.  |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1715 Aktiv.: 7.22 Kraj: Ig
|
Objavljeno: Pon Jan 24, 2011 6:43 pm Naslov sporočila: |
|
|
Drugače je tale stran precej obširna, z nje se da veliko dobiti. Konkretno za primer Printf(), za katero Vilko že lep cajt sprašuje.
LP G _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3365 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Pon Jan 24, 2011 7:37 pm Naslov sporočila: |
|
|
Hvala vsem za dobre nasvete, niso nikoli odveč.
Ej, Gorazd hvala, to je tisto, kar sem iskal.
C bom potreboval, da bom lahko sledil ARM seminarju, ki bo čez mesec ali dva.
Vadil bom kar na C-u, ki ga imam na AVRStudio. Doslej ga nisem uporabljal, in mislim, da bom za AVR-e ostal kar lepo na Bascomu. No, pravijo, da nikoli ne reci nikoli.
Še eno vprašanje, saj vas je kar veliko, ki veliko znate, in ste pripravljeni to deliti z drugimi:
V bascomu se sila preprosto definira spremenljivke v ERAM-u, se pravi, da se pri zaustavitvi sistema, power off, podatki ne brišejo (če tega izrecno ne zahtevaš) in jih imaš pri ponovnem zagonu že na razpolago. Pride marsikje prav.
Tako spremenljivko enostavno definiram z dodatkom ERAM:
Koda: |
dim spremenljivka as Eram word |
in potem pišem vanjo podatke in berem, skoraj kot da bi bila v SRAM-u.
V skriptah FE nisem zasledil ničesar o tej vrsti pomnilnika. Kako je to pri ARM-ih? |
|
Nazaj na vrh |
|
 |
kobranka Član

Pridružen-a: Sob 24 Jul 2010 19:37 Prispevkov: 3403 Aktiv.: 18.70 Kraj: nekje v zgornjem posočju
|
Objavljeno: Pon Jan 24, 2011 7:41 pm Naslov sporočila: |
|
|
žrepko je napisal/a: |
Meni še enostavnejši: DevC++ (lahko pišeš tudi s C)
Program ti predpripravi okence, vpišeš v main() samo printf("Vilko se uci");
in ti že računalnik soli pamet, da se učiš.  |
Kaj pa je lažje C ali C++ oz. bolj logišno?
Nekdaj me je zanimalo, da bi kje staknil kakšno slovensko knjigo za se učiti C++ pa sem obupal. Takrat se mi je nekje ugodno ponujala rabljena pa mi je všla izpred nosa. |
|
Nazaj na vrh |
|
 |
žrepko Član

Pridružen-a: Tor 23 Mar 2010 20:12 Prispevkov: 700 Aktiv.: 3.76 Kraj: Ptuj-Maribor
|
Objavljeno: Pon Jan 24, 2011 8:21 pm Naslov sporočila: |
|
|
@kobranka:
C je za mikrokontrolerje dovolj če obvladaš. C++ je namenjen bolj za računalniške programe. Za seboj pritegne ogromno kode, ki je mali mlinček ni zmožen niti shraniti. Drugače pa je vse iz istega testa... Če znaš C, boš hitro pogruntal C++
@vilko:
preberi temo o začetku z AVR v C. Tam imaš na 6 ali 7 strani to podrobno opisano.
Poglej tudi to in še to. . Zelo nazorno in podrobno opisano. Tudi začetki C. |
|
Nazaj na vrh |
|
 |
g.ergaver Član

Pridružen-a: Ned 27 Feb 2011 8:12 Prispevkov: 35 Aktiv.: 0.20 Kraj: Ajdovščina
|
Objavljeno: Čet Mar 24, 2011 11:31 am Naslov sporočila: |
|
|
Živjo!
Imam eno vprašanje.
Uporabljam ARM7 LPC2138. Naslovni prostor je 32 biten.
Zanima me ali je sledeča sintaksa pravilna:
#define SECTOR22 0X00078000//naslov začetka 22 sektorja v FLASH spominu
struct baza_nastavitev
{
unsigned char ura;
unsigned char minute;
...
}settings
//BTW to se izvrši ko se procesor zbudi, tako da iz flasha pobere zadnje nastavitve, ki jih med delovanjem sproti osvežuje
char *ptr;//init kazalca na 1byte v flashu
char *settings;//kazalec na 1byte podatek
settings=&settings;//kazalec kaže na začetek strukture
ptr=SECTOR22;//ali je to pravilna sintaksa za nastaviti kazalec na začetek sektorja22
length=sizeof(settings);
for(i=0;i<length;i++)//to naj bi skopiralo byte po byte nastavitev iz flasha v strukturo
{
*settings=*ptr;//kar se nahaja na naslovu kazalca ptr naj gre na kazalec settings
ptr++;//povečanje obeh kazalcev za 1 torej kažeta na naslednji byte
settings++;
} |
|
Nazaj na vrh |
|
 |
g.ergaver Član

Pridružen-a: Ned 27 Feb 2011 8:12 Prispevkov: 35 Aktiv.: 0.20 Kraj: Ajdovščina
|
Objavljeno: Čet Mar 24, 2011 12:37 pm Naslov sporočila: |
|
|
Še nekaj. Kako v 32 bitnem sistemu izvedeti velikost arraya strukture?
Uporabljam GNU C compiler. Prebral sem user's manual vendar nikjer ne omenja sizeof() pri strukturah.
primer?
struct baza_profilov
{
char ime[19];
char temp;
char time;
}profili[MAX];
sizeof(profili[0]);//vrne velikost samo enega profila?
sizeof(profili);//a vrne velikost celotnega arraya profilov ali samo enega?
Zanima me kako dejansko določiti velikost enega profila oziroma celotnega arraya profilov. Če je sistem 32biten vsakemu characterju določi 4byte ali 1byte in potem poravna naslove za 32bitov pri naslednji spremenljivki?
Recimo: velikost 1 profila 19+1+1=21bytov, če ne bi bilo poravnanja
s poravnavanjem pa: 19+1(poravnava)+1+3(poravnava)+1+3(poravnava)=28bytov //če pravilno razumem
Je pa tudi še ena možnost in sicer preizkus na sistemu v praksi.
Hvala za odgovore.
Lp, Gregor |
|
Nazaj na vrh |
|
 |
g.ergaver Član

Pridružen-a: Ned 27 Feb 2011 8:12 Prispevkov: 35 Aktiv.: 0.20 Kraj: Ajdovščina
|
Objavljeno: Čet Mar 24, 2011 1:22 pm Naslov sporočila: |
|
|
g.ergaver je napisal/a: |
Še nekaj. Kako v 32 bitnem sistemu izvedeti velikost arraya strukture?
Uporabljam GNU C compiler. Prebral sem user's manual vendar nikjer ne omenja sizeof() pri strukturah.
primer?
struct baza_profilov
{
char ime[19];
char temp;
char time;
}profili[MAX];
sizeof(profili[0]);//vrne velikost samo enega profila?
sizeof(profili);//a vrne velikost celotnega arraya profilov ali samo enega?
Zanima me kako dejansko določiti velikost enega profila oziroma celotnega arraya profilov. Če je sistem 32biten vsakemu characterju določi 4byte ali 1byte in potem poravna naslove za 32bitov pri naslednji spremenljivki?
Recimo: velikost 1 profila 19+1+1=21bytov, če ne bi bilo poravnanja
s poravnavanjem pa: 19+1(poravnava)+1+3(poravnava)+1+3(poravnava)=28bytov //če pravilno razumem
Je pa tudi še ena možnost in sicer preizkus na sistemu v praksi.
Hvala za odgovore.
Lp, Gregor |
V bistvu sem zadevo sprobal na Šarmu in ugotovil sledeče:
sizeof(profili);vrne velikost v bytih za celoten array
sizeof(profili[0]); vrne vrednost v bytih za eno strukturo v arrayu
Vrstni red v deklariranju memberjev v strukturi je važen, saj na primer:
struct baza_profilov
{
char ime[19];//19bytov + 1byte za poravnavo do 32bitov(4byte)
int casovnik;//4byte + 0bytov za poravnavo
char time;//1byte + 3byte za poravnavo do 32bitov(4byte)
}profil;
vrne sizeof(profil) vrednost 28;
medtem, ko
struct baza_profilov
{
char ime[19];//19 bytov
char time;//1 byte
int casovnik;//4 byte
}profil;
vrne sizeof(profil) vrednost 24; kar se lahko pozna pri pisanju profilov v eeprom, flash,...
Lep pozdrav, Gregor |
|
Nazaj na vrh |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1235 Aktiv.: 5.66 Kraj: KOPER
|
Objavljeno: Čet Mar 24, 2011 2:44 pm Naslov sporočila: |
|
|
Kompajler CodevisionAvr mi javi missing ',' v naslednji vrstici
int send(SOCKET s, const u_char xdata* buf, u_int len);
kje manjka vejica ? _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
 |
jvolk Član



Pridružen-a: Ned 05 Mar 2006 1:14 Prispevkov: 737 Aktiv.: 3.13 Kraj: okolica Divače
|
Objavljeno: Čet Mar 24, 2011 2:46 pm Naslov sporočila: |
|
|
Koda: |
const u_char xdata* buf |
Tole mi ne zgleda ravno OK. |
|
Nazaj na vrh |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1235 Aktiv.: 5.66 Kraj: KOPER
|
Objavljeno: Čet Mar 24, 2011 2:56 pm Naslov sporočila: |
|
|
Prenašam program pisan v C ju v CAVR pa je kompajler začel jamrat v tej vrstici header fajla, nato naprej po vrsticah ko tega zamomentiram.
Kako bi ti to napisal? Hvala.
Prilagam še par vrstic za boljšo sliko.
Koda: |
#ifdef __TCP__
int send(SOCKET s, const u_char xdata* buf, u_int len);
int send_in(SOCKET s, const u_char xdata* buf, u_int len);
int recv(SOCKET s, const u_char xdata * buf, u_int len);
#endif // __TCP__
#ifdef __UDP__
u_int sendto(SOCKET , const u_char xdata*, u_int, u_char *, u_int);
u_int sendto_in(SOCKET , const u_char xdata*, u_int);
u_int recvfrom(SOCKET , const u_char xdata*, u_int, u_char *, u_int *);
#endif // __UDP__
|
Ne vem v katerem Cju je izvorna koda napisana. Prebral: KEIL _________________ Lep pozdrav iz Kopra Rudi
Nazadnje urejal/a rudiP Čet Mar 24, 2011 3:24 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Čet Mar 24, 2011 3:04 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
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: 6 dni
Powered by phpBB © 2001, 2005 phpBB Group
|