Nybörjare!
Re: Nybörjare!
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.
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.
Re: Nybörjare!
Du svarar ju själv på din fråga, saker som ska vara extremt snabba eller cykelexakta.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.
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.
Re: Nybörjare!
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.
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.
- Krille Krokodil
- Inlägg: 4062
- Blev medlem: 9 december 2005, 22:33:11
- Ort: Helsingborg
Re: Nybörjare!
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.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.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Nybörjare!
Ungefär som att köpa en 18 växlad cykel till grabben då han skall lära sig cykla.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.
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
Re: Nybörjare!
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.
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.
Re: Nybörjare!
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.
Re: Nybörjare!
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.
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.
Re: Nybörjare!
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.
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.
Re: Nybörjare!
...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.
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.
- SeniorLemuren
- Inlägg: 8427
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Nybörjare!
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.
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.
- hcb
- Moderator
- Inlägg: 5980
- Blev medlem: 23 februari 2007, 21:44:50
- Skype: hcbecker
- Ort: Lystrup / Uppsala
- Kontakt:
Re: Nybörjare!
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.
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.
Re: Nybörjare!
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.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.
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å.
- SeniorLemuren
- Inlägg: 8427
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Nybörjare!
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.
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.
Re: Nybörjare!
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.
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.