dragonfighter
New Member
Hello all!
I took Lars Petersen's code and tried to program my pic.
The code sends alive message, then echoes characters at 9600 bps.
The code is compiled to hex by MPLAB IDE.
The problem is that some errors appear when I try to program the code using WinPIC or IC-Prog.
I don't think that it is a hardware issue as winpic initializes my pic succesfully and the interface test works.
WinPic Error log
UART TEST CODE
PLEASE HELP!!
I took Lars Petersen's code and tried to program my pic.
The code sends alive message, then echoes characters at 9600 bps.
The code is compiled to hex by MPLAB IDE.
The problem is that some errors appear when I try to program the code using WinPIC or IC-Prog.
I don't think that it is a hardware issue as winpic initializes my pic succesfully and the interface test works.
WinPic Error log
Info: Loading definitions for "PIC16F628A" from devices.ini .
Info: PIC16F628A added by Leonardo, different device ID,
Info: and different 'Bulk Erase' procedure than 16F628 !
Parsed "C:\Program Files\Microchip\MPLAB IDE\Device\PIC16F628A.dev" : found 22 bit combinations in 8 configuration bit groups .
Initialising PIC-Programmer: Success.
Testing: delay(500ms) took 0.50 seconds, timer_freq=3006.8800 MHz ... ok
Programming...
Erasing ("bulk" or "chip") ...
Programming CODE, 0x000000..0x000042
Verifying 0x000000..0x000042
Verify Error: 000000: read 003FFF, wanted 003007
Verify Error: 000001: read 003FFF, wanted 00009F
Verify Error: 000002: read 003FFF, wanted 003000
Verify Error: 000003: read 003FFF, wanted 000085
More Verify Errors, unable to list all (total=67)
Programming CONFIG, 0x002000..0x002008
Verifying 0x002000..0x002007
Verify Error: 002007: read 003FFF, wanted 003F50
Programming CONFIG-WORD
Verifying 0x002007..0x002007
Verify Error: 002007: read 003FFF, wanted 003F50
ERROR: Programming FAILED !
UART TEST CODE
LIST P=16F628A, R=DEC ; Use the PIC16F628A and decimal system
processor 16F628A
#include <P16F628A.INC> ; Include header file
__config _INTOSC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_OFF & _BODEN_ON & _MCLRE_OFF & _CP_OFF
;
CBLOCK 0x20 ; Declare variable addresses starting at 0x20
dataL
ENDC
;
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
movlw 7
movwf CMCON ; CMCON=7 set comperators off
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movlw b'00000000' ; set up portA
movwf PORTA
movlw b'00000100' ; RB2(TX)=1 others are 0
movwf PORTB
bsf STATUS,RP0 ; RAM PAGE 1
movlw 0xFF
movwf TRISA ; portA all pins input
movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output
movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
;
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ; brgh = high (2)
movwf TXSTA ; enable Async Transmission, set brgh
bcf STATUS,RP0 ; RAM PAGE 0
movlw b'10010000' ; enable Async Reception
movwf RCSTA
;
; ------------------------------------
; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
clrf dataL
settle decfsz dataL,F
goto settle
movf RCREG,W
movf RCREG,W
movf RCREG,W ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;
call message ; send "16F628 alive"
loop call receive ; wait for a char
call send ; send the char
goto loop
;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive btfss PIR1,RCIF ; (5) check for received data
goto receive
movf RCREG,W ; save received data in W
return
;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send movwf TXREG ; send data in W
TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere
bcf STATUS,RP0 ; RAM PAGE 0
return
;
; -------
; MESSAGE
; -------
;
message movlw '1'
call send
movlw '6'
call send
movlw 'F'
call send
movlw '6'
call send
movlw '2'
call send
movlw '8'
call send
movlw ' '
call send
movlw 'a'
call send
movlw 'l'
call send
movlw 'i'
call send
movlw 'v'
call send
movlw 'e'
call send
movlw 0x0D ; CR
call send
movlw 0x0A ; LF
call send
return
END
PLEASE HELP!!
Last edited: