nån som e haj på PIC o assembler

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46960
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av TomasL »

Ja, därför att jag inte förstår varför man skall krångla till det, man lär sig precis lika snabbt, och förmodligen bättre om man skriver i C i stället.
Påståendet om att man skulle lära sig bättre bara för att man skriver i maskinkod, tror jag inte på, eftersom maskinkodsskrivningen kommer på köpet sas.

Tror att många tröttnar pga den långa och höga inlärningströskeln med att skriva i maskinkod.
C gömmer inget, däremot är det avsevärt mycket roligare, då resultatet kommer snabbare.
kvaark
Inlägg: 256
Blev medlem: 1 september 2010, 22:19:39

Re: nån som e haj på PIC o assembler

Inlägg av kvaark »

Varför inte börja i första klass med att skriva romaner?

Tycker det låter klokt att ta en liten bit i taget.. Som tex Alfabetet innan innan man lär sig ord..

Trehjuling innan tvåhjuling

Krypa innan gå!

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

Re: nån som e haj på PIC o assembler

Inlägg av TomasL »

Nja, vill påstå att det är tvärtom.

Ungefär som att lära sig bygga en cykel innan man skall lära sig cykla.
kvaark
Inlägg: 256
Blev medlem: 1 september 2010, 22:19:39

Re: nån som e haj på PIC o assembler

Inlägg av kvaark »

Nja isåfall som att lära sig att bygga en motorcykel för att kunna cykla trampcykel!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: nån som e haj på PIC o assembler

Inlägg av sodjan »

Man kan inte mäta allt i torr effektivitet.
Många finner en stor tillfredställelse att "hacka" assembler.
Sen så har ju "maskinkod" inte så mycket med assembler att göra.
En modern assembler har många konstruktioner som medger flera
moderna koncept som separatassemblering (flera filer), lokala symboler
och en stor mängd kommandon för assemblytime beräkningar.
kvaark
Inlägg: 256
Blev medlem: 1 september 2010, 22:19:39

Re: nån som e haj på PIC o assembler

Inlägg av kvaark »

Måste man lära sig allt teoretiskt om utväxling och kuggar på en cykel innan man kan börja vingla runt på en liten cykel utan växlar med stödjul och pappa som håller i bak?

Det viktiga tycker jag är att man får komma igång på en lagom avancerad nivå och om man tycker att det är något som är intressant gå vidare till kurs två och fördjupa sig i ämnet!

Fast man kan försöka lära sig allt på en gång och eventuellt ta vatten över huvudet och bara bli besviken för att man inte är på den avancerade nivå som krävs!


Ändring: syftar nu på att det borde vara ok att skippa vissa saker i inlärningsprocessen Som tex BANKSEL eller INTERUPT och dylikt detta kan man lika gärna lära sig när man behöver det! Risken fins att det anars blir för mycket för en nybörjare och halft trög idiot som jag :D
Användarvisningsbild
teljemo
Inlägg: 1626
Blev medlem: 5 februari 2011, 12:08:13
Ort: Getinge
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av teljemo »

TomasL skrev:Ja, därför att jag inte förstår varför man skall krångla till det, man lär sig precis lika snabbt, och förmodligen bättre om man skriver i C i stället.
Påståendet om att man skulle lära sig bättre bara för att man skriver i maskinkod, tror jag inte på, eftersom maskinkodsskrivningen kommer på köpet sas.

Tror att många tröttnar pga den långa och höga inlärningströskeln med att skriva i maskinkod.
C gömmer inget, däremot är det avsevärt mycket roligare, då resultatet kommer snabbare.

Anledningen till att jag tänkte plugga in assembler va att det e detta de står om i PICkit2 papprena.. :P
O så nu börjar du snacka om C.. o att assembler är maskinkod
nu blir man ju ännu mer nyfiken..
va e C.. inte maskinkod.. Kan man använda C till PICkit oxå..
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av bos »

Grattis TomasL som nu har skapat massor av förvirring.
:)
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46960
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av TomasL »

Du kan skriva i C till vilken processor som helst, om det finns en kompilator.
Assembler är (nu vet jag att många protesterar) inte ett programspråk utan en samling mneonics vilka motsvarar maskinkoden exakt, skriver du "nop" så motsvarar det exakt 0x00 och inget annat, samma gäller alla andra mneonics som används när man skriver assembler, assemblatorn ersätter sedan varje kodrad med motsvarande binära värden. Att sedan till exempel MPASM ger möjligheten med labels, macron mm har inte med saken att göra.

Vad som skiljer mellan assembler och ett programspråk är att om källkoden är skrivit i ett programspråk, så kan den mer eller mindre problemfritt flyttas mellan olika processortyper och även mellan olika arkitekturer, vilket är fullständigt omöjligt med ett assemblerprogram, ibland går assemblerprogram inte ens att flytta mellan olika processorer inom samma familj.

Kort sagt, ett program skrivet för en Pentium kan i princip flyttas till en PIC16-processor (i alla fall i teorin), om det är skrivet i C.

Själva programmeraren dvs din PICKit har inget med detta att göra, då den använder sig av det kompilerade/assemblerade resultatet från kompilatorn eller assemblatorn för att ladda upp den resulterande maskinkoden i processorn.
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: nån som e haj på PIC o assembler

Inlägg av labmaster »

Hej teljemo!

Så gott som all kunskapsuppbyggnad avseende programutveckling handlar om att lära sig programutvecklingsmetodik. I början på 80-talet var det mycket vanligt att universitet och högskolestudier startade med ett programspråk som heter Pascal. Numera tror jag man ofta börjar med C som ibland brukar kallas högnivåspråk. Assemblerprogrammering brukar komma senare när man hunnit bygga upp kunskaper i programutvecklingsmetodik.

Nackdelen att börja med ett lågnivåspråk som assembler är att man får lägga väldigt mycket krut på att lära sig alla korta ord samtidigt som man måste hålla reda på alla register och minnesadresseringar med mera. Det slipper man i princip när man använder C eller annat språk.

Programspråket C kom i slutet på 70-talet och blev snabbt populärt bland dem som jobbade med hårdvarunära programutveckling och detta gäller än idag. Assemblerspråket används oftast när man behöver ha ordentlig kontroll på att maskinkoden blir så effektiv och snabb som möjligt. Det är därför som många brukar säga att assemblerkod är maskinkod. Det är nästan så sant att man kan säga att det är sant.

Jag har väldigt många års erfarenhet av programutveckling, över 30 år faktiskt, och brukar alltid rekommendera att de som vill lära sig att programmera mikroprocessorer skall börja med C.

Det är också väldigt viktigt att börja med så enkla program som möjligt. Det mest vanliga programmet som man bör börja med är "Hello world". Det går ut på att till en terminal eller fönster skriva orden "Hello world".

Första gången jag skulle programmera AVR så började jag med att skriva ett program som tände lysdioderna på utvecklingsplattformen som heter STK 500. Där fanns inget terminalfönster eller display så det fick bli några dioder som motsvarade "Hello World". Program nummer två som man brukar rekommendera är att läsa in tecken från tangentbordet. På STK 500 finns inget tangentbord så där fick det duga med att läsa switcharna som sitter på kortet. Det är dock lite svårare att läsa in en switch jämfört med tecken från ett tangentbord eftersom man måste ta hand om det som kallas för kontaktstudsar.

Nu kanske du tror att jag var nybörjare på programmering när jag började med AVR men så är det inte. Jag var med och skrev en egen Unix-plattform innan Linus Torvald släppte sin Linux och jag hade provat ett stort anta mikroprocessorer innan. Däremot har jag aldrig programmerat en PIC-processor och du kan säkert gissa vad jag skulle börja med om jag behöver göra det.

Japp du gissade rätt i din tanke, nämligen "Hello Word" till lysdioder och som program nummer två läsa switchar. Sannolikt tar det inte lika lång tid för mig att göra dessa två program som det gör när man är nybörjare som du. Jag behöver ju så att säga inte koncentrera mig på programutvecklingsmetodiken, orden och strukturen in programspråket. Dessutom fungerar de flesta mikroprocessorer på samma sätt med en begränsad mängd olikheter som man lätt hittar i databladet när man har lång erfarenhet av maskinnära programutveckling.

Nåväl, åsikterna om hur man bör lära sig att programmera mikroprocessorer skiljer sig säkert. Min rekommendation är att du försöker få igång en utvecklingsplattform med C och startar med "hello world" till lysdioder. Jobbar du lugnt och metodiskt så kommer erfarenheten och höjden i utmaningarna med stormsteg.

Jag kan ställa upp och ge förslag på övningsprogram under tiden du lär dig. Flera kan nog ställa upp och hjälpa till med olika detaljer. Med en strukturerad metodik går det fortare att lära sig och sedan kan du ge dig in på lite större utmaningar. Under tiden du lär dig kan du hänga upp en pappersskylt på maskinens startvred på jobbet där du på bägge sidorna med röd tuschpenna har skrivit "RÖR EJ" när du servar dem.

Detta är några meningar från en bland många som har varit med en stund i livet och där det hunnit rinna många programspråk och olika mikroprocessorer under broarna. Du väljer själv om du vill ta till dig av vad jag har att säga annars förkastar du innehållet i denna post.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46960
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av TomasL »

Håller fullständigt med dig labmaster, just detta med maskinkod/assembler anser jag vara överkurs.

Dock är problemet med just PIC16, det finns inte så många vettiga C-kompilatorer, ialla fall inte för vettiga hobbypengar.
De två jag känner till är Hitec och WIZ-C, Hitec funkar i MPLAB, WIZ-C använder en egen IDE, som förvisso är rätt vettig, med många bra ideer.

Bägge genererar IntelHEX filer så man kan använda tiull exempel PICKit till att programmera processorerna.
WIZ-C använder sina egan debuggers och är mig veterligen inte kompatibel med uChips varianter (PICKit och ICD3).

Till PIC18 funkar MCC16 alldeles utmärkt dock.
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: nån som e haj på PIC o assembler

Inlägg av labmaster »

Tack TomasL, inte allt för sällan märker jag att många som ställer frågor när de vill lära sig nytt har bestämt sig för en utstakad väg och det är inte alltid som de berättar varför de valt just den väg de tror är bäst.

Ganska ofta tycker jag också synd om de som gör trevande försök att få råd på olika sätt när de väl stakat ut sin väg eller håller på att staka ut den. Det är ju inte helt ovanligt att värdens principdiskussioner dyker upp. Det diskuteras ditten och datten, för och emot. Det sprutar helt enkelt in post efter post. Den stackars nybörjaren om man får säga så blir förmodligen helt förvirrad och vet varken ut eller in. I denna tråd kan inte ens jag kan hänga med eftersom jag inte har provat PIC-familjen någon gång. Hur skall då TS kunna göra det?

TomasL, oaktat alla synpunkter om vilken processor man skall välja och ifall man skall satsa på assembler direkt eller inte. Hur skulle TS med utgångspunkt i den miljö han har nu kunna komplettera den så att han kan få till en bra utvecklingsmiljö för C? Gärna med möjlighet att köra debugger i simulator eller direkt på chippet.

By the way, om det är någon i denna tråd som vill diskutera hur man bäst skolar in sig på ett nytt programspråk eller mikroprocessor så ställer jag gärna upp men då föreslår jag att vi startar en ny tråd. Hoppas det är ok ty jag vill värna om TS möjligheter att få en så bra start som möjligt nu när han verkligen vill komma igång såsom det ser ut.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46960
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av TomasL »

Verkar som Hitech Kompilatorn finns i ett liteutförande, kostnadsfri nedladdning
http://www.microchip.com/stellent/idcpl ... e=en542849

Som vanligt så saknas optimeringsfunktionerna, men å andra sidan så spelar de ingen roll, eftersom det ändå inte går att debugga optimerad kod.

Den funkar i MPLAB och eftersom MPLAB kan använda PICKit som programmerare (i alla fall den vanliga MPLAB, hur det är med "X" vet jag inte), så borde det fungera perfekt för TS.
Användarvisningsbild
teljemo
Inlägg: 1626
Blev medlem: 5 februari 2011, 12:08:13
Ort: Getinge
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av teljemo »

ok.. grejen är såhär...
Jag har gått o funderat länge på vissa prylar man vill fixa men jag har varit begränsad pga att jag inte kan den här programmeringen.. "digital elektronik"

Snackade med en jobbarkompis för en tid sen och han hade lite små koll.. på att det tydligen går att lära sig... :P

Skrev en tråd här i forumet.. lite om en ide jag hade...
http://elektronikforumet.com/forum/view ... =4&t=48680 (<--- men glöm de nu.. )

Jag köpte en PICkit2 för att jag fick tipset att det skulle vara ett bra sätt att lära sig på...
Det är den ända anledningen till att jag snöat in på PIC och assembler...

Men om det finns bättre sätt som tex "C".. som i den här diskussionen låter helt lysande så kanske man borde rikta in sig på det istället...
(och andra processorer.. ?.. ock programmerare.. )

Att man med C då även kan programmera till datorn.. (i terminal eller fönster) kanske små program.. men även till en microprocessor på ett kretskort.. =)
(läste att C++ bygger på C så man kanske kan gå vidare där oxå när man vill suga in ännu mer)

Låter som jag ska lägga min PICkit2 åt sidan (sålänge) och börja om på en ny bana..

... labmaster: jag vill lära mig hur man skolar in sig på ett nytt programmspråk.. "C"
Vill du starta en ny tråd om detta (request)

Mvh // TS
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46960
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: nån som e haj på PIC o assembler

Inlägg av TomasL »

Du behöver inte lägga din PICKit2 åt sidan, eftersom den funkar lika bra med C.
Tanka ned och installera Hitec C från Microchips hemsida och installera den i MBLAB, länken hittar du i min förra postning.
Sedan är det bara att tuta och köra, skriv blinka-LED program i C programmera det med din PICKit (välj i MPLAB att du vill ha PICKit2 som programmerare eller debugger).

Det där med C++ skall du dock glömma när det gäller microkontrollers, i alla fall dessa typer som vi avhandlar här.
Skriv svar