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 

C problem
Pojdi na stran Prejšnja  1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



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

PrispevekObjavljeno: Tor Mar 06, 2012 10:22 am    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
vilko je napisal/a:
Tema je: Kaj trenutno počnete.

Ni več. Temo sem razdelil, ker je bila debata okoli C tam čisto offtopic.


Oprosti, sem spregledal.
A nisem imel namena odpreti te teme, ker je popolnoma nesmiselna in ne prideš do rezultata. Vsak svojo ljubico hvali.
Jaz sem v temi z naslovom, "kaj danes počnem", samo stresel svojo žalost, ker sem izgubil nekaj dni na tem kamnu. Vizuelno kaj takega težko najdeš, in potem sem program testiral po delih, dokler nisem prišel do teh salamenskih if stavkov.
To je en tak kamen, bo katerega se bom kar naprej spotikal, no če sem bom prihodnjič spomnil, bom posebej pregledal vse if stavke.

Drugo kar zamerim Linux-u in C-u je razlikovanje velikih in malih črk. Ko tipkamo zlahka udarimo veliko črko namesto male, ali obratno. C ti to zameri in potem popravljaj, - retipkaj. Bascom ti to odpusti. Pri Bascomu se vsaka spremenljikva, izraz karkoli začne z veliko začetnico, in nadaljuje z malimi črkami. A nič hudega, če se zmotiš, on to popravi sam. Tako imaš manj možnosti, da se spotikaš ob formo jezika.

Kar mi je všeč pri C-u, je omejena veljavnost nekega imena za spremenljivko. Če deklariraš neko spremenljivko v funkciji, tedaj velja to ime samo v okviru te funkcije. Kar je načeloma fajn. No, jaz sem pri Bascomu to rešil tako, da za splošne delovne spremenljivke tipa integer ali byte, (običajno i,j,k,l) ki jih redno uporabljam pri for stavkih ali podobnih začasnih zadevah, da ji na začetku podprograma spravim na stack, v podprogramu uporabim po svoje in po potrebi, in tik pred povratkom iz podprograma spet vrnema iz stack-a.

Kar mi je spet všeč pri Bascomu, da avtomatsko pretvori tip podatka glede na deklaracijo spremenljivke. Če recimo rečem, da je
a tipa single in
b tipa integer

tedaj če rečem a = b, bascom poskrbi sam, da se podatek pravilno predela. Posebne funkcije so potrebne samo pri predelavi iz ali v obliko niza znakov (character).

Je pa vedno tako: uporabljaj tisto orodje, ki ga najbolj obvladaš in najhitreje boš prišel do rezultata. V svoji karieri sem 'dal skoz' veliko programskih jezikov, od assemblerja za IBM/360, IBM-om takrat zelo uporabljan RPG (Neke vrste program generator) , Cobol, (sem ga samo povohal), Fortran, (sem ga predaval, a ga danes ne znam več), Pascal in C (sem nekoč samo povohal, sedaj pa sem kar temeljito se namočil v C), no pri mikrokrmilnikih pa sem začel z assemblerjem za 6502, (Commodore, se ga kdo še spomne?) potem sem za nekaj časa prenehal z programiranjem, sedaj pa sem pristal na Atmelih in Bascomu, (če le ni potrebno programirati Linux).

_________________
Prepričan sem, da je inteligentnih bitij v vesolju veliko. A ker so inteligenta, se nam nočejo prikazati.
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: Tor Mar 06, 2012 10:28 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MitjaN
Član
Član



Pridružen-a: Sre 17 Avg 2011 15:40
Prispevkov: 91
Aktiv.: 0.59
Kraj: Ljubljana

PrispevekObjavljeno: Tor Mar 06, 2012 11:06 am    Naslov sporočila:   Odgovori s citatom

Kar se sintaktičnih napak tipa zamenjave "=" z "==" tiče, jih danes ujame vsak povprečen prevajalnik. Trik je večinoma samo v tem, da prevajalnik privzeto ni tako nastavljen. Pod nastavitvami poglej za možnosti "verbose diagnostics" in/ali "issue remarks" pa izklopi "suppress warnings", če je slučajno vklopljeno.

Pri tem tudi pomaga, da pri prevajanju projekta odpraviš vse (poudarjam vse) razloge za morebitna opozorila in opombe (warnings, remarks). Ker če pri vsakem prevajanju dobiš 632 opozoril, boš seveda spregledal 633-tega, ki se bo skrival nekje vmes. Preverjeno pomaga.

Danes je hudič v tem, da so tudi navidez preprosta orodja sama po sebi precej kompleksna, in če jih uporabljaš preden si prebral navodila (kot to počno pravi moški) te lahko kdaj pa kdaj opeče.

Za bolj temeljit strojni pregled kode pa priporočam uporabo kakšnih statičnih pregledovalnikov kode (splint, lint, ...)

LP, Mitja
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.: 19.64

PrispevekObjavljeno: Tor Mar 06, 2012 11:37 am    Naslov sporočila:   Odgovori s citatom

"warning=error"
Ta opcija te prisili k pisanju "čiste" kode Smile

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14557
Aktiv.: 65.24
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Tor Mar 06, 2012 1:44 pm    Naslov sporočila:   Odgovori s citatom

vilko je napisal/a:
...

Samo eno potpitanje: Če se omejimo na atmel, česa bascom ne more?


Ojej Vilko ... ko takole prebiram forum vidim, da marsikaj. Skratka tisto česar avtor pač ni napisal. Se recimo spomnim enega tvojega primera. Tistega timerja za izklop luči. Sicer sila enostavne zadeve. (bil je objavljen v eni iz med naših revij) Tebi sem poslal eno narejeno verzijo. Rekel si da bom boš spisal bascom verzijo. Tistega do sedaj še nisem videl. Kasneje si kompliciral z nekimi bistabili - tudi tistega nisem nikoli videl. Mimogrede tiste moje verzije so zmotirane doma na treh mestih ter ena v enem javnem prostoru. Zadeva deluje od objave članka v reviji brezhibno. Torej je hardwer dobro zasnovan.
Nekoč sem nekoga že izval. Na forumu ter v reviji imaš načrt za moj digitalni usmernik. Glede na to, da sem bil tam že v assemblerju zelo na kratko s procesorskim časom te izovem da tisto spišeš v bascomu. Kaj procesor tam počne?
Direkno multipleksira 8 led prikazovalnikov, bere rotacijski enkoder, bere dva ad vhoda, upravlja R2R (DA) omejuje tok. Seveda obdeluje podatke. (tole je zelo pomembno - brez skrbi lahko prklopiš ledico pri polni napetosti, pa bo usmernik uspel pravočasno omejiti tok, ne da bi ladica pregorela) Omejitev prav tako vrši mikrokontroler z direknim upravljanjem R2R.
Če ti uspe to spisat, začnem programirati v bascomu.

_________________
lp
Silvo
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.: 63.77
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Tor Mar 06, 2012 1:55 pm    Naslov sporočila:   Odgovori s citatom

vilko je napisal/a:
Samo eno potpitanje: Če se omejimo na atmel, česa bascom ne more?

Dobiš HW od DDS generatorja, ki sem ga naredil. SW je v C-ju. Lahko se lotiš pisanja v bascom.
Verjamem celo, da ti bo uspelo, le zgornja frekvenčna meja nikakor ne bo 600kHz.

_________________
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
S53DZ
Član
Član



Pridružen-a: Čet 28 Apr 2011 9:27
Prispevkov: 951
Aktiv.: 6.01
Kraj: Ljubljana

PrispevekObjavljeno: Tor Mar 06, 2012 2:12 pm    Naslov sporočila:   Odgovori s citatom

Zame je še vedno asembler zakon:
- za časovno kritične zadeve,
- pri stiski s spominom.
C pa za:
- vse ostalo, predvsem za bolj kompleksne zadeve.

Tako, da ta kombinacija zmaguje.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gregoral
Član
Član



Pridružen-a: Pet 24 Nov 2006 9:42
Prispevkov: 688
Aktiv.: 3.24
Kraj: Ljubljana

PrispevekObjavljeno: Tor Mar 06, 2012 5:42 pm    Naslov sporočila:   Odgovori s citatom

Ja saj to sem hotel povedat.

Če si na neko orodje (programski jezik) navajen (ti "leži") in je zadosti zmogljivo da narediš tisto kar rabiš potem ni razloga da bi menjal samo zaradi menjave.

Tudi če ne veš kaj je stack in kaj je heap lahko napišeš enostaven program v bascomu.
Če tega ne veš v assemblerju ne prideš daleč.
Malce se lahko pošlepaš še v C#, še manj v C in C++.

Če je treba zagotoviti da bo prekinitev dolga točno toliko in toliko ciklov skoraj ne gre brez assemblerja.

Avtomatske pretvorbe iz stringov v integerje ipd. niso vedno zaželene.
Vsaj pri mikrokontrolerjih bi se jaz temu izogibal (sploh v prekinitvah).

Že enostaven primer, ko sem kopiral del kode in v prekinitveni rutini izvajal množenje in deljenje
(na procesorju ki nima hw množenja in deljenja) pove, da se veliko stvari programerju v višjenivojskih programih "skrije".

Če bi delal v assemblerju bi zelo hitro ugotovil kaj pomeni stavek:
r = a * k / l;

(prevede se v klic funkcije z zankami)

Tako pač je in vsakemu pač nekaj leži.

Kako že gre:
Programiraj in pusti programirati.
(Live and let live.)

LP, Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 6.05
Kraj: Koroška-Mežica

PrispevekObjavljeno: Tor Mar 06, 2012 5:48 pm    Naslov sporočila:   Odgovori s citatom

gregoral je napisal/a:

(Live and let live.)

LP, Gregor


Hehe, če si citiral Guns'n roses, je tisto Live and let die Very Happy

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
vilko
Član
Član



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

PrispevekObjavljeno: Tor Mar 06, 2012 6:58 pm    Naslov sporočila:   Odgovori s citatom

He, he, Silvo, izgleda, da sem ti stopil na žulj. Pa na hitro nekaj odgovorov:

Bascom se da odlično kombinirati z assemblerjem, če je potrebno. Pri shranjevanju spremenljivk na stack, to počenjam z assemblerskim vložkom.
Kar se tiče stikala, sem ga realiziral, a nisem bi zadovoljen z rezultatom. Zadeva je delovala dobro do časovnega intervala 15 minut, potem pa je napetost tako padla, da se ni dalo več preklopit releja. Potreboval pa bi stvar, da bi stvar delovala vsaj dve uri. Stvar sem dal začasno na hladno, ker imam nujnejše delo, a nisem dal v grob, ampak samo v hladilnik, tako, da sem še vedno dolžnik.

Kar se tiče zmogljivosti pa, če potrebujem večji ram ali flash, pač vzamem večji mikroprocesor, namesto da bi štrikal čipke v assemblerju. Saj vem, da se da, a biti moraš mojster, jaz pa sem amater in se nočem primerjati z mojstri. Problemi, ki jih rešujem tudi ne potrebujejo neke kritične hitrosti, uporabljam redno 11059200Hz kristal, ker često povezujem mikroprocesorje v mrežo, in je za točno bodno hitrost fajn, da je tak takt mikroprocesorja.

Ampak naj bo! Priznam. Vse kar se da v assemblerju, se ne da v Bascomu. Le, da pri svojih nalogah nisem še naletel na take omejitve.

To, pa, da je fino, da je Spremenljivka različna od spremenljivke zaradi velikosti začetne črke, pa še ne razumem. Najbrž ne bom nikoli, pa to ne bo nikakršna velika nesreča.

Včasih sem predaval assembler IBM360, in sem vedno dal približno tako prispodobo. Assembler, je kot bi kopal jamo z lopato, višji programski jezik pa kot bi jo kopal z rovokopačem. Z lopato narediš preciznejše, a boš vložil več truda, z rovokopačem boš hitrejši, a izdelek ne bo tako precizen. Odlična je kombinacija enega in drugega. Uporabljajte assembler kot podprograme, ki jih po potrebi kliče program napisan v višjem programskem jeziku. No, tako je bilo včasih, a verjetno tudi to ni več tako, kot je bilo. (Salamenski Kučan!)

Lep pozdrav in veliko uspeha vsem, ki programirate, ne glede na programski jezik, ki ga uporabljate!

_________________
Prepričan sem, da je inteligentnih bitij v vesolju veliko. A ker so inteligenta, se nam nočejo prikazati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Mihec
Član
Član



Pridružen-a: Pet 24 Mar 2006 20:10
Prispevkov: 412
Aktiv.: 1.87
Kraj: Mengeš

PrispevekObjavljeno: Tor Mar 06, 2012 7:05 pm    Naslov sporočila:   Odgovori s citatom

Hm....rdečelaska, temnolaska, blondinka ali rjavolaska?

Če obvladaš sceno ti nobena ne dela preglavic. Je pa res, da je pristop in vložen trud najverjetneje povsod drugačen.

Very Happy
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3356
Aktiv.: 16.95

PrispevekObjavljeno: Sre Mar 07, 2012 7:27 am    Naslov sporočila:   Odgovori s citatom

Vilko, jaz imam tole sprintano. Predvsem na začetku, pa tudi sedaj, privarčuje kak siv las Wink
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: Sre Mar 07, 2012 8:26 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



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

PrispevekObjavljeno: Sre Mar 07, 2012 9:22 am    Naslov sporočila:   Odgovori s citatom

Hvala, lojzek, sem dal dokument med firefoxzaznamke pod C
Verjetno bo res še koristilo, čeprav sem z mojo nalogo skoraj na koncu, (še napake moram ven pobrati) v naprej pa sem bo držal tistega, kar znam, če se bo le dalo.

Kroko, še malo poduka prosim. Kaj je globalna spremenljivka in kaj je lokalna nekako si predstavljam, kaj pa je privatna spremenljivka?

_________________
Prepričan sem, da je inteligentnih bitij v vesolju veliko. A ker so inteligenta, se nam nočejo prikazati.
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.: 19.64

PrispevekObjavljeno: Sre Mar 07, 2012 9:52 am    Naslov sporočila:   Odgovori s citatom

Lokalna spremenljivka je vidna (dosegljiva) samo znotraj funkcije, globalna pa povsod. Privatna spremenljivka je pa vidna samo znotraj objekta (tega C ne pozna).
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Č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: 80 dni


Powered by phpBB © 2001, 2005 phpBB Group