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 

učenje jezika C
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
sraka
Član
Član



Pridružen-a: Čet 20 Nov 2008 23:52
Prispevkov: 481
Aktiv.: 2.38
Kraj: PMAVs

PrispevekObjavljeno: Pon Jan 24, 2011 3:58 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1235
Aktiv.: 5.66
Kraj: KOPER

PrispevekObjavljeno: Pon Jan 24, 2011 3:58 pm    Naslov sporočila:   Odgovori s citatom

Za učenje C-ja ti priporočam Quincy 2005. Enostaven, pregleden in zastonj.
_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.37

PrispevekObjavljeno: Pon Jan 24, 2011 4:00 pm    Naslov sporočila:   Odgovori s citatom

vilko je napisal/a:
Ej, drabi Gumby, tvoj primer me je popolnoma pomiril. Brick wall


Malo šok terapije ne škodi včasih Very Happy
Brez panike... tole so ekstremni primeri zamaskirane kode (samo kot zanimivost kaj vse prevajalnik prebavi). Normalna koda je popolnoma pregledna Smile

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
žrepko
Član
Član



Pridružen-a: Tor 23 Mar 2010 20:12
Prispevkov: 700
Aktiv.: 3.76
Kraj: Ptuj-Maribor

PrispevekObjavljeno: Pon Jan 24, 2011 6:13 pm    Naslov sporočila:   Odgovori s citatom

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š. Smile
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1715
Aktiv.: 7.22
Kraj: Ig

PrispevekObjavljeno: Pon Jan 24, 2011 6:43 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3365
Aktiv.: 14.17
Kraj: Dragomer

PrispevekObjavljeno: Pon Jan 24, 2011 7:37 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
kobranka
Član
Član



Pridružen-a: Sob 24 Jul 2010 19:37
Prispevkov: 3403
Aktiv.: 18.70
Kraj: nekje v zgornjem posočju

PrispevekObjavljeno: Pon Jan 24, 2011 7:41 pm    Naslov sporočila:   Odgovori s citatom

ž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š. Smile

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
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
žrepko
Član
Član



Pridružen-a: Tor 23 Mar 2010 20:12
Prispevkov: 700
Aktiv.: 3.76
Kraj: Ptuj-Maribor

PrispevekObjavljeno: Pon Jan 24, 2011 8:21 pm    Naslov sporočila:   Odgovori s citatom

@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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
g.ergaver
Član
Član



Pridružen-a: Ned 27 Feb 2011 8:12
Prispevkov: 35
Aktiv.: 0.20
Kraj: Ajdovščina

PrispevekObjavljeno: Čet Mar 24, 2011 11:31 am    Naslov sporočila:   Odgovori s citatom

Ž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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
g.ergaver
Član
Član



Pridružen-a: Ned 27 Feb 2011 8:12
Prispevkov: 35
Aktiv.: 0.20
Kraj: Ajdovščina

PrispevekObjavljeno: Čet Mar 24, 2011 12:37 pm    Naslov sporočila:   Odgovori s citatom

Š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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
g.ergaver
Član
Član



Pridružen-a: Ned 27 Feb 2011 8:12
Prispevkov: 35
Aktiv.: 0.20
Kraj: Ajdovščina

PrispevekObjavljeno: Čet Mar 24, 2011 1:22 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1235
Aktiv.: 5.66
Kraj: KOPER

PrispevekObjavljeno: Čet Mar 24, 2011 2:44 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jvolk
Član
Član



Pridružen-a: Ned 05 Mar 2006 1:14
Prispevkov: 737
Aktiv.: 3.13
Kraj: okolica Divače

PrispevekObjavljeno: Čet Mar 24, 2011 2:46 pm    Naslov sporočila:   Odgovori s citatom

Koda:
const u_char xdata* buf

Tole mi ne zgleda ravno OK.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1235
Aktiv.: 5.66
Kraj: KOPER

PrispevekObjavljeno: Čet Mar 24, 2011 2:56 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Neznanec
Neznanec



Pridružen-a: Pet 01 Okt 2004 1:17
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Čet Mar 24, 2011 3:04 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
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 -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
Stran 2 od 3

 
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: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group