Sida 1 av 2
Var ska jag börja?? (PIC-novis)
Postat: 5 mars 2007, 10:48:18
av neezzen
Har för ett tag sen införskaffat mig en Wisp628, ett gäng PIC16F628A och en sats med kristaller från sodjan. Min enda programmeringserfarenhet består av PLC-programmering, vilken jag troligtvis inte har någon som helst användning av här

Jag har tänkt att börja lära mig ASM till att börja med. Men det jag undrar är i vilken ände jag ska börja?
Jag har letat mycket i forumet, på google, läst PIC-guider m.m. Men hur ska jag börja att experimentera med mitt första PIC-försök? Finns det någon enkel guide som beskriver en enkel laboration som lär en hur man går till väga, samtidigt som man kanske kan se resultaten i form av t.ex. en blinkande lysdiod på labbplattan, eller ska jag börja med att läsa datablad och sätta mig in i ASM-språket? Hur började ni? Vad var det första ni fifflade ihop på labbplattan?
Tack på förhand

Postat: 5 mars 2007, 11:03:30
av Marta
Börja med att läsa instruktionssetet i databladet. Eftersom Du har programmerat tidigare så är chanse stor att Du då förstår hur Du t.ex. kan blinka en LED.
Läs också dokumentationen till den utvecklingsmiljö Du valt, t.ex. MPLAB, så Du förstår hur allt runt omkring Ditt eget program fungerar. Vid Ditt första försök att blinka en LED kommer allt runt omkring antagligen att kännas svårare än själva programkoden.
PIC har en inbyggd oscillator, använd den om Du inte behöver noggrannheten av en kristall, då blir det hela lite enklare.
Ett litet tips som sparar mycket krångel och som Du förstår varför när Du lärt Dig mera: Låt MCLR vara just MCLR, ställ den inte som vanlig ingång för Då får Du problem att programmera om Din PIC.
Postat: 5 mars 2007, 11:12:59
av neezzen
Okej. Tack så mycket. Ska börja med att läsa på lite i databladet. Det här som du sa om intern oscillator, gäller det alla PIC? Jag har för mig att jag har läst att det endast är vissa modeller som har det, men jag har nog fel. En annan sak som jag klurar på är uppkopplingen/inkopplingen av PIC+Wisp m.m. Är det något som t.ex alltid måste finnas "kring" en PIC? Jag syftar då på uttryck som "pullup-resistor", "avkopplingskondensator" m.m.
Postat: 5 mars 2007, 11:50:41
av v-g
Här har du ett enkelt experiment som du kanske lär dig något av. Gjorde det igår
Det som _måste_ finnas (de andra hänger dig annars ) är stabiliseringskondning på strömmatningen.
Re: Var ska jag börja?? (PIC-novis)
Postat: 5 mars 2007, 12:05:27
av MicaelKarlsson
neezzen skrev:Min enda programmeringserfarenhet består av PLC-programmering, vilken jag troligtvis inte har någon som helst användning av här
Protest!!
Jag skulle vilja påstå att du HAR användning av PLC-kunskaperna. I alla fall jag tycker att ASM har likheter med PLC-program (då pratar jag naturligtvis inte om ladderdiagram).
Vet inte hur det är med PIC men för AVR finns app-notes som visar lämplig uppkoppling och lämpliga värden på motstånd och kondensatorer.
Lycka till neezzen!!
Ha det så kul med PIC-en.
Postat: 5 mars 2007, 12:40:02
av neezzen
v-g: Såg ditt lilla projekt förut, och det såg intresant ut. Något liknande har jag tänkt ge mig på också.
MicaelKarlsson: Har läst datablad nu på förmiddagen och har faktiskt, som du säger upptäckt vissa likheter med PLC. Trodde jag inte
Stabiliseringskondensator? Är det som en sorts filter mellan + och jord? Det var så jag tänkte, men det kanske inte är vad en stabiliseringskondensator gör? Stabiliserig låter mer som om det hjälpte till att hålla spänningen på en stabil nivå. Upplys mig gärna

Postat: 5 mars 2007, 13:02:48
av v-g
Jag som skrev fel skall vara avstörningskondensator. Både för att picen inte skall störa de andra (om några) kretsarna och för att den skall få lite snyggare spänning.
Jag började med ovanstående och lärde mig massor, det är liksom ofrånkomligt att man måste in i specialfunktionsregistren och när man väl sitter och nystar så fastnar massor känns det som. Att bara läsa upp och ner känns värdelöst för min del jag måste praktisera för att fatta/koppla samman Fuktionen som så är värdelös annat än om man just önskar en diod som lyser i en sekund efter att man tryckt på en knapp.
edit:La till mycket.
Postat: 5 mars 2007, 13:11:33
av MicaelKarlsson
neezzen: Vilken/vilka PLC har du pysslat med?
Jag har använt ett par olika Mitsubishi PLC.
Avkopplingskondensator brukar jag kalla den och sätter den så nära uC som det fysiskt är möjligt. som t.ex. här:

Observera att bilden ovan är en bit av ett testkort varför kabeldragningen inte är den bästa.
Men det är ju inte alltid som Vcc och GND sitter så trevligt till.
Postat: 5 mars 2007, 13:15:08
av neezzen
Aha..då var jag inte helt ute och cyklade alltså. Storlek på den kondensatorn då?
Det du säger om att inte bara läsa sida upp och sida ned låter väldigt vettigt. Jag förstår att man måste vara insatt i databladet för att ha en chans, men det vore trevligt att experimentera medan man läser.
Jag har suttit och läst datablad i några timmar nu, och jag har fått mycket större förståelse för hur en PIC är uppbyggd med register och funktioner. Men saker som PORTA och PORTB o.s.v är inte helt lätta att förstå om man inte stött på de tidigare

Jag har förstått mycket, men mycket i databladet förstår jag inte alls heller. Tänkte därför om det fanns nån labb som typ V-g s lilla projekt där det hela tiden förklaras hur man gör, varför man gör det, och vad resultatet blir. Exempelvis en kod för att blinka en LED men med utförliga kommentarer i koden så att man förstår precis vad som händer, för även efter att jag läst (bland annat) instruktionssetet i databladet så är det mycket som inte är direkt glasklart
EDIT: Fick visst ett svar till

Tackar för det. Jag har sysslat med Mitsubishis PLC men även Siemens S7 med Profibus o.sv.
Postat: 5 mars 2007, 13:32:05
av v-g
100nF säger de lärde.
Postat: 5 mars 2007, 13:57:39
av neezzen
Okej tack. Får jag bara fråga hur du kom såpass långt som till att göra ditt blink-a-led projekt v-g? Alltså jag menar, kunde du ASM innan, någon tidigare erfarenhet av PIC o.s.v. Om inte, tittade du på något kodexempel eller provade du dig fram genom att knacka kod?
Postat: 5 mars 2007, 14:05:25
av MicaelKarlsson
Eftersom jag inte vill svara exakt som v-g säger jag väl 0,1 μF då
För att ta en jämförelse med PLC så kan portarna på en μC (AVR, PIC osv) vara både in och utportar och växla i programmet allteftersom programmet fortskrider. Samt vissa kan ha flera olika specialfunktioner som ADC, PWM och en uppsjö andra funktioner (kolla in en pin-out).
Jag brukar (nästan) alltid rita flödesschema eller skriva pseudokod innan jag sätter mig framför datorn och knackar kod.
Postat: 5 mars 2007, 14:14:24
av neezzen
Jo, jag förstår likheterna där. Att skriva flödesschema innan man börjar kan ju verka vettigt tycker jag, men ändå svårt att veta i vilken ände man ska börja nu tycker jag. Har läst databladet för min PIC nu och förstår en del, men det mesta är en djungel för mig. Vad blir nästa steg? Ska jag koppla upp något på labbplattan, leka i MPLAB eller hur börjar jag? Jag vet inte ens hur man börjar ett program i ASM, vet inte om min WISP fungerar som den ska eller nåt. Det finns så att säga en del trådar att börja nysta i

Postat: 5 mars 2007, 16:34:03
av eriikh
Det finns lite olika simuleringsprogram för pic, tex PIC Simulator IDE från Oshon soft. En bra start är att lyckas få den att tex blinka en led. När det funkar i simulatorn så är det dags att försöka få ner programmet i pic:en och sedan få den att köra det. Kom ihåg att du måste ställa config-bitarna til den riktiga pic:en, simulatorn behöver dem inte.
På detta sätt så slipper du slita håret över om det är din inkoppling eller ditt program som inte funkar.
(Ett psuedotips till PIC16F628 är att ställa config till 0x3F78 och sätta ett motstånd på 10kOhm mellan mclr och Vdd, då funkar det

)
/Erik
Postat: 5 mars 2007, 16:43:07
av v-g
Lite ASM kan man ju (är ju inte så mycket att kunna egentligen) Men måste läsa i princip för varje kommando (tex vilken av registrena som egentligen skrivs och vilket som läses under en MOV) för att vara säker.
Har inte hållit på med PIC alls. Köpte kretsar+wisp628 i höstas av sodjan. Letade sedan åt "blink-a-led" asm fil för just min prolle bara för att vara SÄKER på att allt funkade. Letade därefter åt en källkodsfil för samma sak. Gjorde om den till "blink-four-leds" och på den vägen är det.
Har ju däremot programmerarbakgrund och det är mest mot den jag lutar mig där man hållit på med Pascal/VB/ASP/Java/c/c++ osv + att kodat lite för intels processorer i varierande språk. (även en kort period med BSII

)
Inte att förglömma PROLOG
Det man måste inse är att egentligen är en µc bara en massa register. Sen testa testa testa. Brände säkert om kretsen 20 gånger igår innan det fungerade.
Sen gäller det även att bryta ner och testa. Funkar min "tänd lysdiodrutin" egentligen? När man testat varje bit för sig så ger man sig på att slå samman.
Fasen värsta utlägget här, kopierar rakt in i CV't.
