programovanie v c

C,C++,C#

Moderátori: psichac, Moderátori

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa 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.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
BgDestroy
Pokročilý člen
Pokročilý člen
Príspevky: 603
Dátum registrácie: 17 Júl 2006, 00:00
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Vek: 37

Re: programovanie v c

Príspevok od používateľa 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
0
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.

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

Re: programovanie v c

Príspevok od používateľa 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.
0

Používateľov profilový obrázok
BgDestroy
Pokročilý člen
Pokročilý člen
Príspevky: 603
Dátum registrácie: 17 Júl 2006, 00:00
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Vek: 37

Re: programovanie v c

Príspevok od používateľa 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.
0
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.

Používateľov profilový obrázok
xmilos
Ultimate člen
Ultimate člen
Príspevky: 3671
Dátum registrácie: 04 Máj 2011, 00:00
Bydlisko: Povazie

Re: programovanie v c

Príspevok od používateľa 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.
0

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

Re: programovanie v c

Príspevok od používateľa 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... :-)
0

Používateľov profilový obrázok
BgDestroy
Pokročilý člen
Pokročilý člen
Príspevky: 603
Dátum registrácie: 17 Júl 2006, 00:00
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Vek: 37

Re: programovanie v c

Príspevok od používateľa 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.
0
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.

martin knocik
Ultimate člen
Ultimate člen
Príspevky: 1639
Dátum registrácie: 23 Jan 2008, 00:00
Bydlisko: Trenčianska Turná
Vek: 33
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa 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ý.
0
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í

Používateľov profilový obrázok
BgDestroy
Pokročilý člen
Pokročilý člen
Príspevky: 603
Dátum registrácie: 17 Júl 2006, 00:00
Bydlisko: Bazar Enabled, Udaje sa dozvie pri kupe s danym clovekom
Vek: 37

Re: programovanie v c

Príspevok od používateľa 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.
0
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.

Používateľov profilový obrázok
tulen123
Okoloidúci
Okoloidúci
Príspevky: 48
Dátum registrácie: 08 Jan 2015, 17:13

Re: programovanie v c

Príspevok od používateľa tulen123 » 15 Jan 2017, 12: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
0

NySher
Pokročilý člen
Pokročilý člen
Príspevky: 566
Dátum registrácie: 25 Aug 2009, 00:00
Bydlisko: ZH / ZA
Vek: 30

Re: programovanie v c

Príspevok od používateľa NySher » 15 Jan 2017, 13:29

Musíš dať najvecie(pole, &d); bez & alebo najvecie(&pole[0], &d); ... Premenná "pole" už je v podstate pointer na prvý prvok v poli...
0
:)

Používateľov profilový obrázok
tulen123
Okoloidúci
Okoloidúci
Príspevky: 48
Dátum registrácie: 08 Jan 2015, 17:13

Re: programovanie v c

Príspevok od používateľa tulen123 » 15 Jan 2017, 15:54

Ďakujem
0

Dumitru
Stály člen
Stály člen
Príspevky: 377
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: programovanie v c

Príspevok od používateľa Dumitru » 22 Sep 2017, 12:50

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

Vopred vďaka.
0

Používateľov profilový obrázok
zen
Stály člen
Stály člen
Príspevky: 484
Dátum registrácie: 22 Nov 2013, 14:33
Bydlisko: Cadca

Re: programovanie v c

Príspevok od používateľa 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?
0
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)

Dumitru
Stály člen
Stály člen
Príspevky: 377
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: programovanie v c

Príspevok od používateľa 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.
0

Dumitru
Stály člen
Stály člen
Príspevky: 377
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: programovanie v c

Príspevok od používateľa 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 :)
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2568
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: programovanie v c

Príspevok od používateľa maskrtnik01 » 04 Okt 2017, 16:16

GDI+?
0

Používateľov profilový obrázok
juraj77
Ultimate člen
Ultimate člen
Príspevky: 1538
Dátum registrácie: 23 Sep 2012, 22:39
Bydlisko: Nitra
Vek: 44

Re: programovanie v c

Príspevok od používateľa 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 ....
0
" Bez vody si viem predstaviť život, ale bez internetu a počítača nie.."

Dumitru
Stály člen
Stály člen
Príspevky: 377
Dátum registrácie: 06 Nov 2011, 22:19
Vek: 32

Re: programovanie v c

Príspevok od používateľa 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 ?
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: programovanie v c

Príspevok od používateľa peterple » 04 Okt 2017, 17:57

Na čo knihy. Internet poznáš? To ti je vec.
windows:
https://msdn.microsoft.com/en-us/librar ... s.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ť.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok