dejan5 nastavnik, tehnička škola
Član broj: 173365 Poruke: 4 *.dynamic.sbb.co.yu.
|
Upis u eeprom za Pic16F628A
Evo deo listinga, tj. poziva za upis u eeprom i samog ciklusa upisa u isti:
UpisEEprom
call Wait
movf podatak1,0 ;podatak u W
MOVWF CONFIG_DATA ;priprema podatak1 za upis
movf BROJEE,0
MOVWF CONFIG_ADDR ;adresa u eepromu na koju se snima
call Upis
movf podatak2,0
MOVWF CONFIG_DATA
incf BROJEE,1 ;priprema podatak2 za upis
movf BROJEE,0
MOVWF CONFIG_ADDR
call Upis
incf BROJEE,1
movlw d'112' ;provera lokacije EEproma
xorwf BROJEE,0 ;ukupno za upis 112(0-111)
btfsc STATUS,2
clrf BROJEE
return
;DATA EEPROM WRITE
; podesi adresu i podatak
Upis
MOVF CONFIG_ADDR,W ;priprema adrese u EEprom za upis
BSF STATUS, RP0 ; Bank 1
MOVWF EEADR ; ADRESA EEPROM LOKACIJE
BCF STATUS, RP0 ; Bank 0
MOVF CONFIG_DATA,W ; Podatak koji se upisuje(podatak1...)
BSF STATUS, RP0 ; Bank 1
MOVWF EEDATA ; PODATAK ZA UPIS
BSF EECON1,WREN ; Dozvola Upisa
BCF INTCON, GIE ; Iskljuci INTerapte
MOVLW 0X55 ;
MOVWF EECON2 ; Prvi kljuc
MOVLW 0XAA ;
MOVWF EECON2 ; Drugi kljuc
BSF EECON1,WR ; Set WR bit - UPISI
btfsc EECON1,WR
goto $-1
nop ;probano i bez ovoga
BCF EECON1, WREN ; Zabrana Upisa
BSF INTCON,GIE ; Dozvoli INTerapte.
;PROVERA UPISA
MOVF EEDATA, W ; last written value in 'W'
BSF EECON1, RD ; start read at current address
SUBWF EEDATA, W ; subtract W from EEDATA
BTFSS STATUS, Z ; ZERO flag set?
GOTO write_error ; No, there was a write-error
BCF STATUS, RP0 ; Bank0
return ; continue program
write_error
NOP
GOTO INIT ;ovo je test
Dakle, ne verujem da postoji greška u ovim potprogramima (jer su rutine iz datascheet-a), ali u MPLAB-u 7.62 i na pločici(u praksi) nema upisa u eeprom. Prilikom simulacije korak po korak u MPLAB-u dolazim na labelu write_error, znači nema upisa.
Potprogram UpisEEprom lepo puni registre, dok u potprogramu Upis registar, EECON2 se ne puni ključem, a EECON1 lepo setuje bitove WREN i WR. Ipak upis u zadatu lokaciju CONFIG_ADDR - EEADR ne postoji.
Gde je greška?????
Da li postoji mogućnost da PLC prebaci zbog dužine celog programa (kao sa tabelom)? Program zauzima preko 500 bajta.
programske memorije.
|