Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • programovanie v c

programovanie v c

C,C++,C#

Moderátori: psichac, Moderátori

Re: programovanie v c

Odoslaťod peterple » 29 Sep 2016, 20:28

xmilos:
veď som aj čítal. Nikde som nepísal že mi chýba tých 5 bytov poľa, ale že si zamlčal kód ktorý inacializuje to pole v SRAM.
pôvodne si písat toto
xmilos napísal:
Kód: Vybrať všetko
code unsigned char arr[] = {0, 0b00010000, 0b00011000, 0b00011100 ,0b00011110, 0b00011111 };

Zapis som neverikoval.


1. Že si myslel miesto code const ma nenapadlo. Myslel som si že to code je tam po nepodarenom code tagu
2. Chýba tam slovo PROGMEM takže to do FLASH nebolo myslené.
3.
Kód: Vybrať všetko
const unsigned char arr[] = {0, 0b00010000, 0b00011000, 0b00011100 ,0b00011110, 0b00011111 };
urobí pole opäť do SRAM akurát sa kompileru naznačí že sa nesmie meniť, takže kričí ak sa tam priamo niečo priradí.
AVR je Harvardská architektúra a C primárne počíta skôr s von Neumannovskou, takže taká FLASH sa obhospodaruje všelijakými oblbovákmi. Neviem ako je to na iných harvadrských procesoroch, ak myslíš napr ARM tam je tušim adresný priestor jeden a teda je tam architektúra von Neumann a nie je problém s rozdelenou pamäťou programu a dát.
4.V asm čo si priložil na ukážku je
Kód: Vybrať všetko
6e:   80 81          ld   r24, Z

táto pracuje s SRAM, s toho čo si písal bolo jasné že vieš o čom píšeš a preto mi to dávalo zmysel že vieš že to máš v SRAM, kdeže tam nebola LPM.
5. na prístup do poľa si použil
Kód: Vybrať všetko
tmp = arr[tmp];
čo na AVR architektúre bude brať z SRAM aj keď pole bude vo FLASH (čo je tiež dobrý šok pre človeka čo to nepozná).

Na základe týchto piatich bodov som dedukoval že pole v SRAM nieje omyl. Tak som upresnil že si neukázal kód ktorý to pole do SRAM dostal. Tým sa totiž riešenie dĺžkou programu približuje iným riešeniam. Rýchlosťou však ani náhodou. Ešte som poukázal na menšiu robustnosť. Znova opakujem nikde som nepísal že mi tam chýba 5 prvkov pola.

lh:
tvoje riešenie je elegantné z pohľadu prenositelnosti. Na AVR sa to preloží ako veľmi slušne optimálny cyklus. Na nejakej platforme ktorá má barel shifter ktorý vie rotovať o ľubovolný počet bitov v jednej inštrukcii to bude možno najlepšie možné riešenie. Pravdu povediac na takýto spôsob riešenia som ani nepomyslel. Keby si prestal prispievať bola by to veľká škoda.

BgDestroy:
Ako sa to vezme. pri veľkosti tej FLASH sa 3 - 4 inštrukcie stratia a bežne sa to prekladá pomocou makra aby to bežalo rýchlejšie.

Najpodstatnejšie z tejto debaty je asi to že optimálnych riešení môže byť niekoľko a C dáva možnosť použiť práve to ktoré sa komu hodí. Na druhej strane to ale nie je jazyk pre lepičov kódu ktorý nemajú ani potuchu o tom ako to pracuje. Tým nemyslím nikoho kto sa zúčastnil na tejto debate. Myslím tým prevažne iné vlákna hlavne v sekcii Arduino.
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
peterple
Ultimate člen
Ultimate člen
Príspevky: 1898
Vek: 52.81
Založený: 25.06.2013
Bydlisko: Krajné
Karma: 52

Re: programovanie v c

Odoslaťod BgDestroy » 29 Sep 2016, 22:12

peterple:

Od C pozadujem, rychlo spraveny kod. Co znamena ze musim mat rezervu jak vo vykone aj v pamätiach, lebo musim pocitat ze kompilator to neskompiluje tak optimalne ako keby som to robil v asembleri (za univerzalnnost sa plati). Teda ked niekdo vycucne preddefinovane pole do RAM neberem to ako ze je lepic kodu. Pokial ma ist niekdo kto programuje v C do extremu a sledovat vystup a podla toho upravovat systemom pokus omyl, tak aby to kompiltator co najlepsie skompiloval. Tak to moze rovno robit v asembleri. Budes kompilovat v inom programe zase ten vystup bude iny. Pride nova verzia programu kompilatora zase sa kompilator bude o cosi inak spravat a tak. Cize hlavna postata C kvoli comu vznikla je tym padom stratena. A to je rychlost spisania a prehladnost kodu.

Na druhu stranku otazka znie. Je vhodne pouzivat C na zastaralom 8bitovom AVR s obmedzenymi instrukciami ? To si uz musi kazdy odpovedat sam.

Len tak pre porovnanie:
[*] ATMEGA 8L: cena cca 5.52 eur s dph (SOS) , 32 I/O
[*] Rpi Zero: cena 4 libry s dph, 26 I/O, vykon uplne inde, 32bit architektura, 512 MB ram, ulozny priestor uplne inde
Albert Einstein:
* Dôležitá vec je neprestať sa pýtať.
* Len dve veci sú nekonečné - vesmír a ľudská hlúposť. Ale tou prvou si nie som istý.
* Nie je dôležité, čo si dokázal v škole, ale to, čo dokážeš v živote.
BgDestroy
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 601
Vek: 32.6
Založený: 17.07.2006
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Karma: 2

Re: programovanie v c

Odoslaťod OM0XA » 29 Sep 2016, 22:56

- ako clovek, ktory tuto debatu vyprovokoval, vam vsetkym dakujem za vase prispevky. Tajne som dufal, ze sa najdu ( a nasli sa ) ludia, ktori to rozoberu do hlbky.. :-)
- nakoniec som tuto funkciu o ktorej sa tu bavime vobec nepouzil, vymyslel som to inac, no tato diskusia urcite nebola zbytocna.
- s tym, ze je AVR zastarany procesor by som nesuhlasil a ze sa neoplati ho programovat v C uz vobec nie. Niekedy som programoval stare procesory typu 51 v asembleri a neda sa to provnat s programovanim v C. Pokial nejde o absolutnu optimalnost kodu a je doast RAMky aj FLASHky, je C spravna volba s ohladom na komfort programatora.
- pouzivam aj ine procesory, napr, aj spominane ARM v raspberry, ale to na uplne ine aplikacie. Na tuto aplikaciu, je AVR idealne, raspberry nevhodne (netvrdim, ze sa to na nom neda urobit). Ide o voltmeter sietoveho trojfazoveho napatia, kde sa pocas jednej periody urobi asi 200 vzoriek. Kalibracia je cez RS232 a terminal. Uklada sa max a min. hodnota a cele sa to vypisuje na LCD displej. Kedze som obmedzeny priestorom do ktoreho musim toto zariadenie zmestit, raspberry by mi tam jednoducho nevoslo. :-)
- este pre zaujimavost, pouzivam kompilator gcc, ktory povazujem za dost dobry. Samozrejme da sa tam nastavit rozna optimalizacia kodu.
OM0XA
Stály člen
Stály člen
Príspevky: 229
Založený: 03.10.2012
Bydlisko: Poprad
Karma: 2

Re: programovanie v c

Odoslaťod BgDestroy » 30 Sep 2016, 05:31

OM0XA:

https://www.raspberrypi.org/products/pi-zero/
Rozmery RpiZero: 65mm x 31mm x 5mm Mi pride ako velmi komfortne rozmery ked tam mas absolutne vsetko.

Povedz mi dovody preco sa RPi Zero neoplati a radsej ist do AVR? Ja v tom vidim drvivu prevahu vyhod:
Vyhody:
[*] Vinikajuca cena: 4libry pradicka. postovne skoro ako u nas tiez 4 libry,
[*] Rozmery: konecne u tejto variaty RPi vinikajuce rozmery 65mm x 31mm x 5mm
[*] Operacna pamat: 512MB (system spapa par MB zbytok je tvoj). Pouzivam Raspian Lite (terminalovy os)
[*] Vypoctovy vykon: zalozeni na 32bit BCM2835. Vykon sa neda zrovnavat s AVR
[*] Ukladanie: vsetko je vecou pamatovej karty ziadne obmedzenie na par kB FLASH. Si vezmi ze si tam robis merania a ukladas si merania v case atd.
[*] Velmi jednoduche pripojenie na internet, coz otvara dalsie moznosti vyuziti
ATD

Za 4 libry taketo uz hotove zariadenie a riesis uz len v podstate len nejake to periferium co k nemu pripojis s takymi malymi rozmerami ... Pomer cena/vykon absolutne bezkonkurencny oproti 8bitovych s obmedzenymi instrukciami AVR mikrokontrolermi. Kde este musis k tomu pricitat cenu krystala, 3x kondenzator, 1rezitor coz navysi rozmery a mas hned podobne rozmery ako RPi Zero.


Jedina vec, kedy je vhodna AVR su zariadenia napajane na baterkou. A inak nie.
Albert Einstein:
* Dôležitá vec je neprestať sa pýtať.
* Len dve veci sú nekonečné - vesmír a ľudská hlúposť. Ale tou prvou si nie som istý.
* Nie je dôležité, čo si dokázal v škole, ale to, čo dokážeš v živote.
BgDestroy
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 601
Vek: 32.6
Založený: 17.07.2006
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Karma: 2

Re: programovanie v c

Odoslaťod xmilos » 30 Sep 2016, 06:12

BgDestroy napísal: Pokial ma ist niekdo kto programuje v C do extremu a sledovat vystup a podla toho upravovat systemom pokus omyl, tak aby to kompiltator co najlepsie skompiloval. Tak to moze rovno robit v asembleri.

- vyhnime sa extremom.
Ked som prechadzal z asm do c ( bolo to este pre x51 ) este v dobe, ked clovek setril miestom tak som si poctivo presiel preklad vtedy pouziteho kompilatora. A musim povedat, ze aj ked som si myslel ze v asm pre x51 uz viem vsetko, az studiom prekladov som prisiel na dalsie ficurky.
Neviem ci sme sa pochopili, nenabadam aby teraz clovek kazdy preklad kontroloval, ale urcite sa poznanie "ako to tvorcovia" kompilatoru mysleli zide pri pisani v C.
V extremnom pripade sa da dostat az na 120% velkosti kodu ( porovnanim vysledku asm a C ).
Ale ako som uz spomenul hore, mne sa v jednom pripade podarilo v C napisat kratsi kod ako bol povodny v asm.
xmilos
Obrázok používateľa
Ultimate člen
Ultimate člen
Príspevky: 3662
Založený: 04.05.2011
Bydlisko: Povazie
Karma: 14

Re: programovanie v c

Odoslaťod OM0XA » 30 Sep 2016, 07:50

BgDestroy napísal:OM0XA:

https://www.raspberrypi.org/products/pi-zero/
Rozmery RpiZero: 65mm x 31mm x 5mm Mi pride ako velmi komfortne rozmery ked tam mas absolutne vsetko.

Povedz mi dovody preco sa RPi Zero neoplati a radsej ist do AVR? Ja v tom vidim drvivu prevahu vyhod:
Vyhody:
[*] Vinikajuca cena: 4libry pradicka. postovne skoro ako u nas tiez 4 libry,
[*] Rozmery: konecne u tejto variaty RPi vinikajuce rozmery 65mm x 31mm x 5mm
[*] Operacna pamat: 512MB (system spapa par MB zbytok je tvoj). Pouzivam Raspian Lite (terminalovy os)
[*] Vypoctovy vykon: zalozeni na 32bit BCM2835. Vykon sa neda zrovnavat s AVR
[*] Ukladanie: vsetko je vecou pamatovej karty ziadne obmedzenie na par kB FLASH. Si vezmi ze si tam robis merania a ukladas si merania v case atd.
[*] Velmi jednoduche pripojenie na internet, coz otvara dalsie moznosti vyuziti
ATD

Za 4 libry taketo uz hotove zariadenie a riesis uz len v podstate len nejake to periferium co k nemu pripojis s takymi malymi rozmerami ... Pomer cena/vykon absolutne bezkonkurencny oproti 8bitovych s obmedzenymi instrukciami AVR mikrokontrolermi. Kde este musis k tomu pricitat cenu krystala, 3x kondenzator, 1rezitor coz navysi rozmery a mas hned podobne rozmery ako RPi Zero.


Jedina vec, kedy je vhodna AVR su zariadenia napajane na baterkou. A inak nie.


vo vsetkom mas pravdu, so vsetkym suhlasim. Ako vravim, robim aj s raspberry, ale skor take aplikacie, kde vyuzivam vzdialeny pristup na zariadenie cez internet, alebo databazy, alebo nieco take co AVR nezvladne. Co zvladne AVR, robim na AVR. Asi aj preto, ze AVRka mam rad a je na nich velmi dobra podpora. Je to aj otazka sympatii... :-)
OM0XA
Stály člen
Stály člen
Príspevky: 229
Založený: 03.10.2012
Bydlisko: Poprad
Karma: 2

Re: programovanie v c

Odoslaťod BgDestroy » 30 Sep 2016, 16:16

Inac ked sa teraz nad tym zamyslim, nebolo by zle keby sa tu na stranke ukazal kvalitny serial s pracou AVR aj Rpi napriklad. Myslim ze by to dost ludom pomohlo.
Albert Einstein:
* Dôležitá vec je neprestať sa pýtať.
* Len dve veci sú nekonečné - vesmír a ľudská hlúposť. Ale tou prvou si nie som istý.
* Nie je dôležité, čo si dokázal v škole, ale to, čo dokážeš v živote.
BgDestroy
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 601
Vek: 32.6
Založený: 17.07.2006
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Karma: 2

Re: programovanie v c

Odoslaťod martin knocik » 30 Sep 2016, 17:34

BgDestroy: Ak začneš brať do úvahy napríklad spolahlivosť a testovanie chýb hotového zariadenia, tak
koľko chýb bude obsahovať program ktorý bude riešiť relatívne jednoduchú vec na RPi a koĺko chýb na AVR ? Prečo zbytočne komplikovať jednoduché úlohy použitím zložitého procesora ?

BCM2835 nemá napríklad ADC. je vela úloh kde nepotrebuješ operačný systém (ani jednoduchý/realtimový/ minimalistický).

Od určitej veľkosti kódu sa človek vykašle na rýchlosť a šetrenie bajtov v pamati a začne sa orientovať na prehľadnosť a blbuvzdornosť kódu (radšej používam makrá a funkcie, vnorené funkcie na prístup ku kritickým premenným ako priamy prístup k premenným a potom hladať kde čo som omylom v kóde zmenil). Od 100 riadkov a vyše sa assemblerovskom kóde sa zorientuje len autista.

Len tak na okraj pre všetkých optimalizátorov, systém ktorý využíva procesor na viac ako 70% nie je považovaný za bezpečný.
http://mkbci.com

FEL UNIZA 2015, Ing.

ľudstvo je vírus ktorý napadol Zem

nerobme si ťažkú hlavu z debilov čo nám ani po členky nesiahajú, buďme radi že my dačo dokážeme a smejme sa im akí sú sprostí
martin knocik
Ultimate člen
Ultimate člen
Príspevky: 1506
Vek: 28.57
Založený: 23.01.2008
Bydlisko: Trenčianska Turná
Karma: 7

Re: programovanie v c

Odoslaťod BgDestroy » 30 Sep 2016, 17:46

To chces povedat ze ako Rpi sa pomyli ked mu napriklad v programe nastavis napriklad na GPIO 2 logicku 1 ? Spolahlivost bude ta ista.

Nie nema nemoze mat vsetko za tu malinku cenu. Ale neni problem na to napojit externy prevodnik a mozes si vybrat aky chces. Ako uznam na niektore ucely je AVR dobre. Ale na to co ponuka pytat 5.5 eura je moc. Teda nie ale ked to porovnas s konkurenciou tak ano.
Albert Einstein:
* Dôležitá vec je neprestať sa pýtať.
* Len dve veci sú nekonečné - vesmír a ľudská hlúposť. Ale tou prvou si nie som istý.
* Nie je dôležité, čo si dokázal v škole, ale to, čo dokážeš v živote.
BgDestroy
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 601
Vek: 32.6
Založený: 17.07.2006
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Karma: 2

Re: programovanie v c

Odoslaťod tulen123 » 15 Jan 2017, 13:10

Snažil som sa vyriešiť jednu cvičnú úlohu ale kompilátor mi to nechce preložiť. Neviete kde robím chybu?
Program by mal vytvoriť pole do ktorého nahádže čísla od 1 do 10 a potom pomocou funkcie "najvecie" napísať do "d" najväčšie z nich.
Prílohy
c.png
tulen123
Obrázok používateľa
Okoloidúci
Okoloidúci
Príspevky: 48
Založený: 08.01.2015
Karma: 0

Re: programovanie v c

Odoslaťod NySher » 15 Jan 2017, 14:29

Musíš dať najvecie(pole, &d); bez & alebo najvecie(&pole[0], &d); ... Premenná "pole" už je v podstate pointer na prvý prvok v poli...
:)
NySher
Pokročilý člen
Pokročilý člen
Príspevky: 566
Vek: 26.17
Založený: 25.08.2009
Bydlisko: ZH / ZA
Karma: 2

Re: programovanie v c

Odoslaťod tulen123 » 15 Jan 2017, 16:54

Ďakujem
tulen123
Obrázok používateľa
Okoloidúci
Okoloidúci
Príspevky: 48
Založený: 08.01.2015
Karma: 0

Re: programovanie v c

Odoslaťod Dumitru » 22 Sep 2017, 12:50

Dobrý deň nemá niekto náhodou doma tuto knihu. http://www.martinus.cz/?uItem=1489

Vopred vďaka.
Dumitru
Stály člen
Stály člen
Príspevky: 331
Založený: 06.11.2011
Karma: 0

Re: programovanie v c

Odoslaťod zen » 22 Sep 2017, 13:23

Knihu zial nemam,.. Pred 15 lety som cosi take programoval a vse zmazal, ked som nasel

https://processing.org/reference/

Mozno alternativa?
Samozřejmě, že dědeček nemá kapesní hodinky poháněné elektřinou. Takový nesmysl si může vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
zen
Obrázok používateľa
Stály člen
Stály člen
Príspevky: 388
Založený: 22.11.2013
Bydlisko: Cadca
Karma: 6

Re: programovanie v c

Odoslaťod Dumitru » 22 Sep 2017, 13:33

Áno určite super vďaka budem čerpať aj odtiaľ určite!!! :agree: ale dotaz je stále aktuálny.
Dumitru
Stály člen
Stály člen
Príspevky: 331
Založený: 06.11.2011
Karma: 0

Re: programovanie v c

Odoslaťod Dumitru » 04 Okt 2017, 15:58

postupným štúdiom kreslenia grafických primitívov napríklad pomocou bresenhamovych algoritmov, nastala otázka ako ovládať jednotlive pixeli v C teda nejakou funkciou či už si ju napíšem sam alebo bude hotová, vedieť rozsvietiť pixel meniť jeho farbu ... teda aby som dosiahol že bresenhamovym algoritmom aj reálne niečo nakreslím, nakoľko C nemá nato nástroje musí spolupracovať s nejakými Drivermi pre danú grafickú kartu, otázka pre jazyk C je potrebne :

1.napísať vlastný Driver? videl som príklady napísane v assembleri.

2.existujú už hotové drivery nato? , možno som zle hľadal ale pre C som nič nenašiel , jedine čo som našiel BGI ale to je pre Borland udajne sa použivaju v OpenGl a SDL neoveroval som to ale. Určite je použití v knižnici graphics.h

3. samotný windows alebo linux predsa ma už hotové Drivery pre prácu s grafikou je možne použivať rovno tie ? ak hej tak ako

za odpovede ďakujem :)
Dumitru
Stály člen
Stály člen
Príspevky: 331
Založený: 06.11.2011
Karma: 0

Re: programovanie v c

Odoslaťod maskrtnik01 » 04 Okt 2017, 16:16

GDI+?
maskrtnik01
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1329
Vek: 22.83
Založený: 20.07.2010
Bydlisko: okolie KE
Karma: 6

Re: programovanie v c

Odoslaťod juraj77 » 04 Okt 2017, 16:18

Aj ked ti neodpoviem priamo na tvoju otázku, napadlo ma že pre jazyk C sa vydala kniha "počítačová grafika a jazyk C" od Branislav Sobota 1995
Čítal si ju ?
Mám ju doma, avšak musel by si ponúknuť zaujímavú cenu ....
" Bez vody si viem predstaviť život, ale bez internetu a počítača nie.."
juraj77
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1485
Vek: 39.81
Založený: 23.09.2012
Bydlisko: Nitra
Paragraf: 22
Karma: 10

Re: programovanie v c

Odoslaťod Dumitru » 04 Okt 2017, 16:26

ohladom knihy ,...nie nevedel som ju zohnať , stanov si cenu, ja neviem čo je zaujímave na martinuse stala 8€ tak ja neviem 20€?

GDI+ nie je rovno knižnica ako OpenGl alebo SDL ?
Dumitru
Stály člen
Stály člen
Príspevky: 331
Založený: 06.11.2011
Karma: 0

Re: programovanie v c

Odoslaťod peterple » 04 Okt 2017, 17:57

Na čo knihy. Internet poznáš? To ti je vec.
windows:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145078(v=vs.85).aspx

Stačilo vyhľadať
windows api draw pixel

V žiadnej knihe to nebude čerstvé a s milónom príkladov ako to použiť.
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
peterple
Ultimate člen
Ultimate člen
Príspevky: 1898
Vek: 52.81
Založený: 25.06.2013
Bydlisko: Krajné
Karma: 52

PredchádzajúcaĎalšia

Naspäť na C,C++,C#

Kto je prítomný

Užívatelia prezerajúci si toto fórum: Žiadny registrovaný používateľ a 1 hosť.

Forums ©
Autor stránky je Ondrej Závodský(zawin), o graficky design sa stará Ľuboš Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
Čas potrebný k spracovaniu stránky 0.84 sekúnd