Jag har tidigare bara jobbat med AVR och lite Motorola. Men nu när vi ska använda oss av PIC18 i kursen Mikrodatorer tänkte jag att det var lika bra att få igång lite hemma också som man kan sitta och "leka" med
Precis innan helgen fick jag mitt "startpaket" från Sodjan, ägnade sedan lördagen åt att löda och svära över att min kod inte fungerade direkt, men det gick bra tillslut.
Jag tänkte att man kanske skulle ta och skriva om allting här, från allra första början så andra kan lära av mina misstag eller kanske bara få lite hjälp att komma igång.
Kommer posta kod här vartefter jag lär mig nya grejer.
Tänkte börja med lite bilder:
Först innehållet i paketet:
Större bild
Wisp628-kit:
Större bild
Jaha, det var det. Sen var det bara att värma upp lödkolven:
Större bild
Större bild
Lödningen gick rätt smärtfritt och ivrig som man är valde jag att ta ett befintligt nättagg istället för labbplattenätagget som följde med som kit, verkar dock väldigt smidigt med den så jag löder ihop den nån annan dag.
Uppkoppling:
Större bild
Nästa steg var att ladda ner XWisp2, i mitt fall installerade jag det under d:\Xwisp2 då jag inte gillar att lägga allt som behöver finnas i "path" i windowskatalogen. Gick istället in under kontrolpanelen/system/ och letade mig fram till "miljövariabler" och i "path" la jag till "d:\XWisp2", på detta sätt kan jag anropa det direkt från den katalog jag har koden i.
Då var det dags för det första programmet, jag valde det färdiga blink-a-led-programmet som går att hitta här:
http://www.voti.nl/blink/index.html
Det fungerade alldeles utmärkt. Den vänstra dioden på bilden ovan blinkade så fint
Sen var det dags att skriva egen kod, det gick mindre bra. Kom efter några timmars svordomar fram till att kristallen svängde med blink-a-led men inte med min egen kod så felet måste ligga i konfigurationsbitarna, inge problem tänkte jag, bara att gå in under "configuration bits" i mplab... men icke sa nicke, det fungerade inte alls.
Fick sen veta att det gick att ställa in dessa från själva koden och vips så fungerade allting =)
Mitt första program:
Kod: Markera allt
;=========================================================
; 2005-09-10
; Fredrik Johansson
; Simple led-blinker
;=========================================================
list p=18f452
include "p18f452.inc"
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; CONFIG settings (copied from P18F452.INC)
config OSC = HS
config OSCS = OFF
config PWRT = ON
config BOR = OFF
config WDT = OFF
config CCP2MUX = OFF
config STVR = OFF
config LVP = OFF
config DEBUG = OFF
config CP0 = OFF
config CP1 = OFF
config CP2 = OFF
config CP3 = OFF
config CPB = OFF
config CPD = OFF
config WRT0 = OFF
config WRT1 = OFF
config WRT2 = OFF
config WRT3 = OFF
config WRTB = OFF
config WRTC = OFF
config WRTD = OFF
config EBTR0 = OFF
config EBTR1 = OFF
config EBTR2 = OFF
config EBTR3 = OFF
config EBTRB = OFF
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Variables. We put them in the access bank...
vars UDATA_ACS
delayH RES 1
delayL RES 1
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Boot CODE h'0000'
goto Start
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Main CODE
Start
bcf TRISC,RC0 ; PORTC, PIN 0 as output
bcf PORTC,RC0 ; initiate output value to 0
main
call Delay
comf PORTC,F ; invert all signals on PORTC
goto main
Delay
movlw d'255' ; initiate delay values
movwf delayL
movlw d'255'
movwf delayH
count
decfsz delayL
goto count ; continue counting until delayL = 0
movlw d'255'
movwf delayL ; reset value of delayL
decfsz delayH ; decrease delayH one step and go back
goto count ; to decrease delayL once again
return ; we have counted delayL*delayH times
end
Tack till Sodjan som hjälpte mig komma igång och visade på hur man kodar på ett "snyggt" sätt
Nästa grej blir att koda blink-programmet med en timer och interrupts.