|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Tor Mar 06, 2012 10:22 am Naslov sporočila: |
|
|
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 |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Tor Mar 06, 2012 10:28 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
MitjaN Član
Pridružen-a: Sre 17 Avg 2011 15:40 Prispevkov: 91 Aktiv.: 0.59 Kraj: Ljubljana
|
Objavljeno: Tor Mar 06, 2012 11:06 am Naslov sporočila: |
|
|
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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.64
|
Objavljeno: Tor Mar 06, 2012 11:37 am Naslov sporočila: |
|
|
"warning=error"
Ta opcija te prisili k pisanju "čiste" kode _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
Silvo Moderator
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14557 Aktiv.: 65.24 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Mar 06, 2012 1:44 pm Naslov sporočila: |
|
|
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 |
|
|
VolkD Član
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 63.77 Kraj: Divača (Kačiče)
|
Objavljeno: Tor Mar 06, 2012 1:55 pm Naslov sporočila: |
|
|
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 |
|
|
S53DZ Član
Pridružen-a: Čet 28 Apr 2011 9:27 Prispevkov: 951 Aktiv.: 6.01 Kraj: Ljubljana
|
Objavljeno: Tor Mar 06, 2012 2:12 pm Naslov sporočila: |
|
|
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 |
|
|
gregoral Član
Pridružen-a: Pet 24 Nov 2006 9:42 Prispevkov: 688 Aktiv.: 3.24 Kraj: Ljubljana
|
Objavljeno: Tor Mar 06, 2012 5:42 pm Naslov sporočila: |
|
|
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 |
|
|
ljudsko Član
Pridružen-a: Pon 31 Mar 2008 8:19 Prispevkov: 1184 Aktiv.: 6.05 Kraj: Koroška-Mežica
|
Objavljeno: Tor Mar 06, 2012 5:48 pm Naslov sporočila: |
|
|
gregoral je napisal/a: |
(Live and let live.)
LP, Gregor |
Hehe, če si citiral Guns'n roses, je tisto Live and let die _________________ return;
brake; |
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Tor Mar 06, 2012 6:58 pm Naslov sporočila: |
|
|
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 |
|
|
Mihec Član
Pridružen-a: Pet 24 Mar 2006 20:10 Prispevkov: 412 Aktiv.: 1.87 Kraj: Mengeš
|
Objavljeno: Tor Mar 06, 2012 7:05 pm Naslov sporočila: |
|
|
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.
|
|
Nazaj na vrh |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.95
|
Objavljeno: Sre Mar 07, 2012 7:27 am Naslov sporočila: |
|
|
Vilko, jaz imam tole sprintano. Predvsem na začetku, pa tudi sedaj, privarčuje kak siv las |
|
Nazaj na vrh |
|
|
. Neznanec
Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Sre Mar 07, 2012 8:26 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Sre Mar 07, 2012 9:22 am Naslov sporočila: |
|
|
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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.64
|
Objavljeno: Sre Mar 07, 2012 9:52 am Naslov sporočila: |
|
|
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 |
|
|
|
|
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
|