Autor Tema: Problemas en escribir EEPROM del 12F629  (Leído 3531 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Problemas en escribir EEPROM del 12F629
« en: 22 de Abril de 2008, 13:49:53 »
Hola muchachos.

Sigo con lo del pic 12F629. Ahora me he encontrado con el inconveniente de que no se puede escribir la EEPROM con el write_eeprom(). Mirando el datasheet encontre que hay que colocar una secuencia antes de poder escribir la memoria.

Código: [Seleccionar]
bsf       STATUS,RP0 ;Bank 1
bsf       EECON1,WREN ;Enable write
bcf       INTCON,GIE ;Disable INTs
movlw     55h ;Unlock write
movwf     EECON2 ;
movlw     AAh ;
movwf     EECON2 ;
bsf       EECON1,WR ;Start the write
bsf       INTCON,GIE ;Enable INTS

Lo que hice fue asignar los valores a los registros de la siguiente manera:

Código: [Seleccionar]
#byte EECON1 = 0x9c
#byte EECON2 = 0x9d
#bit  WR = EECON1.1
#bit  WREN = EECON1.2

y luego en el programa hice lo siguiente:

Código: [Seleccionar]
EECON2 = 0x55;
EECON2 = 0xAA;
WREN = true;
for(i=0;i<=2;i++)
{
write_eeprom(i,dac_old[i]);
}

Donde dac_old[3] = {'1','2','3'} pero, no se escribe nada en la EEPROM del micro :(
El datasheet dice que el EECON2 no es un registro fisico, entonces: sera por eso que no se lo puede definir de la manera #byte EECON2 = 0x9d?

Si alguien a escrito con exito la EEPROM del 12F629, por favor ayudeme!!!!! :-/

Gracias de antemano.
El papel lo aguanta todo

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Problemas en escribir EEPROM del 12F629
« Respuesta #1 en: 22 de Abril de 2008, 14:09:38 »

  Hola, Te equivocaste de subforo, esto es  Lenguaje C para Microcontroladores  :D  pero bueno.


        En su tiempo hice un programa para probar la escritura de la eeprom, te lo pego aqui a ver si te sirve, lo  grabas en el micro y luego utilizas el mismo programador para verificar que ha sido grabado en la memoria.

       saludos


   
Código: [Seleccionar]
list p=12f629
#include<p12f629.inc>
indf equ 0x00
status equ 0x03
gpio equ 0x05
intcon equ 0x0b
cmcon equ 0x19
optionreg equ 0x81
ansel equ 0x9f
trisio equ 0x85
osccal equ 0x90
wpu equ 0x95
ioc equ 0x96
eedata equ 0x9a
eeadr equ 0x9b
eecon1 equ 0x9c
eecon2 equ 0x9d
count1 equ 0x20
count2 equ 0x21
count3 equ 0x22
count4 equ 0x23
count5 equ 0x24
org 0x00

inicio
movlw b'00000000'
movwf intcon
bsf status,5
movlw b'00000000'
movwf optionreg
movlw b'00000000'
movwf osccal
movlw b'00000000'
movwf wpu
movlw b'00000000'
movwf ioc
movlw b'00000000'
movwf cmcon
movlw b'00000000'
movwf ansel
movlw b'00001000'
movwf trisio
bcf status,5
call retardo2
bsf gpio,0
call retardo2
bsf gpio,1
call retardo2
bsf gpio,2
call retardo2
bcf gpio,0
call retardo2
bcf gpio,1
call retardo2
bcf gpio,2


movlw .0
movwf eeadr
movlw .0
movwf eedata
graba
bsf status,5
bsf eecon1,2
movlw h'55'
movwf eecon2
movlw h'aa'
movwf eecon2
bsf eecon1,1
nof btfsc eecon1,1
goto nof
incf eedata
incf eeadr
movlw .128
xorwf eedata,0
btfss status,2
goto graba
bcf status,5
fin bsf gpio,0
call retardo2
bsf gpio,1
call retardo2
bsf gpio,2
call retardo2
bcf gpio,0
call retardo2
bcf gpio,1
call retardo2
bcf gpio,2
call retardo2
bsf gpio,0
call retardo2
bsf gpio,1
call retardo2
bsf gpio,2
call retardo2
bcf gpio,0
call retardo2
bcf gpio,1
call retardo2
bcf gpio,2
call retardo2
goto fin

retardo2
movlw .255
movwf count4
d5 movlw .255
movwf count5
d4 decfsz count5,1
goto d4
decfsz count4,1
goto d5
return
end


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas en escribir EEPROM del 12F629
« Respuesta #2 en: 22 de Abril de 2008, 17:53:00 »
Hola Rulo.

Yo programo en C tambien  :lol:, solo que la secuencia que dice que hay que colocar esta en ASM, el resto del codigo esta en C. Viendolo bien, el mensaje si pareceria para el rincon del asm!!! :D

Intente colocar el el codigo en asm en el programa en C y no me ha corrido aun, me sale un error, lo raro es que si estoy definiendo los registros.... ahi si no se que pasa, porque probe el ejemplo del CCS ex-glint.c y ese corre bien.... no se en que estare fallando.

Lo extrano es que lo monte (para salir de las dudas) y adivina que......... si escribe en la EEPROM!!!! parece ser problema del Proteus (y me equivocaria de subforo ahi!!!! :D)

Si de pronto tienes algun programa que tenga asm embebido en C, porfa postealo listo?

Gracias por contestar Rulo.
El papel lo aguanta todo

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Problemas en escribir EEPROM del 12F629
« Respuesta #3 en: 23 de Abril de 2008, 01:39:10 »


    hola, bueno pues si trabajas con ccs con poner write_eeprom (address, value); basta para grabar en la eeprom, o que es exactamente lo que quieres hacer?''

        Pues no he utilizado mucho ASM con CCS, pero aca van unas lineas que llegue a utilizar.

Citar
#define osccal 0x90
#define status 0x03
    void main()
    {
#ASM
   bsf status,5
   movlw 35
   movwf osccal
   bcf status,5
#ENDASM


      suerte y Saludos.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problemas en escribir EEPROM del 12F629
« Respuesta #4 en: 23 de Abril de 2008, 11:22:39 »
Hola Rulo.

La idea es guradar un dato en la EEPROM del micro, pero siempre simulo primero la rutina en el ISIS y verifico con el debugger :mrgreen:, y ahi fue el susto :shock: porque no cambiaba los datos en la EEPROM, solo los leia pero no los escribia.

Luego, montandolo en HW, ya probe que si la escribe, asi que parece ser problema del simulador.

Gracias por tu tiempo y tus respuestas.
El papel lo aguanta todo


 

anything