wielklem
RTFM, dan pas vragen...
morning,
ik heb aan de hand van wat zoekwerk een aantal pic programmers hier staan, een zelfbouw versie en een van velleman (lekker handig dacht ik).
nu heb ik alleen een klein probleempje met het programmeren van de PIC-jes zelf.
voor de volledigheid, ik gebruik de volgende software:
microbasic voor het compileren van de HEX files
en een programma dat een van mijn docenten heeft geschreven
(download op: http://www.icim.fnt.hvu.nl/et/docenten/Bent/programmer/programmer.html )
het branden van de PIC wil prima, alleen dan komt de welbekende term;
hij doet niet wat ik wil.
als je de code van de pic vergelijkt met de code in de hexfile, klopt het.
maar wat de pic zou moeten doen, doet hij niet.
wat doe ik fout?
groet,
Willem
als voorbeeld het volgende programma:
;dit programma zou op poort B alle uitgangen om de sec. moeten laten "knipperen"
GOTO main
;--- procedure main ---
main:
BCF STATUS,RP1
BSF STATUS,RP0
CLRF TRISB
MOVLW 255
BCF STATUS,RP0
MOVWF PORTB
MOVLW 11
MOVWF STACK_0
MOVLW 255
MOVWF STACK_1
MOVLW 255
MOVWF STACK_2
DECFSZ STACK_0,F
GOTO $+2
GOTO $+8
DECFSZ STACK_1,F
GOTO $+2
GOTO $+4
DECFSZ STACK_2,F
GOTO $-1
GOTO $-5
GOTO $-9
MOVLW 51
MOVWF STACK_0
MOVLW 255
MOVWF STACK_1
DECFSZ STACK_0,F
GOTO $+2
GOTO $+4
DECFSZ STACK_1,F
GOTO $-1
GOTO $-5
MOVLW 136
MOVWF STACK_0
DECFSZ STACK_0,F
GOTO $-1
nop
nop
CLRF PORTB
MOVLW 11
MOVWF STACK_0
MOVLW 255
MOVWF STACK_1
MOVLW 255
MOVWF STACK_2
DECFSZ STACK_0,F
GOTO $+2
GOTO $+8
DECFSZ STACK_1,F
GOTO $+2
GOTO $+4
DECFSZ STACK_2,F
GOTO $-1
GOTO $-5
GOTO $-9
MOVLW 51
MOVWF STACK_0
MOVLW 255
MOVWF STACK_1
DECFSZ STACK_0,F
GOTO $+2
GOTO $+4
DECFSZ STACK_1,F
GOTO $-1
GOTO $-5
MOVLW 136
MOVWF STACK_0
DECFSZ STACK_0,F
GOTO $-1
nop
nop
GOTO main
GOTO $
;---endproc---
logic
Maar dat is logisch ...
Welke PIC heb je geprogrammeerd ?
Hij doet niet wat 'ie moet doen.
Wat gebeurt er dan wel ?
Gaan er uberhaupt LED's aan ?
(ik neem aan dat je LED's aan de uitgangen hebt?)
wielklem
RTFM, dan pas vragen...
ik heb een PIC 16f628, met idd led's er aan
wat hij doet is helemaal niets.
nu heb ik even zitten stoeien en nog wat lectuur door zitten spitten:
het probleem was, dat er ook nog wat anders gezet moest worden.
bij de f84 is dit niet nodig (naar blijkt)
Het is een 16F628 en daarvoor moet je ook nog een andere poort zetten en wel de comparatoren!
;Turn off comparators
movlw 0x07
movwf CMCON
;in bank 0!!!!!
dus hierbij het probleem opgelost.
groet,
Willem
ps. dit was niet in de manual van de 62X te vinden, de 627 heeft hier ook "last" van.
Willie Worteltje
Er zijn 10 soorten mensen. Mensen die binair begrijpen en mensen die het niet begrijpen... http://home.versatel.nl/edithenwilliam/william.htm
nog een paar vragen wielklem.
Schrijf je deze code zelf in assembler of komt dit uit een compiler. Ik vind de structuur nogal onoverzichtelijk.
Waarom wordt de trisb in de main routine elke keer beschreven. Eén keer in de init is toch voldoende?
Waar heb je de code
movlw 0x07
movwf CMCON
geplaatst?
Dit is geen dissen maar informatief bedoeld.
wielklem
RTFM, dan pas vragen...
de code:
movlw 0x07
movwf CMCON
wordt in de ""ini" van de code geplaatst (waar alle poorten worden gedeclareerd)
de code wordt gegenereerd door mijn progje (eigenlijk pic basic) maar deze heeft als extra funcie, ook de ass. code te laten zien (zie mijn eerste post)
gr.
Willem
ps. dat progje is echt heel erg simpel, basic invoeren en je hex file is klaar!
1 nadeel, 200+ pagina's aan manual.
Willie Worteltje
Er zijn 10 soorten mensen. Mensen die binair begrijpen en mensen die het niet begrijpen... http://home.versatel.nl/edithenwilliam/william.htm
Hint: Als dat de code van de main routine is, dan zie ik dat de trisb elke keer wordt aangeroepen. Volgens mij is dit overbodig en kan je dit ook in de 'ini' zetten.
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Op 28 januari 2005 20:37:35 schreef wielklem:
ps. dit was niet in de manual van de 62X te vinden, de 627 heeft hier ook "last" van.
Microchip heeft erge "last" van slechte datasheets. Soms zelfs belabberd te noemen.
.. ps. dit was niet in de manual van de 62X te vinden, de 627 heeft hier ook "last" van.
Op pagina 29 van de manual van MicroChip staat in de rechterkolom een keurig voorbeeld hoe dat moet (Example 5-1: Initializing PORTA).
Goed lezen is wel belangrijk!