Hjälp med att komma i gång.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Hjälp med att komma i gång.

Inlägg av xenonfire »

Sitter och skall börja lära mej att bygga med pic.
Kikade lite på guiden som ligger under guider och den är kanon.
Men tyvärr så står det inget om hur man sedan går till väga.
Jag har en bra programmerare här hemma med medföljande mjukvara ( Smartprog från Elnec ).

Men när jag nu skall skriva program, hur går jag då till väga?
Skulle vilja ha förklarat i vilka steg man går till väga och vilka program man skall köra med.
Jag vill helst programmera i Basic och just nu 16F84 som jag har ett par liggande.
Men hur gör man sedan om så att mjukvaran passar pic kretsen, är det assembler eller?

Någon som vet?

PS. tar risken för att bli mobbad men detta skulle vara en stor hjälp för mej.
ny börjare
Inlägg: 109
Blev medlem: 1 november 2005, 15:31:18
Ort: Hemma

Inlägg av ny börjare »

Jag är också inne på samma linje
Vad jag har fattat hitils ska man programmera i C eller asembler. Jag kan inget av språken...

Förresten, var köpte du programmeraren och vad kostade den?

Jag hoppas någon mer erfaren kommer hjälpa oss...
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

programmeraren köpte jag ny hos instrumentcenter för 6000kr
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

OK, ni är inne på PIC. Den duger lika bra som en del andra, personligt gillar jag PIC men jag är inte blind för andra.

Är det PIC är det Microchip som gäller!

Där finns ett program som heter MPLAB och det är grejen!

Det kör assembler och man kan "koppla till" olika språktillägg (C, Pascal, Basic...har jag för mig) men det är i den "rena formen" assembler och det duger väldigt bra.

Man kan simulera programmet man gör, se resultat i registre och minne osv och när man har gjort (bort sig) nog kan man, med den rätta hårdvara, programmera kretsen och se att den faktisk gör som den ska.

Så tanka ner MPLAB och kolla runt på deras exempel-program osv.
Microchip har i övrigt MÅNGA application-notes (AN) som beskriver olika lösninger, sätt att greja problem på, roliga tips och MYCKET annat.

Jag skulle tro att ni kan få en månads fritid att gå med att surra runt där samt leka med MPLAB.

Just det: programmeringsspråk.....man MÅSTE inte kunna C eller sånt.....men gör man större saker kan det vara värd att lära sig då komplexiteten i assembler snabbt ökas....men ta det i sinom tid.

Undvik dock fällan med en BASIC-variant, BASIC är dött sedan länge (och luktar så också)!

Personligt har jag kört BASIC, assembler, Pascal, C, C++ och C# i den ordning med lite asynkrona inslag av olika andra PLC-språk, CiCode osv. Jag föredrar definitivt C(++) framför andra språk men smak och tycke.....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

När det gäller lite intro till PIC så är denna sida inte så dum : http://www.voti.nl/swp/index.html
Samma info fast som ett PDF dokument : http://www.jescab.se/Starting_with_PICs.html (min sida...)

Sedan några av frågorna i inläggen...

> Men när jag nu skall skriva program, hur går jag då till väga?

Allra enklast är att plocka ner MPALB från www.microchip.com och köra igång.
Jag har gjort en sida med lite info om installation och grundkonfigurering av MPLAB :
http://www.jescab.se/Info_MPLAB.html

Det andra som ni *MÅSTE* ha är databladet för den PIC som som skall programmeras. Plocka ner rellevanta PDF'er från Microchip. Och *LÄS* databladet så att ni hittar i det som i er egen ficka innan någon kod skrivs alls. Den tider har ni igen flera gånger under programmerngen, då man ofta sitter med en hand på tangentbordet och en hand i databladet...

> Jag vill helst programmera i Basic

Av vilken anledning då ?
Om avsikten är att lära sig så mycket som möjligt om PIC processorerna (och inte bara snabbt slänga ihop några enkla exempel), så är det assembler som gäller. Basic kan vara en genväg till snabba resultat, men förståelsen för vad som igentligen händer brister ofta.

> och just nu 16F84 som jag har ett par liggande.

Visst, så länge du vet att det är en fullständigt omodern processor som saknar nästan allt som de aktuella modellerna har, så är det väll OK. Annars finns det absolut ingen anledning att använda dessa, tvärt om, du gör dig själv en tjänst genom att köra något modernt.

> Men hur gör man sedan om så att mjukvaran passar pic kretsen, är det assembler eller?

Lite osäker på vad "göra om" betyder...

Man måste veta vilken processor man skriver koden för, och så skriver man för just den. Nu är det inte *så* väldigt stor skillnad, det är mest vilka olika interface olika processorer har som skiljer.

> Vad jag har fattat hitils ska man programmera i C eller asembler.

Tja, ska och ska... :-)
*Jag* brukar säga att man bör starta med assembler för att bäst lära sig PIC arkitekturen. Man kommer "närmast" processorn med assmebler. Sedan är det lite mer personligt (och beroende på vilka processorer mna tänker använda) om man skall köra något annat än assembler alls. Många av de minsta PIC processorerna är för små för något annat än assembler, jag skulle nog räkna bl.a 16F84A dit...

Om man har kört t.ex C på någon annan mikrokontroller tidigare, så kan det vara mer naturligt att fortsätta med C på PIC, men för hobbybruk fungerar assembler helt OK.

Assembler är enda sättet att alltid ha tillgång till hela processorn i ett gratis verktyg. De flesta gratisversioner av C och Basic verktyg jag har sett har haft olika begränsningar som man får betala olika mycket för att få bort. T.ex så är en begränsning i programstorlek vanlig.
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

Okej.
Så om jag nu har fattat det hela rätt så skall man skriva i assemblerkod och sedan konvertera till Hex.
Går det att konvertera Hex till Assembler?

Som " Icecap " skrev att det går åt en månad med att surra runt i MPLAB så verkar detta stämma rätt bra.
Har testat med att köra 16F84, men det funkar inte i programmet.
Det finns ingen färdig ASM fil med till programmet.
Däremot så finns 16F84A, men då stämmer inte adresserna riktigt.
Testade lite med andra kretsar och då kunde man köra.
Just nu så gäller det att lära sig att skriva själva koden.
Skall testa med att göra en blinkande diod eller nått.

Något som man reflekterar över är att det är så svårt att veta vilket språk som allt är skrivet i.

Testade att göra walkinglight programmeringen på denna sida och fick det att fungera. http://www.geocities.com/dinceraydin/pi ... jpasm.html

Är assembler ett språk eller bara att program för kodning?
danei
EF Sponsor
Inlägg: 27426
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Jag ser inget fel alls med att börja med 16F84. Men jag skulle inte köpa den. Asembler är inte "ett" språk. Vad man gör är att skriva maskinkod. Men lite lättare namn på instruktionerna. Så asembler är unikt för varje processor typ. Starta med att blinka med en diod. Kanske till och med med ett nerladdat blink program. Så att man ser att programeraren funkar. Och sen pillar man i programet. Blinkar med fler dioder eller vad man nu vill. Men se till att du vet vad instruktionerna gör innan du går vidare. Det är så pass få instruktioner till en PIC så det är inga problem att lära sig, eller iafa lära sig var det står...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Så om jag nu har fattat det hela rätt så skall man skriva i assemblerkod och sedan konvertera till Hex.

Man klickar på "Build" knappen i MPLAB...

> Går det att konvertera Hex till Assembler?

Det finns "dis-assemblers", men man får naturligtsvis inte tillbaka *samma* källkod som HEX filen var skapad ifrån. Sådant som alla kommentarer och vilka namn man hade på labels saknas, men det är ju ganska självklart.
Men varför frågar du ? Vad är behovet ?

16F84 är helt stendöd.
16F84A är halvdöd...

Dubbelt så dyr som de betydligt bättre/moderna varianterna, så köp absolut inga nya F84A !!

> Är assembler ett språk eller bara att program för kodning?

Här är det lite rörigt...
Ibland talar man om "assemblator" på svenska då man menar programmet som översätter (assemblerar) assembler kod till maskinkod (hex filer).
Men häng inte upp dig på det, sammanhanget brukar vara givet.

För PIC så skriver man assemblerkod som sedan körs genom MPASM (anropas från MPLAB när man klickar på "Build") till maskinkod (hexfiler).

Och om man skall vara korrekt (och skriva sin kod på "rätt" sätt) så skapar MPASM *object* filer (.O) som sedan körs genom MPLINK ("länkaren") för att skapa HEX filena. Allt detta sker automatiskt i MPLAB när man klickar "Build", men deet är bra att veta vad som händer "under huven".

Se även :
http://www.jescab.se/Info_MPLAB.html
http://www.jescab.se/Rellocmode.html

> Vad man gör är att skriva maskinkod. Men lite lättare namn på instruktionerna.

Det är en kraftig förenkling.
Förrutom de rena instruktionerna (alltså de som direkt översätts till motsvarande maskininstruktion) så innehåller PIC-assembler en mångd egna kommandon ("direktiv") som styr bearbetningen på olika sätt. T.ex för val av vilka delar av källkoden som skall komma med (Conditional assembly), makro hantering, beräkningar m.m.

Notera att PIC databladen enbart listar de rena PIC instruktionerna, för resten av assembler syntaxen får man använda den speciella dokumentationen till MPASM. Bara att plocka ner från www.microchip.com och läsa !
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

Anlednignen till att jag sitter som jag gör just nu och hackar på en 16F84 är att jag sitter hemma och är sjuk och att det var den enda pic-kretsen som jag hittade här hemma.
Ny roliga modeller är beställda. :-)

Har äntligen fått igång MPLAB och gjort en egen kod.
Där jag har fått en enkel diod att tända sig.
Låter kanske lite löjligt , men jag är lycklig nu iaf.

Att köra med *.lkr filer funkade inte så jag kör just nu utan.

Min första ASM fil ser ut så här:
processor 16f84
include <p16f84.inc>
__config _XT_OSC & _WDT_OFF & _PWRTE_ON

org 0
movlw B'00000000'
tris PORTB
movlw B'00000001'
movwf PORTB
fin:goto fin
end


Och skall se om jag kan bygga på med lite mer kommandon.
Skall se om jag hittar databladet till chippet.
Har dock bara hittat till 16f84A än så länge, men skall göra ett djupare dyk inne på microchips hemsida.

Jag är imponerad över alla snabba svar man får..!!! :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Där jag har fått en enkel diod att tända sig.
> Låter kanske lite löjligt , men jag är lycklig nu iaf.

Inte alls ! Det är ett himla stort steg, tro mig !
Nu har du en bas att köra vidare från.

> Att köra med *.lkr filer funkade inte...

Beror nog på att du har ORG i koden, ORG är inte tillåtet i relocatable mode, kolla upp CODE i MPASM manualen. CODE är lite av motsvarigheten till ORG (men inte helt).

TRIS är en "deprecated" instruction. Kör gärna med MOVWF TRISB istället.

> Skall se om jag hittar databladet till chippet.

-> www.microchip.com
-> PICmicro Microcontrollers
-> Mature PICmicro MCUs
-> PIC16F84
-> PIC16F84 DataSheets
-> http://ww1.microchip.com/downloads/en/D ... 30430c.pdf
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

Lite tips till dom som skall börja med 16F84 vilket är en dålig PIC att jobba med, men ändå...
http://www.tfe.umu.se/courses/dator/Dig ... igiPIC.pdf

Jag börjar få lite klarhet i hur man går tillväga.
Men fy vad det är klurigt, men skam den som ger sig..

Hoppas att du " Ny börjare " kommer i gång du med.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Men fy vad det är klurigt,

Är det något speciellt du tänker på ?

I princip, i lite grova drag, handlar det om :

-> Skaffa lämplig PIC med tillbehör (kristall m.m.)
-> Plocka ner datablad till ovanstående och ** LÄS ** ! (viktigt...)
-> Skaffa något (t.ex labbplatta) att bygga på.
-> Skaffa en lämplig programmerare (ofta stor fråga i sig... :-) ).
-> Testkör gärna programmeraren med en färdig HEX fil.
-> Installera och konfigurera MPLAB.
-> Läs igenom MPLAB docs.
-> Läs åtminstånde introduktionen i manualen till MPASM.
-> Hitta någon exempelkod att ha som utgångspunkt.
-> Kör på !!

Om man dessutom är helt "grön" på elektronik i allmänhet så har man, tja, ytterligare en uppförbacke... :-)
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

Alla hjälpmedel finns, så nu är det väl bara hjärnan som skall få jobba lite.
Sitter just nu och försöker få till en paustid i mitt program.
Användarvisningsbild
xenonfire
Inlägg: 144
Blev medlem: 4 april 2004, 14:12:42
Ort: Skaraborg

Inlägg av xenonfire »

Är det enda sättet att skriva in en delaytid på genom att göra loopar, eller finns det något enklare sätt?

Gärna om ni har en fungerande programkod för MPLAB så att jag lätt kan lära mej tekniken bakom den..
Kör med XC 4Mhz och vill ha en delaytid på ca 0.5 sek.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Du kan också använda en timer. T.o.m gamla 84:an har en (1st!) sådan om jag inte minns fel. Antingen initierar du den och låter den snurra på för sig själv med en titt då och då för att se vad tiden, eller så använder du avbrott för signaler när en viss tid uppnåtts. Sök gärna på timer och avbrott på forumet eftersom det har varit uppe många ggr.
Skriv svar