Försöker igen alltså, angående PIC16F84A...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
PEO! LULEÅ
Inlägg: 7
Blev medlem: 14 november 2008, 21:59:57
Ort: Luleå, Norrbotten
Kontakt:

Försöker igen alltså, angående PIC16F84A...

Inlägg av PEO! LULEÅ »

Har försökt programmera en PIC16F84A, men inte lyckats. Nu undrar jag om det är någon som vet vad det kan vara för fel. Programmeraren är en VM134 från Velleman, jag har använt deras program PIC programmer 2006 för att föra över HEX-koden till PIC:en. Det resulterar i att VM134 säger att det inte är rätt PIC, fast jag angett det.

Har två versioner av HEX-filen, en ny och en gammal, den nya är gjord med MPLAB, men den fungerade inte heller.

Vore bra om någon duktig programmerare kunde kolla assembler programmet för att se om det finns några uppenbara fel.

Här programmet i assembler form:

;**** 1 GHz COUNTER ****
;* Jan Kolar - Pira CZ *
;***********************
; http://pira.cz
;***********************
;Commercial use forbidden

LIST P=PIC16F84A

TMR EQU 01h
PORTA EQU 5
PORTB EQU 6
INTC EQU 0Bh
TRISA EQU 85h
TRISB EQU 86h
STATUS EQU 3
OPTN EQU 81h
PROGCNT EQU 02h
W EQU 0
F EQU 1
C EQU 0
Z EQU 2
CNTW EQU 0Ch
CNT1 EQU 0Dh
CNT2 EQU 0Eh
CNT3 EQU 12h
CNT4 EQU 10h
DIGIT0 EQU 11h
DIGIT1 EQU 0Fh
DIGIT2 EQU 17h
DIGIT3 EQU 14h
WORKA EQU 15h
CNT5 EQU 16h
CNT6 EQU 13h

BUFF0 EQU 19h
BUFF1 EQU 1Ah
BUFF2 EQU 1Bh
BUFF3 EQU 1Ch

BSF STATUS,5
MOVLW B'00010000' ;RA4 input
MOVWF TRISA
MOVLW B'00000001' ;RB0 input
MOVWF TRISB
MOVLW B'01110011' ;prescaler & pull-ups
MOVWF OPTN
BCF STATUS,5

CLRF DIGIT2
CLRF DIGIT1
CLRF DIGIT0
BSF DIGIT0,3
DECF DIGIT1
DECF DIGIT2
MOVF DIGIT1,W
MOVWF PORTA
BSF DIGIT0,2
CLRF DIGIT3
BCF DIGIT1,1
BCF DIGIT1,5
INCF DIGIT0
BSF DIGIT3,3
INCF DIGIT3
BCF DIGIT2,7
BCF DIGIT2,1

COUNT CLRF TMR
CLRF CNTW
BCF INTC,2
CLRF CNT2

CALL REFRESH
CALL REFRESH
CALL REFRESH
CALL REFRESH

READ MOVF TMR,W ;read from TMR0
MOVWF CNT1
BTFSS CNT1,7 ;is TMR>127?
GOTO READ2 ;no
GOTO READ3 ;yes
READ2 BTFSC INTC,2
INCF CNT2
READ3 MOVF CNTW,W
ADDWF CNT2
INCF CNT1
BTFSC STATUS,Z
INCF CNT2

CONVST BTFSC PORTB,0 ;*** IF frequency correction? ***
GOTO CONV01 ;NO
;YES
MOVLW 0xD6 ;= 20 * (IF in MHz)
SUBWF CNT1 ;SUBWF/ADDWF (-/+)
BTFSC STATUS,C
GOTO CONV01
MOVF CNT2,F
BTFSC STATUS,Z
GOTO CONVERR
DECF CNT2
CONV01 CLRF BUFF0
CLRF BUFF1
CLRF BUFF2
CLRF BUFF3
BTFSS CNT2,6 ;819.2
GOTO CONV02
MOVLW 8
MOVWF BUFF0
MOVLW 1
MOVWF BUFF1
MOVLW 9
MOVWF BUFF2
MOVLW 2
MOVWF BUFF3
CONV02 BTFSS CNT2,5 ;409.6
GOTO CONV03
MOVLW 4
ADDWF BUFF0
MOVLW 9
ADDWF BUFF2
MOVLW 6
ADDWF BUFF3
CONV03 BTFSS CNT2,4 ;204.8
GOTO CONV04
MOVLW 2
ADDWF BUFF0
MOVLW 4
ADDWF BUFF2
MOVLW 8
ADDWF BUFF3
CONV04 BTFSS CNT2,3 ;102.4
GOTO CONV05
MOVLW 1
ADDWF BUFF0
MOVLW 2
ADDWF BUFF2
MOVLW 4
ADDWF BUFF3
CONV05 BTFSS CNT2,2 ;51.2
GOTO CONV06
MOVLW 5
ADDWF BUFF1
MOVLW 1
ADDWF BUFF2
MOVLW 2
ADDWF BUFF3
CONV06 BTFSS CNT2,1 ;25.6
GOTO CONV07
MOVLW 2
ADDWF BUFF1
MOVLW 5
ADDWF BUFF2
MOVLW 6
ADDWF BUFF3
CONV07 BTFSS CNT2,0 ;12.8
GOTO CONV08
MOVLW 1
ADDWF BUFF1
MOVLW 2
ADDWF BUFF2
MOVLW 8
ADDWF BUFF3
CONV08 BTFSS CNT1,7 ;6.4
GOTO CONV09
MOVLW 6
ADDWF BUFF2
MOVLW 4
ADDWF BUFF3
CONV09 BTFSS CNT1,6 ;3.2
GOTO CONV10
MOVLW 3
ADDWF BUFF2
MOVLW 2
ADDWF BUFF3
CONV10 BTFSS CNT1,5 ;1.6
GOTO CONV11
MOVLW 1
ADDWF BUFF2
MOVLW 6
ADDWF BUFF3
CONV11 MOVLW 8
BTFSC CNT1,4 ;0.8
ADDWF BUFF3
MOVLW 4
BTFSC CNT1,3 ;0.4
ADDWF BUFF3
MOVLW 2
BTFSC CNT1,2 ;0.2
ADDWF BUFF3
MOVLW 1
BTFSC CNT1,1 ;0.1
ADDWF BUFF3
CONV20 MOVLW 0x0A
SUBWF BUFF3,W
BTFSS STATUS,C
GOTO CONV21
MOVWF BUFF3
INCF BUFF2
GOTO CONV20
CONV21 MOVLW 0x0A
SUBWF BUFF2,W
BTFSS STATUS,C
GOTO CONV22
MOVWF BUFF2
INCF BUFF1
GOTO CONV21
CONV22 MOVLW 0x0A
SUBWF BUFF1,W
BTFSS STATUS,C
GOTO CONV23
MOVWF BUFF1
INCF BUFF0
GOTO CONV22
CONV23 MOVF BUFF0,W
SUBLW 0x09
BTFSS STATUS,C
GOTO CONVERR

MOVLW 0xFF
MOVWF DIGIT0
MOVWF DIGIT1
MOVF BUFF0,W
BTFSC STATUS,Z
GOTO CONV32
CALL CISLICE
MOVWF DIGIT0
MOVF BUFF1,W
CALL CISLICE
MOVWF DIGIT1
GOTO CONV33
CONV32 MOVF BUFF1,W
BTFSC STATUS,Z
GOTO CONV33
CALL CISLICE
MOVWF DIGIT1
CONV33 MOVF BUFF2,W
CALL CISLICE
MOVWF DIGIT2
MOVF BUFF3,W
CALL CISLICE
MOVWF DIGIT3
GOTO COUNT

CISLICE ADDWF PROGCNT
RETLW B'10000001' ;0
RETLW B'10111011' ;1
RETLW B'00100101' ;2
RETLW B'00100011' ;3
RETLW B'00011011' ;4
RETLW B'01000011' ;5
RETLW B'01000001' ;6
RETLW B'10001011' ;7
RETLW B'00000001' ;8
RETLW B'00000011' ;9

CONVERR MOVLW B'01000101' ;Err_ indication
MOVWF DIGIT0
MOVLW B'01111101'
MOVWF DIGIT1
MOVWF DIGIT2
MOVLW 0xFF
MOVWF DIGIT3
GOTO COUNT

REFRESH BSF PORTA,3
MOVF DIGIT0,W
MOVWF PORTB
BCF PORTA,0
CALL TMRCHK
BSF PORTA,0
MOVF DIGIT1,W
MOVWF PORTB
BCF PORTA,1
CALL TMRCHK
BSF PORTA,1
MOVF DIGIT2,W
MOVWF PORTB
BCF PORTA,2
CALL TMRCHK
BSF PORTA,2
MOVF DIGIT3,W
MOVWF PORTB
BCF PORTA,3
CALL TMRCHK
NOP
NOP
NOP
RETURN

TMRCHK MOVLW 0x6F ;111x
MOVWF WORKA
NOP
NOP
NOP
TMRCHK2 BTFSS INTC,2 ;1
GOTO TMRCHK3
BCF INTC,2
INCF CNTW
GOTO TMRCHK4
TMRCHK3 NOP
NOP
NOP ;6
TMRCHK4 NOP ;1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP ;10
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP ;20
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP ;30
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ WORKA ;38
GOTO TMRCHK2
RETURN

END

CONFIG B'11111111111001' ;XT osc.
Användarvisningsbild
Icecap
Inlägg: 26636
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av Icecap »

OK, vi försöker igen att få dig på rätt spår:
Du har en HEX-fil som du vill programmera in i en PIC16F84A, detta betyder att all källkod du lägger in här är fullständig och total likgiltig, ta gärna bort den alltså.

Problemet är att din VM134 tillsamman med programmet du använder inte fungerar vilket inte har ett skvatt med HEX-filen att göra. Ytterligare finns det ingen information i HEX-filen om vilken processor som filen är till.

Jag har aldrig gillat Vellerman's programmeringsenheter så jag vill inte påstå att det var ett bra köp men likaväl:
Har du kollat att allt är rätt? Får VM134 de 15V som behövs? Har du byglat rätt?
Senast redigerad av Icecap 5 februari 2009, 09:30:29, redigerad totalt 1 gång.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av vfr »

Lägg inte in listningar utan att använda code-taggar. Det blir fullständigt oläsligt när man inte får kolumner i rätt position.

Om du har problem med att programmera kretsen så vet jag inte riktigt vad vi skall utläsa ur programkoden. Vad du egentligen försöker programmera spelar inte så stor roll om inte programmeraren kan få kontakt med kretsen ö.h.t på ett korrekt sätt. Wellemanprogrammerare är det många som haft problem med. Kör du den på en "riktig" serieport?

Problemet som många haft, är att den använder serieporten att "bitbanga" styrpinnar och inte att skicka riktig seriedata. Det kan ställa till med massor av olika problem, t.ex med USB-serieportar.
Användarvisningsbild
Odur
Inlägg: 267
Blev medlem: 11 september 2005, 14:36:49
Ort: Borås

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av Odur »

Ömm.. Den där programlistningen är ju inte samma som finns på hans sida: http://pira.cz/counter.asm
Sen var jag tvungen att lägga till en "org 0x00" för att få den att kompilera.

Efter det var det inget problem att progga den med min PicStart+..
Användarvisningsbild
Icecap
Inlägg: 26636
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av Icecap »

Och likaväl är koden alldeles överflödig då det inte har ett skvatt med den att göra.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av sodjan »

Det finns ett uppenbart och stort fel med koden, den saknar nästan totalt vettiga kommentarer !

> TMR EQU 01h
> PORTA EQU 5
> PORTB EQU 6

Det här är bara dumt, använd device-include filen...

Efter Odur's inlägg med en länk till original projektet (varför hade du inte
med det i första inlägget ?) så ser jag att han *både* har med INC filen
*och* EQU av alla register. Ja ja... :-)

Jag skulle föreslå att du tar det som ett intressant projekt att
dels snygga till koden, dels flyta den till t.ex en modernare
processor. Du kommer att lära dig massor på vägen (om det nu
är det som är målet). Men kanske så vill du bara få ihop "räknaren"
och då är det sannolikt enklare att någon skickar över en programmerad
16F84A så slipper du det pysslet.

Sen är det som de anda säger, koden är sannolikt helt ointressant
för att lösa det aktuella problemet. Att inlägget även saknar
all annan information för att eventuellt kunna svara på det gör
det ju inte lättare. Koppling, matning, använda programvaror,
felmeddelanden o.s.v.
Användarvisningsbild
Odur
Inlägg: 267
Blev medlem: 11 september 2005, 14:36:49
Ort: Borås

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av Odur »

PEO! (från Astronomiguiden va?)
Behöver du det så skickar jag gärna över en proggad krets till dig.
Användarvisningsbild
PEO! LULEÅ
Inlägg: 7
Blev medlem: 14 november 2008, 21:59:57
Ort: Luleå, Norrbotten
Kontakt:

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av PEO! LULEÅ »

Låter bra Odur, hur mycket vill du ha för en proggad krets? och ja, PEO från astronomiguiden. Vore kul om du kunde skicka med assembler koden så att jag kan få titta på den.

PEO!
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av sodjan »

Jag utgår från att Odur tänka bränna den kod som finns på den sida som han länkade till.
Du kan kolla den själv direkt, finns ju ingen anledning att skicka något någonstans.

Odur> Den där programlistningen är ju inte samma som finns på hans sida: http://pira.cz/counter.asm
Användarvisningsbild
Odur
Inlägg: 267
Blev medlem: 11 september 2005, 14:36:49
Ort: Borås

Re: Försöker igen alltså, angående PIC16F84A...

Inlägg av Odur »

Ja, jag hade tänkt att bränna det som fanns på sidan (http://pira.cz/counter.asm), om du inte vill att jag bränner något annat?
Vad jag vill ha? Tja, vad är en 16f84A värd idag egentligen? Du kan betala vad du tycker det är värt, bara det täcker portot så.
PM:a mig din adress så lägger jag den på brevlådan i helgen.
Skriv svar