Article View: be.science.electronics
Article #168Re: PICs en draadloze verbindingen
From: Nico Coesel
Date: Thu, 11 Sep 2008 17:35
Date: Thu, 11 Sep 2008 17:35
144 lines
7615 bytes
7615 bytes
Martijn van Buul <pino@dohd.org> wrote: >Nico Coesel (nico@puntnl.niks) schreef: >> Martijn van Buul <pino@dohd.org> wrote: >> >>>Nico Coesel (nico@puntnl.niks) schreef: >>> >>>[ grote knip ] >>> >>>Tot hier was ik het roerend met je eens, maar: >>> >>>> Als je begint met een platform waarop je goed in C kunt programmeren (dus >>>> niet de PIC, 8051 of AVR), >>> >>>Een AVR valt fantastisch in C te programmeren. Een 8051 in zekere zin >>>ook, maar die wil je om andere redenen niet meer. >> >> Maak eens een programma waarin je met strcpy en strcat een constante >> en niet constante character array naar een niet constant character >> array wilt kopieren. Dat gaat niet op een harvard architectuur zonder >> bijzondere (trage) pointer acrobatiek omdat de processor aan de >> pointer zelf niet kan zien in welke geheugen de data moet worden >> opgehaald/weggeschreven. > >So? Het is wat minder handig, inderdaad, maar >*juist omdat je in C programmeert* heb je er helemaal geen last van, omdat >de compiler dit soort details voor je oplost. Maar wel ten koste van performance en tegenwoordig koop je voor hetzelfde geld een veel snellere en betere microcontroller die al die truukerij niet nodig heeft. Waarom zou je nog met paard en wagen op weg gaan als je voor hetzelfde of minder geld een auto hebt? >>>[knip] >>> >>>> En tegenwoordig zijn er voor veel platforms (ARM, MIPS, MSP430, H8) >>>> uitstekende GCC compilers beschikbaar voor niets. >>> >>>Gcc? Uitstekend? Laat me niet lachen. Gcc is een vrij slechte compiler. Het >>>*werkt* voor veel targets, maar daar is het dan ook mee gezegd. Performance is >>>(op alle targets!) vrij bedroevend. De beschikbaarheid van gcc voor een bepaald >>>platform (waaronder AVR, overigens) is geen reden om andere beschikbare >>>C-compilers die vele malen beter presteren (Keil cq Tasking voor de 8051, >>>CodeVision AVR voor de AVR) te negeren. >> >> Met de 8051 en de AVR noem je 2 specifieke 8 bit platforms waarbij de >> 8051 nog eens zo krom is als een hoepel (been there, done that). > >Ik pak de 2 platformen die jij eerder al aan de kant had geschoven omdat je >ze niet in C zou kunnen programmeren. Wat baarlijke onzin is. Het kan wel, maar je doet jezelf tekort en je loopt een keer tegen de grens aan en dan zeg je 'had ik maar...'. Been there, done that -hier spreekt ervaring-. Probeer eens functie pointers op een 8051. De Keil 8051 compiler ondersteund dat alleen met constante functie pointers. En zo zijn er nog wel meer dingen die je als je begint niet kunt overzien, maar waar je wel flink last kunt krijgen. Vandaar mijn advies om niet met 8051, PIC of AVR te beginnen ook al lijkt de DIL behuizing zo aantrekkelijk. Dat zijn valkuilen die je uiteindelijk flink veel tijd gaan kosten. >En geloof me, ik ken de 8051. Heb jarenlang op de 8-bit microcontroller >sales support van een bepaalde voormalige gloeilampenfabrikant in het >zuiden des lands gewerkt. Je mag drie keer raden welke CPU. Wie heeft er niet met de 8051 gewerkt, maar wat mij betreft mag het ding begraven worden. >> Maar voor 32 bit platforms presteert de GCC compiler zeer goed. > >*proest*. > >>>Gcc is *zo* brak, dat een alle-remmen-los release build van gcc, met maximale >>>optimalisaties, vaak *langzamer* is dan een debug build van msvc. Om maar >>>eens een zijstraat te noemen. En dat is dan op een mainstream platform als >>>32-bits x86. >> >> Dat lijkt me erg sterk. Dit soort stellingen komen meestal van mensen >> die van de ene compiler wel goed weten hoe die werkt en van de andere >> compiler totaal niet. > >En toch zie ik het keer op keer. Inmiddels weet ik hoe ik mijn C zo moet >schrijven dat zelfs het stomste kindje uit de klas (Wist je overigens dat >GCC een afkorting is? Staat voor GCC Can't Compile) het een beetje snapt. Ik dacht dat GCC stond voor Gnu compiler collection, maar weer wat geleerd. >En zelfs dan. GCC is stom. En het ergste is nog dat het er van uitgaat >dat ik *OOK* stom ben. En dat is maar goed ook. Ook de gevorderde programmeur maakt stomme fouten. >> 1 ding weet ik zeker: er zit veel meer tijd en energie in GCC dan in iedere >> andere compiler. > >Veel meer tijd ja - waaronder heel veel verprutste tijd. Tijd verprutst aan >het toevoegen van zinloze warnings omdat er zoetwaterprogrammeurs zijn die >te stom zijn om te weten dat && boven || gaat. Ik noem dat handig want dergelijke programmeurs komen bij bosjes van school. Programmeer maar lekker simpel want dan kan iemand anders het project later nog van je overnemen. >> Als GCC veel slechter presteert dan een commerciele compiler dan doe je of >> iets heel erg fout of je hebt heel erg veel geld betaald voor de commerciele >> compiler. > >Of de commerciele compiler is voor een specifieke architectuur geschreven, ipv >voor zoveel mogelijk achitecturen tegelijkertijd. Dan snap je de opzet van GCC niet. Iedere architectuur heeft juist zijn eigen back-end met specifieke optimalisaties. Een GCC versie heeft altijd nog wel een dozijn platform specifieke opties. Alleen de voorkant is hetzelfde. Wel zo prettig als je code wilt porteren van de ene naar de andere compiler. Dan kom je erachter dat C niet altijd C is. >Intel's icc bestaat niet voor niets, bijvoorbeeld. > >Als je dat fundamentele verschil weigert te accepteren, vraag ik me af wie >er nou degene is die oogkleppen op heeft. Kijk en vergelijk en je ziet dat GCC zich doorgaans in de top van de compilers voor een bepaalde architectuur bevind. >Maar weet je wat de belangrijkste reden is waarom OP misschien beter af is met >een simpele AVR? Heeft helemaal niets met architecturen, C-compilers of wat >dan ook te maken, maar met een hele simpele reden: > >Een Atmel AVR komt in een fijne DIL behuizing, en is gemakkelijk op een stuk >gaatjesbord te solderen. Kom daar maar eens mee, met je 48 pins LQFP "low pin >count" ARM. Of MIPS. Of H8. Zeker zo vriendelijk voor een hobbyist. Eitje en je hebt er geeneens speciaal gereedschap voor nodig (hint: hoe dunner de soldeerbout, hoe lastiger je het voor jezelf maakt). Flux, een schone punt en desoldeerlitze voor de ongelukjes. Bovendien zijn er heel veel kant & klare bordjes tekoop die je zo in je project zet. Kan het nog makkelijker? -- Programmeren in Almere? E-mail naar nico@nctdevpuntnl (punt=.)
Technical Details
Message-ID:
<48c9505a.32853430@news.planet.nl>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!feeder3.cambrium.nl!feed.tweaknews.nl!2001:4de0:1::3.MISMATCH!ramfeed2.eweka.nl!eweka.nl!hq-usenetpeers.eweka.nl!border1.nntp.ams.giganews.com!nntp.giganews.com!newsfeeder.wxs.nl!divide.nova.planet.nl!posting02.nova.planet.nl!not-for-mailReferences:
<48c58ac4$0$2865$ba620e4c@news.skynet.be> <48c6c8b1.855499423@news.planet.nl> <48c6d025$0$2860$ba620e4c@news.skynet.be> <48c6ec14.864558679@news.planet.nl> <slrngceqke.16e7.pino@mud.stack.nl> <48c84ad2.14394508@news.planet.nl> <slrngchsk3.1tnv.pino@mud.stack.nl>Show Full Headers
Complete Article Headers
X-Google-Thread: ff242,8ce267f2294dd70f X-Google-Thread: 1115fc,8ce267f2294dd70f X-Google-Attributes: gidff242,gid1115fc,domainid0,public,usenet X-Google-Language: DUTCH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!feeder3.cambrium.nl!feed.tweaknews.nl!2001:4de0:1::3.MISMATCH!ramfeed2.eweka.nl!eweka.nl!hq-usenetpeers.eweka.nl!border1.nntp.ams.giganews.com!nntp.giganews.com!newsfeeder.wxs.nl!divide.nova.planet.nl!posting02.nova.planet.nl!not-for-mail From: nico@puntnl.niks (Nico Coesel) Newsgroups: be.science.electronics,nl.hobby.elektronica,alt.nl.electronica.zelfbouw Subject: Re: PICs en draadloze verbindingen Date: Thu, 11 Sep 2008 17:35:09 GMT Message-ID: <48c9505a.32853430@news.planet.nl> References: <48c58ac4$0$2865$ba620e4c@news.skynet.be> <48c6c8b1.855499423@news.planet.nl> <48c6d025$0$2860$ba620e4c@news.skynet.be> <48c6ec14.864558679@news.planet.nl> <slrngceqke.16e7.pino@mud.stack.nl> <48c84ad2.14394508@news.planet.nl> <slrngchsk3.1tnv.pino@mud.stack.nl> X-Newsreader: Forte Free Agent 1.21/32.243 Lines: 144 NNTP-Posting-Host: 81.207.51.66 X-Trace: 1221154780 news.kpnplanet.nl 27206 81.207.51.66:2672 X-Complaints-To: abuse@direct-adsl.nl