31-12-2014, 09:35 PM
Hei, elektroonikud!
Ma olen siin juba paar päeva vaevelnud probleemi kallal, kuidas kirjutada läbi omtehtud bootloaderi PICi konfi baite. Konkreetne kivi on PIC18F46K80.
Kõik muu kirjutub ilusasti kuid konfiga tekib jama - esimene bait aardressil 0x30 00 00 on progejaga tagasi lugedes alati 00. Kommenteerides konfiala kirjutamise jupi välja, viga kaob. Muud konfibaidid kirjutatakse õigesti. Data kirjutamise puhvrisse tuleb õige (debug-väljatrükk näitab).
Toimetan nii:
- kustutan konfiala 15 baiti
- kirjutan baidid TBLWRT*+ käsuga
- sätin biti WR mis peaks käivitama kirjutamise
Enne kustutamist ja kirjutamist sean TBLPTR= 0x 30 00 00
JA ikka....
Mis loll viga see on, mida ma ei suuda näha?
Head aastavahetust !
/Felch
Ma olen siin juba paar päeva vaevelnud probleemi kallal, kuidas kirjutada läbi omtehtud bootloaderi PICi konfi baite. Konkreetne kivi on PIC18F46K80.
Kõik muu kirjutub ilusasti kuid konfiga tekib jama - esimene bait aardressil 0x30 00 00 on progejaga tagasi lugedes alati 00. Kommenteerides konfiala kirjutamise jupi välja, viga kaob. Muud konfibaidid kirjutatakse õigesti. Data kirjutamise puhvrisse tuleb õige (debug-väljatrükk näitab).
Toimetan nii:
- kustutan konfiala 15 baiti
- kirjutan baidid TBLWRT*+ käsuga
- sätin biti WR mis peaks käivitama kirjutamise
Enne kustutamist ja kirjutamist sean TBLPTR= 0x 30 00 00
JA ikka....
Mis loll viga see on, mida ma ei suuda näha?
PHP Kood:
clrwdt
movlw 0x30
movwf TBLPTRU ; kustuta senised confibaidid
clrf TBLPTRH
clrf TBLPTRL
BCF EECON1,EEPGD
BSF EECON1,CFGS
BSF EECON1,WREN ; kirjuta FLASHi, luba kirjutamine
BSF EECON1,FREE ; enable Erase operation
MOVLW 0x55 ; lahtilukustamine
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
BSF EECON1,WR ; kustuta blokk, prose hangub seniks.
nop
BCF EECON1,WREN ; keela kirjutamine FLASHi ja row erase
BCF EECON1,FREE
clrwdt
movlw 0x30
movwf TBLPTRU ; taasta aadress
clrf TBLPTRH
clrf TBLPTRL
LFSR .2,BootloaderBuf2 ; 0E baiti conffi kirjutada, soorts siin
movlw 0x0C
movwf Count
bldr_end3: movff POSTINC2,TABLAT
TBLWT*+
clrwdt
decfsz Count
goto bldr_end3
clrwdt
movlw 0x30
movwf TBLPTRU ; taasta aadress
clrf TBLPTRH
clrf TBLPTRL
; TBLRD*-
BCF EECON1,EEPGD
BSF EECON1,CFGS
call bwr_flsh2 ; käivitab kirjutamise tsükli - 64 baiti.
Head aastavahetust !
/Felch