Nybörjarfrågor i Microprocessor teknik.

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Wodda
Inlägg: 19
Blev medlem: 2 december 2008, 10:23:38
Ort: Ösmo /Södertörn

Nybörjarfrågor i Microprocessor teknik.

Inlägg av Wodda »

Hej på er :)

Är som sagt total nybörjare men har varit sugen på att lära mig detta i flera år.
Nu är det dags och då hoppas jag att jag kan få lite tips om vart jag ska börja.
Läste att man bör ställa frågor med kvalite i så jag ska försöka göra det.

Vilket programmeringsspråk tycker ni att man bör lära sig och varför?

Jag har forskat lite innan och bestämt mig för att det är PIC jag vill jobba med.(vet knappt vad ordet PIC betyder men ändå)

Vart lär man sig alla dessa "grekiska" ord som ni svänger er med :? finns det något bra sätt att plugga på sig baskunskaper i detta eller blir det att lära sig vart eftersom?

Hur skulle ett bra startkit se ut, typ läromedel, labbprylar osv.

Har i grunden Elektriker utbildning(El-tele) men det var typ 20 år sedan. Lödningskunskaperna ska jag ta och fräsha upp.
SvenW
Inlägg: 1157
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

"Vilket programmeringsspråk"
-- c

"det är PIC jag vill jobba med"
--- varför inte AVR, den är lika bra, kanske bättre. Det finns bra fria hjälpmedel i Linuxmiljö.

"bra sätt att plugga på sig baskunskaper"
--- Det finns inga etablerade baskunskaper när det gäller mikroprocessorer. Tekniken utvecklas alltför snabbt. Även om datorns funktionssätt inte i grunden har ändrats på trettio år, så ser den praktiska verkligheten mycket annorlunda ut. Utvecklingen fortskrider.
Har man ingen aning om digitalteknik får man väl fråga sig fram, annars är det bara att sätta igång. Det är idag en barnlek att få igång en fungerande apparat mot hur det var på 1970-talet.

"startkit se ut, typ läromedel, labbprylar"
En PC, en labbplatta, några lysdioder, motstånd, kristaller, kondensatorer och ett litet kraftaggregat/batteri.
Skall man göra något mer avancerat som motorstyrning eller dylikt, så behövs nog även ett oscilloskop och andra standardinstrument.

Och så tillverkarnas datablad. 'PDF-filer'.
Bara att ladda ner och lusläsa.
Nerre
Inlägg: 27361
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Inlägg av Nerre »

Jag vill nog påstå att man i alla fall bör kunna lite assembler när man jobbar med mikrocontrollers. Det är lättare att förstå t.ex. hur avbrottsvaktorer fungerar och så om man har lite koll på det.

Nackdelen med att koda i C är att man lite grann tappar kontrollen, det blir lätt svårare att felsöka.

Man kan koda i C, men bör kunna förstå assembler för att felsöka.


Bra sätt att lära sig baskunskaper är helt klart Mikrodatorns ABC (som är skriven kring ABC80). De går igenom det mesta, förklarar t..o.m. hur mikrokod i processorn fungerar. Dock är den antagligen svår att få tag på.

Fast det beror kanske på vad man anser är "baskunskaper"... jag tycker personligen att det är viktigt att förstå vad som händer "under huven".
JustNeed
Inlägg: 799
Blev medlem: 7 november 2007, 22:07:01
Ort: 08

Inlägg av JustNeed »

Håller med om att man bör börja med ASM. Om man börjar med C eller något annat högrenivåspråk är det lätt att missa hur sakerna egentligen funkar vilket i sin tur gör att man kan fastna med en massa "nybörjarfel".

För PIC finns mycket material samlat på http://www.ict.kth.se/courses/IL131V/kursproght08.htm (Servern verkar inte släppa in mig just nu, så det kanske är borta). De kör dock C, med en kompilator som heter CC5X (Det finns några olika) vilket inte är det allra vanligaste.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Välkommen till forumet Wodda!

Börja med assembler om du vill köra PIC. PIC är annars ett mycket bra val då de har mycket bra datablad.

Assembler för PIC är gratis, en bra C-kompilator kostar pengar, så kan man kort sammanfatta det hela.

Microchip (=de som säljer PIC) har bra programvara (MPLAB) som är helt gratis, de har även en del lösningar på sin hemsida för problem som kan tänkas uppkomma.

Till sist köp en RIKTIG programmerare inte velleman kXXXX den är rena crapet. Wisp648 som säljs av sodjan här på forumet är riktigt bra plus support on demand.
Användarvisningsbild
JimmyAndersson
Inlägg: 26634
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

SvenW:
"varför inte AVR, den är lika bra, kanske bättre."

Det är som att säga att grön är bättre än blå, en hammare bättre än en tång, Volvo bättre än Saab, osv. Det är en smaksak och en vanesak helt enkelt. :)


Orsaken till att jag valde PIC var för att det fanns så många trådar om PIC-programmering och för att Sodjan (som säljer den lysande programmeraren Wisp648) finns här på forumet. Dvs man har nära till hjälp och tips. :)
SvenW
Inlägg: 1157
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

JimmyAndersson:
Jo, men det är ju helt klart att grön är bättre än blå och att en hammare bättre än en tång.

Däremot är nog en Saab bättre än Volvo, eller kanske man ska säga *var*, för de finns väl inte så länge till.

Att jag gillar AVR beror helt på att den fungerar så bra i Linuxmiljö, och det är det enda jag förstår mig på!
Snart kommer man väl att tala i imperfektum även om M$!
Ju förr, dess bättre.
Det är mer än en vanesak. Det är en ideologi.
Användarvisningsbild
Rohan
Inlägg: 1067
Blev medlem: 7 april 2004, 08:24:39
Ort: Eksjö, Småland
Kontakt:

Inlägg av Rohan »

Det finns en bok av Per Foyer som heter Mikroprocessorteknik som kan vara värd att kika på om man vill börja med AVR.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Var tvungen att kolla PIC står för "Programmable Intelligent Computer" detta enligt wikipedia
sodjan
EF Sponsor
Inlägg: 43263
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Men den ursprungliga betydelsen "Programmable Interface Controller"
är nog igentligen bättre och säger mer om vad de användes till från början.
Wodda
Inlägg: 19
Blev medlem: 2 december 2008, 10:23:38
Ort: Ösmo /Södertörn

Inlägg av Wodda »

OK.....tack för tipsen men jag blir än mer förbryllad.
Av vad jag förstår på er så är Assembler själva grunden.
Är det skillnad på Assembly och assembler?

För till assembly enl denna sida så vill dom att man ska ha förkunskaper i C :?
http://www.pellesoft.se/area/articles/a ... ?artid=991

Och om nu assembler var grunden varför då ha förkunskaper i ett högre språk. Det är antagligen något jag inte förstår här.
sodjan
EF Sponsor
Inlägg: 43263
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Av vad jag förstår på er så är Assembler själva grunden.

Ja, det kan man säga. Och alla kompilatorer (t.ex för C) skapar
i sig assemblerkod...

> Är det skillnad på Assembly och assembler?

Nej. Det är engelska resp svenska.

> För till assembly enl denna sida så vill dom att man ska ha förkunskaper i C

Virrig sida som inte har något med PIC att göra. Vad gör du där ?
Skit i den bara...

> Och om nu assembler var grunden varför då ha förkunskaper i ett högre språk.

Kunskaper kring programmering är alltid bättre än inga alls. Dock finns
inga krav på förkunskaper kring just C...
SvenW
Inlägg: 1157
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

Skulle vilja ge min syn på frågan Assembler kontra C, och så hoppas jag att
få kompetterande synpunkter.

Jag vill säga så här: Man skall ha en hum om assemblerspråket men skriva sina program i C.
Att skriva sina program i assembler kräver ryggmärgskunskap om assemblern i fråga,
och det tar tid att öva upp.

I nästa projekt gäller en ny processor med annorlunda assemblerinstruktioner,
man gör misstag som stjäl tid att felsöka och rätta. Assemblerprogrammering blir en tidstjuv.

Assemblerprogrammering är OK för experter som specialiserar sig på lågnivåprogrammering av en viss processor, och ägnar sig åt just detta en stor del av livet.

Det går fortare att skriva i C, och sannolikheten att programmet fungerar är mycket större.
Språket C är också mer stabilt i tiden; man kan byta processor och låta kompilatorn ta hand om detaljerna.
Men man måste ha tillräckligt med assemblerkunskap för att läsa lst-filen, dvs kompilatorns översättning till assembler.

Man behöver kanske lägga 10-20 timmar på att läsa igenom processorns manualer för att veta vilka maskininstruktioner som finns och anpassa sin programmeringsstil efter detta.

Exempel: Dividera med 32.
om man skriver "x = y/32;" är risken stor att man kallar in en generell divisionsalgoritm
som tar hundratals cykler.
Om man däremot skriver "x = y >> 5;" så tar det bara ett par cykler,
men man riskerar att resultatet inte alltid blir vad man förväntar.
Detta kommer man inte på om man inte känner till att processorn har en rot-instruktion.

För att veta hur man ska skriva måste man alltså ha kunskap om vilka instruktioner som finns, men man behöver inte ha dem i ryggmärgen. Det är stor skillnad i lärotid.
Det tar också tid att lära sig C-programmering med alla dess 'libraries', språkets och kompilatorns egenheter, hur optimeringen beter sig, hur man 'debuggar' och 'profilerar'.
Men denna kunskap håller längre än 'assemblern för en specifik processor'.

För övrigt, om man är rädd för tidstjuvar, så bör man ägna sig åt helt andra saker!
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

sodjan:Nu kan jag vara helt ute på tunn is men assembly är väl stunden då man "kör ihop programmet" Typ kompilerar på svenska assembly betyter ju just sätta samman.

assembler heter assembler även på engelska.

Tvärtom vad SvenW skriver så tycker jag att den naturliga gången är assembler sen C.

Ungefär som att bygga taket innan grunden på huset.

Assembler är INTE svårt helt tvärtom MEN det kräver att man har lite översikt av kommandona de är 35 stycken på PIC16 varav de flesta liknar varandra. Hjälp finns också att få här eller på piclist om man undrar.

Visst det kan göra att man gör onödiga instruktioner men då VET du ju iaf att detta tar mycket tid medans du i c skriver en rad som tar flera sekunder och du har ingen aning om vad som händer eller varför det tar sån evinnerlig tid.

Kör du MPLAB så kan du simulera varenda instruktion direkt och kolla i registren vad just denna rad gör. Tankevurpor kommer man aldrig ifrån oavsett språk

Ryggmärgskunskap? Behövs inte då kommandona finns listade dels i kortform och dels i exempelform baki databladet. Var hittar du dessa för c? Jag använder denna lista hela tiden och ser inget fel med det. Med databladet utskrivet eller på skärmen så går det också snabbt.

y/32 är enbart några högershift för mig med assembler ;)
SvenW
Inlägg: 1157
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

"Ungefär som att bygga taket innan grunden på huset"

Alltså, jag föredrar att titta på när betongarbetarna jobbar. Att köra ut 50 ton betong med skottkärra klarar inte min rygg.

Mig passar det bättre att tapetsera :)
Skriv svar