EEprom pic16f688

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

EEprom pic16f688

Mensagempor Tiago Pereira » 07 Jun 2014 18:38

Boa noite Pessoal;

Estou com com problema na gravação \ leitura da eeprom do pic16F688.
como mando gravar\ler em seguida "" aparentemente está ok o programa.

não achei nda no forum ref.. a eeprom 16f688


1 teste :
aparentemente ta gravando e lendo ok.

asm code
GRAVA_TECLA:

CLRF PORTC
CLRF DADO_LIDO_MEMO
; GOTO TEEE
MOVLW 25H
MOVWF ENDE_MEMO
MOVLW B'11111010'
MOVWF DADO_MEMO ; dado a ser gravado
CALL GRAVA_MEMO
;CALL DELAY_INICIA
TEEE:
CLRF DADO_LIDO_MEMO
CLRF DADO_MEMO
MOVLW 25H
MOVWF ENDE_MEMO
CALL LE_MEMO
MOVF DADO_LIDO_MEMO,W
MOVWF PORTC
CALL DELAY_INICIA
GOTO $
RETURN


2. teste o dado lido não correspoende ao dado gravado anteriormente.


asm code
GRAVA_TECLA:

CLRF PORTC
CLRF DADO_LIDO_MEMO
GOTO TEEE
MOVLW 25H
MOVWF ENDE_MEMO
MOVLW B'11111010'
MOVWF DADO_MEMO ; dado a ser gravado
CALL GRAVA_MEMO
;CALL DELAY_INICIA
TEEE:
CLRF DADO_LIDO_MEMO
CLRF DADO_MEMO
MOVLW 25H
MOVWF ENDE_MEMO
CALL LE_MEMO
MOVF DADO_LIDO_MEMO,W
MOVWF PORTC
CALL DELAY_INICIA
GOTO $
RETURN




asm code
LE_MEMO:
BANK0
MOVF ENDE_MEMO,W
BANK1
MOVWF EEADR ; Data Memory; Address to read
BCF EECON1, EEPGD ; Point to DATA; memory
BSF EECON1, RD ; EE Read
NOP
NOP

BTFSC EECON1, RD
GOTO $-1
MOVF EEDAT, W
BSF EECON1, RD
BANK0
MOVWF DADO_LIDO_MEMO
RETURN

GRAVA_MEMO:
BANK0
MOVF ENDE_MEMO,W
BANK1
MOVWF EEADR ; Data Memory Address to write
BANK0
MOVF DADO_MEMO,W
BANK1
MOVWF EEDAT ; Data Memory Value to write

BCF PIE1,EEIE
BCF EECON1, EEPGD ; Point to DATA memory
BSF EECON1, WREN ; Enable writes
BCF INTCON, GIE ; Disable INTs.
MOVLW 055h ;
MOVWF EECON2 ; Write 55h
MOVLW 0AAh ;
MOVWF EECON2 ; Write AAh
BSF EECON1, WR ; Set WR bit to begin write
BCF INTCON, GIE ; Enable INTs.
NOP
NOP

BTFSC EECON1, WR
GOTO $-1
BCF EECON1, WREN
BANK0

;BTFSS PIR1,EEIF
;GOTO $-1
;BCF PIE1,EEIE
RETURN

OBS. independete se gravo usando interrupão\eepron ou espero EEcon1,WR =0. da o memso erro.

No __config ta tudo desabilitado para codigo de proteção, tambem teentei a sorte habilitando mesmo e nada feito.


Obrigo Tiago
Tiago Pereira
 
Mensagens: 2
Registrado em: 07 Jun 2014 18:09

Re: EEprom pic16f688

Mensagempor andre_luis » 07 Jun 2014 23:47

Se no 1o caso você comentou o comando GOTO e funcionou, qual seria a utilidade do 2o caso ?




+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: EEprom pic16f688

Mensagempor Tiago Pereira » 08 Jun 2014 00:30

andre_teprom escreveu:Se no 1o caso você comentou o comando GOTO e funcionou, qual seria a utilidade do 2o caso ?




+++


Andre;

Então no 1 caso\teste" eu gravo e mando ler em seguida e jogo o valor lido em PORTC pra ver se esta correto o dado lido, considerando que eu sei qual dado eu mandei gravar ...

o goto $ e apenas para travar o programa ai ... para testar a rotina e ter certeza que erro não e em outra parte do programa e sim no rotina de gravação e\ou lida.


resumindo >
1 teste \ copilação que faço e .
gravar dado e ler na memoria e jogar em portc (acender leds).
** por isso desabilito goto teee
neste 1 teste dado jogado em portC = dado gravado.

2 teste \ copilação que faço e .
apenas leio dado na memoria e jogo em portc (acender leds).
** por isso haabilito goto teee
neste 2 teste dado jogado em portC = dado gravado na rotina\teste 1.


OBS. Sei que port C tem 6 "bits" por isso qdo jogo dado lido em PortC considero apenas 5 LSB do port c( ligado ao led) para efeito de teste.

Duvida que surgiu agora, toda vez que copilo \ gravo um programa a eepron e apagada com FF ? ou mesma m antem dados gravado anteriormente

Tiago
Tiago Pereira
 
Mensagens: 2
Registrado em: 07 Jun 2014 18:09

Re: EEprom pic16f688

Mensagempor RobL » 08 Jun 2014 10:15

Duvida que surgiu agora, toda vez que copilo \ gravo um programa a eepron e apagada com FF ? ou mesma m antem dados gravado anteriormente


Isto depende de sua configuração, na IDE utilizada, ao gravar. Pode configurar para apagar a eeprom com 0xff ou deixar como está.
Procure onde está esta configuração em sua IDE.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Re: EEprom pic16f688

Mensagempor RobL » 08 Jun 2014 10:27

asm code
BCF     INTCON, GIE ; Disable INTs.
MOVLW 055h ;
MOVWF EECON2 ; Write 55h
MOVLW 0AAh ;
MOVWF EECON2 ; Write AAh
BSF EECON1, WR ; Set WR bit to begin write
BCF INTCON, GIE ; Enable INTs.
NOP
NOP


Não examinei seu código mas note que você não religou a interrupção após gravar. Digitou errado BCF em vez de BSF.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x