Sida 9 av 13
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 16:46:42
av jesse
absolut... omröstning!
Synd att de inte hade samma kodexempel i alla stilar... det blir inte direkt lätt att jämföra läsbarhet då.
Så någon (no no, inte jag!) borde skriva ett mycket kort program och sedan göra ett antal likadana kopior med olika stil, så kan vi rösta ...
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 16:49:34
av Icecap
Jag kör hårt med Whitesmiths style och en omröstning är ung. som att rösta på vad som smakar bäst: kaffe, te, choklad. Det är mig totalt likgiltigt vad ni andra röstar, jag gillar ÄNDÅ vad jag gillar varför en omröstning är total onödig.
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 16:56:52
av jesse
Självklart är den onödig! Det är bara för nöjet att få rösta, bråka med de andra om hur de röstade fel osv... dev. ren underhållning.

ungefär på samma nivå som
detta.
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 17:00:27
av SvenW
Lite mer än ren underhållning. Ett klart utslag kanske frälser människor från att trilla ner i Whitesmiths-stilen

Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 17:06:06
av jesse
haha
Jag tror jag ligger närmast K&R style.
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 17:10:08
av baron3d
Ett stort JAtill K&R style, men usch och fy till Whitesmiths och GNU.
Whitesmiths style och GNU style borde förbjudas enligt lag!
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 19:58:55
av E85
Jag kör med Allman style eftersom jag vant mig vid det i Visual Studio och tycker det ser bäst ut.
Re: Jesses följetång om AVR programmering i C...
Postat: 3 januari 2010, 21:49:24
av jesse
Nåja... ska vi fortsätta tjata om stilar får det bli en ny tråd. Nu mer om C...
Det är svårt att simulera program som innehåller test av flaggor som inte stöds av simulatorn och med fördröjningar överallt som gör att simuleringen tar flera minuter... så jag har lagt in följande i början av programmet:
Kod: Markera allt
#define simulator 1
#ifdef simulator
#define delay_ms
#define delay_us
#define timerTest 1
#define TIMER_PRESCALER 0b010
#else
#define delay_ms _delay_ms
#define delay_us _delay_us
#define timerTest (TIFR & (1 << OCF0A))
#define TIMER_PRESCALER 0b100
#endif
När jag ska programmera kretsen så sätter jag bara // framför första raden så går programmet som önskat.
Re: Jesses följetång om AVR programmering i C...
Postat: 11 januari 2010, 20:24:35
av jesse
Intressanta upptäckter kring optimering av kod
Tog mitt mest komplexa program, tog bort alla "delay" och körde det med olika optimeringar. Trodde att det skulle gå fortare att köra koden i processorn om den var optimerad, men för det mesta blev det tvärt om: optimeringen påverkade bara kodstorleken positivt:
Kod: Markera allt
Optimering kod körtid
-O0 9020 65.85mS
-O1 7142 58.93mS
-O2 6654 257.53mS
-O3 14352 253.87mS
-Os 6188 255.12mS
Det går väldigt långsamt när optimerigen är påslagen. Os tar mer än 4 gånger så lång tid att köra än -O1
Nu är det inte den perfekta koden att testa på, då UART:en tar en fix tid att sända. Jag skickar ca 80 tecken, vilket borde ta 47 mS - alltså den mesta tiden i ooptimerad kod. Resten av programmet manipulerar en himla massa data ... Vad sjutton den sysslar med när den är optimerad som tar sån tid ska jag försöka ta reda på...
Re: Jesses följetång om AVR programmering i C...
Postat: 11 januari 2010, 20:31:54
av bearing
Måste vara någon bugg i de senare optimeringarna. Minns att jag läst någonstans att avr-gcc-optimeringen över en viss nivå har buggar.
Re: Jesses följetång om AVR programmering i C...
Postat: 11 januari 2010, 21:46:37
av jesse
Verkar vara något fel på simulatorn. Den ger toklånga tider
första gången man kör den efter att ha kompilerat om (fast bara ibland

). Nästa gång blir det mer normala tider. Så min statistik ovan var alltså felaktig. Dock stämmer ju kodstorleken. -O3 gör om alla "enkla" funktioner till kodsnuttar istället - och mitt program består nästan bara av massor av små funktioner... därför sväller koden.
Re: Jesses följetång om AVR programmering i C...
Postat: 12 januari 2010, 09:21:42
av bearing
Bra att höra. Kan ju hända att den som skrev om buggarna själv gjorde samma misstag, eller helt enkelt hade kodat fel (utan volatile där det behövs, o.s.v.).
Varför tar det lång tid? någon loop som går runt?
Re: Jesses följetång om AVR programmering i C...
Postat: 12 januari 2010, 10:21:58
av jesse
Eftersom det var svårt att upprepa det hela så tröttnade jag på att försöka kolla orsaken. Jag nöjer mig med att tiderna blev "normala" när simulatorn väl fungerade som den skulle.
Re: Jesses följetång om AVR programmering i C...
Postat: 12 januari 2010, 14:05:59
av SvenW
Vilken simulator använder du? Hur mäter du tiderna?
Re: Jesses följetång om AVR programmering i C...
Postat: 12 januari 2010, 14:22:36
av jesse
AVR Studio4.16 med "AVR simulator 1, 0, 2, 1". Det finns en "AVR simulator 2" också, men den är ännu sämre i vissa lägen (saknar vissa funktioner). Det var en allvarlig bugg i AVR Studio 4.17 så jag behöll 4.16. Men jag har hört att det har kommit en 4.18, orkar bara inte krångla med att avinstallera / installera igen.