Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
sodjan
EF Sponsor
Inlägg: 43288
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av sodjan »

> Så det du vet om programmering inom c++ är inte direkt applicerbart då microprocessorerna inte är tänkta för detta.

Man skulle lika gärna kunna skriva :

"Så det du vet om programmering är inte direkt applicerbart på microprocessorerna..."

Att byta från att programmera PC (eller störe system) till mikrokontrollers är ett
större steg än att byta språk. För den som förstår "programmering" så ska inte
ett byte av språk vara någon större fråga generellt sett.

Att ta med sig ett språk bara för att man kan det inbjuder också gärna till att
man även tar med sig programmerings *vanor* som inte är aktuella (eller
kanske direkt felaktiga) på mikroprocessorer.
Nerre
Inlägg: 27403
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av Nerre »

Ja grejen är ju att skriver man för en mikrocontroller så finns det i princip inga befintliga funktioner. När du programmerar i C på en PC så använder du antagligen en handfull olika libbar (stdc åtminstone). Men med en mikrocontroller måste du ju skriva alla "drivrutiner" själv, du kommunicerar direkt med hårdvaran.

Dessutom är minnet begränsat, man måste skriva kompakta program. Och objektorienterad programmering kräver rätt mycket minne. På en mikrocontroller måste man ofta t.o.m. vara snål med antalet variabler, att då slösa en massa overhead för att få objektorientering är inte så bra.
Användarvisningsbild
jesse
Inlägg: 9241
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av jesse »

jag kunde bara BASIC och Z80 assembler från gymnasiet, när jag för drygt ett år sedan valde att satsa på att lära mig ett mer gångbart språk. Efter lite funderande valde jag Java! :doh:

Efter att ha insett att jag gått in i en återvändsgränd där, så var jag tvungen att börja med C eller C++. Eftersom jag ville programmera både microprocessorer och PC med högnivåspråk så lärde jag mig i princip båda språken parallellt - och jag får säga att de skiljer sig inte mycket åt. Det är få detaljer som skiljer, dessutom har de båda språken blivit mer lika varandra med tiden, då C har utvecklats.

Den stora skillnaden är just objektorienteringen, som får göras med andra metoder, som blir lite rörigare i C. Du kan t.ex. glömma klasser och därmed allting kring detta så som klassmetoder och subklasser osv... Det är annars ett litet steg att byta till C.

Det stora steget för dig är att lära dig processorns arkitektur och funktion, samt gärna också assemblerprogrammering, vilket är grunden för att kunna förstå sig på program för µC, En bok på mycket grundläggande nivå, men en extremt bra start är (hur många gånger har jag skrivit det förut, jag tror jag börjar bli tjatig ??? ) Per Foyer: Mikroprocessorteknik. Inledningsvis beskrivs den moderna mikroprocessorn (egentligen mikrokontrollern) allmänt, sedan ägnas resten av boken specifikt åt AVR och enbart assembler. Han går igenom de flesta funktioner i processorn som är nödvändiga att känna till.

Att PIC skulle vara enklare att lära sig än AVR tror jag inte på. Det är nog likvärdigt. Den fullständiga programmeringsmiljön för AVR (med tillhörande AVR-specifika bibliotek i C) får du gratis i ett enda paket (eller två kanske det är) via Atmels hemsida i form av WinAVR och AVRStudio 4. Med dessa, och en programmerare (eller utvecklingskort av något slag) och du är igång. För mig som total nybörjare var det busenkelt att komma igång med det och Per Foyers bok.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47701
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av TomasL »

Ni har fel allihopa.
C# finns porterat till ett antal microkontrollers, bl.a. ARM7, Cortex M3, ARM9 och ADI BlackFin.
Finns att hämta hem kostnadsfritt fån Microsoft (SDK och Porting-kit).
http://www.microsoft.com/netmf/default.mspx

Det går att skriva lika kompakta program med C++ som med C, om man vill (och kan).

Idealet vore naturligtvis en C+ Kompilator, med fördelarna från C++ infogat i C.

Men oavsett vilken väg man tar, så är mikrokontrollers en mycket hårdvarunära programmering, och man måste kunna hårdvaran utantill, både framlänges och baklänges, samt även Assemblern för hårdvaran (man kommer alltid till det faktum att man måste skriva vissa rutiner i Assembler).
Personligen föredrar jag PICar, då supporten, alla appnotes, datablad samt utvecklingsmiljön är mycket bra.
Dessutom är PIC32 en riktigt rolig leksak.
GFEF
Inlägg: 2383
Blev medlem: 4 december 2004, 18:44:04

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av GFEF »

jesse

>tvungen att börja med C eller C++.

>jag får säga att de skiljer sig inte mycket åt.

Enligt standar ÄR C en del av C++.
Ett korrekt bra skrivet C program skall var ett korrekt C++ program också.

http://www2.research.att.com/~bs/bs_faq ... -is-subset
sodjan
EF Sponsor
Inlägg: 43288
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av sodjan »

> C# finns porterat till ett antal microkontrollers, bl.a. ARM7, Cortex M3, ARM9 och ADI BlackFin.

OK, right, det kanske handlar lite om definitionen på "mikrokontrollers" också.
Jag tror att det som avses och menades i *den här* tråden (och det är naturligstvis
det som de svar avser som du anser är "fel") är "vanliga" 8-bitars AVR och/eller PIC.

> Ni har fel allihopa.

Nej, det tror jag inte. Det är du som talar om något annat än det tråden handlar om.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47701
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av TomasL »

Sodjan, gör jag?
Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)
AVR finns väl med ARM-kärna, på samma sätt som PIC med MIPS-kärna, vad jag vet så är väl en MIPS-PIC dvs PIC32 en mikrokontroller, på samma sätt som AVR-Cortex (eller vad de heter) är en också är en microkontroller.
Dessutom är det väl inget som hindrar att man porterar .net till en 8-bitars processor i princip.
sodjan
EF Sponsor
Inlägg: 43288
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av sodjan »

Jo, ja. Men man måste ju sätta det hela i sitt rätta kontext.
Det finns inget som tyder på att det var 16 eller 32 bitars processorer det hela handlade om.
De tidigare avgivna svaren i tråden är med största sannolikhet helt i linje med vad "nybörjaren"
avsåg från början. I annat fall så får väl drschwarzenegger återkomma och förtydliga lite. Men
innan dess så kan vi nog vara ganska säkra på att det är de vanliga 8-bitars AVR och PIC som gäller.

> Dessutom är det väl inget som hindrar att man porterar .net till en 8-bitars processor i princip.

Knappast en "nybörjarfråga". Och vem är "man" ?
Och att ta upp hypotetiska frågor kring vad "man" eventuellt skulle kunna
göra "i princip" hjälper knappast en nybörjare i det här läget. Rör inte till det... :-)
Senast redigerad av sodjan 20 mars 2010, 20:58:27, redigerad totalt 1 gång.
Användarvisningsbild
jadler
EF Sponsor
Inlägg: 407
Blev medlem: 28 maj 2009, 12:03:43
Ort: Vidja, Huddinge, Stockholm
Kontakt:

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av jadler »

Jag har nära nog ingen erfarenhet av PIC, så jag kan bara uttala mig om Atmels AVR. Jag har använt Arduino-plattformen sedan ett år ungefär, och även "ren" AVR både på Arduino-hårdvara och på egna byggen.

Vad gäller C++ på AVR tror jag att det beskrivs ganska väl på libc-avr-sidorna -- i princip skall det väl gå, men det finns inget stöd för libstdc++ så man får klara sig utan dessa funktioner. Om du väljer att programmera AVR rekommenderar jag absolut att du läser mer på libc-avr-sidorna, deras FAQ är i princip obligatorisk läsning men det finns mycket annat matnyttigt också.

Arduino-paketet bygger på C++, jag är inte van vid C++ så jag vet inte hur mycket av den funktionaliteten som finns med där.

Som GFEF skrev är ju C++ ett "superset" av C, så så länge du skippar de C++-specifika delarna lär dina kunskaper fungera bra även för C-programmering.

Jag nämner avr-libc ovan, den fria kompilatorn gcc som har stöd för bl.a. AVR använder avr-libc och de AVR-specifika delarna står bäst beskrivna just under libc-avr. Andra har nämnt Win-gcc (eller vad den heter) som helt enkelt är gcc för AVR portad till Windows. Är du en av de stackare som inte har övergivit M$ Windoze än så är det ändå gcc som gäller, och informationen om libc-avr är lika relevant.

Väljer du AVR finns massor av exempel i form av Application NotesAtmels hemsida. Väljer du Arduino finns hur mycket hjälp som helst att få på deras hemsida och på många andra platser på nätet. (Använd Google...)
sodjan
EF Sponsor
Inlägg: 43288
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfrågor typ (om PIC, AVR och programmeringspråk)

Inlägg av sodjan »

> Som GFEF skrev är ju C++ ett "superset" av C, så så länge du skippar de C++-specifika delarna...

Men, vad är då poängen med att fråga "kan man programmera <whatever> i C++ ?" ?
Programmerar man ens i C++ om man bara skriver "vanlig" C-kod ? Som i och för sig
körs genom en C++ kompilator, men i alla fall ?
Skriv svar