Nybörjare!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Nybörjare!

Inlägg av BJ »

När man programmerar avbrotts-rutiner i assembler
så kan man ju välja själv vad som ska sparas när man
går in i avbrottet. Det kan man inte göra i c, som jag
har förstått det, utan där blir det det som kompilatorn
tycker är bra, och då kan det ta tid i onödan när det körs.
Användarvisningsbild
Glenn
Inlägg: 36736
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Nybörjare!

Inlägg av Glenn »

TomasL skrev:Det beror ju på vad som menas med "tidskritiskt", en bra kompilator skapar lika bra eller bättre maskinkod som den mänskliga hjärnan, i de allra flesta fallen.

Dessutom har ju man full hårdvaruåtkomst, i alla fall i MPLAB-C.

Den enda assemblerkoden vi använder är i en interruptwrapper, och vi har tidskritiska delar.
Du svarar ju själv på din fråga, saker som ska vara extremt snabba eller cykelexakta.

Dom få gångerna jag använt asm-delar (som jag förvisso inte skrivit själv) så är det f.ö just interuptrutiner.

Det handlar inte om optimering, det handlar om kontroll.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46976
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nybörjare!

Inlägg av TomasL »

Nu pratade jag inte om interruptrutinen som sådan, utan wrappern som sätter pekaren till rätt interruptrutin (eftersom vi inte använder det normala sättet), interruptrutinen som sådan är skriven i C.

Men det är knappast nånting som den vanliga användaren inte kommer i kontakt med, så nej, assembler är oftast ingen nödvändighet, man har precis lika bra kontroll över hårdvaran i C.
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: Nybörjare!

Inlägg av Krille Krokodil »

BJ skrev:När man programmerar avbrotts-rutiner i assembler
så kan man ju välja själv vad som ska sparas när man
går in i avbrottet. Det kan man inte göra i c, som jag
har förstått det, utan där blir det det som kompilatorn
tycker är bra, och då kan det ta tid i onödan när det körs.
Jo det kan man göra mycket enkelt, tex använder man AVR-libc lägger man bara till flaggan ISR_NAKED när man definierar avbrottsfunktionen.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Nybörjare!

Inlägg av Swech »

Swech, inte då, du behöver ju inte använda de delarna om du inte vill, dock är det extremt kostnadsbesparande, då man slipper köpa nytt i takt med att man utvecklas.
Ungefär som att köpa en 18 växlad cykel till grabben då han skall lära sig cykla.
Han behöver ju inte växla i början.....

Utvecklingskorten är ju så billiga så att spara pengar är knappast något livsavgörande.
Däremot att få ett fullsketet kort som kräver en helvetse massa inställningar
för att gå igång är klart avtändande

Swech
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46976
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nybörjare!

Inlägg av TomasL »

Och att förtydliga, man har lika bra "cykel-kontroll" i C som i ASM.


Som svar till BJ:
Normalt när ett avbrott sker, behöver man spara undan det mesta, eftersom man återgår till exakt samma ställe efter interruptet är avslutat.

Eftersom du aldrig kan förutse vilken rad du är på vid ett interrupt, så är det omöjligt att avgöra vad som skall sparas och vad som inte behöver sparas.

Swech:
Vilka inställningar då, förutom själva processorns inställningar (som du ändå måste göra oavsett processor)
Det kortet jag länkade till går alldeles utmärkt att blinka LED på, kräver ett par tre rader bara, inga konstiga inställningar eller annat.
Däremot när du tröttnat på det, efter någon halvtimma eller så, kan du gå vidare med lite roligare saker, jag skulle tro att en ren nybörjare efter någon vecka eller två, utan problem kan få en grafisk display att fungera och visa text/bilder/menyer mm.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Nybörjare!

Inlägg av Walle »

Bara den betydligt större förvirringsfaktorn med en 32-bitars kan suga musten ur en nybörjare. Man blir tillräckligt förvirrad av en 8-bitars när man är helt färsk. Det spelar knappast någon roll att man "behöver ju inte använda de delarna om du inte vill", de finns där i databladet och inställningar måste ändå göras för att se till att allt man inte vill använda faktiskt är avaktiverat.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46976
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nybörjare!

Inlägg av TomasL »

Håller inte riktigt med, dock naturligtvis är det min egna erfarenhet, en PIC32 är inte mer komplicerad än en PIC16/18, det är enligt min egen erfarenhet precis tvärtom.
Special-grejjorna är ju ändå per default avslagna, så den enda skillnaden är att du har lite mer portar att koppla in saker på, det är allt i princip.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjare!

Inlägg av sodjan »

Jag vill bara påminna om titeln på tråden, "Nybörjare!".

Impact3.0 har väl beskrivit ganska tydligt hur han ser på det hela:

> Det var just det som gjorde mig besviken på Arduino, att det finns så mycket färdigt...

OK, då ska vi alltså neråt på stegen, inte plocka in maxade 32-bits kort...

Kör helt traditionellt med lösa AVR eller PIC på breadboard med in lämplig
AVR eller PIC programmerare inkopplad. Använd de vanliga AVR-studio
eller MPLAB 8 (eller X) och börja hacka lite ASM för att få det att rulla.

En väldigt kostandseffektiv start kan vara de "Starter Kit" för PIC som
finns till PICkit2/3. Ett enkelt kort för de enklare testerna och det går
sedan med några trådar i "headers" att koppla över till ett breadboard.

Tomas förslag kostar (exkl boken) ca 3.400:- (inkl moms) och är
"way over the top" för behovet som det har beskrivts i tråden.
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Nybörjare!

Inlägg av BJ »

...lägger man bara till flaggan ISR_NAKED...

Det går alltså. Undrar om det går med kompilatorer
till Pic-processorerna också, som Hitech c och
Microchips kompilatorer.

TomasL:
Vad jag kunde läsa mig till så kan vissa kompilatorer
få för sig att spara en massa register som inte används
i avbrottet, alltså spara saker i onödan.
Jag har ingen aning om var jag läste det, eller
vilken eller vilka kompilatorer det gällde.
Användarvisningsbild
SeniorLemuren
Inlägg: 8427
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Nybörjare!

Inlägg av SeniorLemuren »

Som nybörjare kommer man rätt så långt med en PICkit2 och en bunt med Veroboard. Jag har byggt hela mitt styrsystem för både gaspådrag varvtalsreglering/mätning och backslagsmanöverering på Veroboard och PIC18F4550.

Jag började med att bilnka diod med 16F690 och Assembler för drygt 2 år sedan. Övergick ganska snart till C. Fördelen med PIC16F är ju just att det finns en uppsjö av programexempel / kretsexempel på riktigt låg och lättförstådd nivå både i Assembler och C.
Användarvisningsbild
hcb
Moderator
Inlägg: 5980
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Re: Nybörjare!

Inlägg av hcb »

Jag håller med sodjan.

Att tänka på är att många nybörjarexempel på nätet är skrivna av just nybörjare som tror att de har styr på saker och ting med i realiteten inte har det. Jag rekommenderar att sätta sig ner med databladet (Microchips är riktigt bra) och gå igenom allting noggrannt i stället för att leta efter "quick fixes" på nätet.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46976
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Nybörjare!

Inlägg av TomasL »

sodjan skrev:J
Tomas förslag kostar (exkl boken) ca 3.400:- (inkl moms) och är
"way over the top" för behovet som det har beskrivts i tråden.
Men, man kan ju plugga in kortet direkt via USB om man så vill, Expansionskortet behöver man när man vill börja leka på allvar med displayer o dyligt, annars behövs det inte.
ICD3an är inte nödvändig i sig, eftersom det sitter en inbyggd programmerare/debugger på kortet dock är ICD'n naturligtvis mycket mycket bättre än allt annat (med undantag av ICE'en)

Så en snålbudget hamnar man på runt 400:- eller så.
Användarvisningsbild
SeniorLemuren
Inlägg: 8427
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Nybörjare!

Inlägg av SeniorLemuren »

Håller absolut med om att databladet är det bästa underlaget för konstruktion/programmering. Vad som sedan skall till är erfarenheter från andra som redan gjort misstagen. Där får man förstås lära sig att sålla.

Det finns en stor samlad kunskap på nätet bara man lär sig hitta och sålla. Jag menar inte att man skall kopiera lösningar, utan att mer få idéer genom att se hur andra har löst ett problem på sitt sätt.
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Nybörjare!

Inlägg av BJ »

När vi ändå pratar om avbrott...
Om man ändrar ett register i avbrotts-rutinen i c,
hur vet kompilatorn om det är ett status-register
som ska gälla i resten av programmet, eller om det
är ett tillfälligt register som ska sparas först, och
återställas när man hoppar tillbaka från avbrottet?
Sådant har jag gjort själv i assembler förut.
Skriv svar