Autor Tema: Código para grabar la eeprom de un 16f876  (Leído 4648 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Código para grabar la eeprom de un 16f876
« en: 27 de Marzo de 2007, 15:21:23 »
wuenas.. estoy intentando los valores 0x35,0x38,0x30,0x36,0x39,0x35,0x38,0x31. en las primeras 8 posiciones de la eeprom, es de decir, desde la direccion 0x00 hasta la 0x07.

el codigo no funciona y nose pq. Tengo la subrutina escriu_eeprom, que escribe en la eeprom el valor VALUE en la direccion ADDR, y si no hay ningun error esta copiada del datasheet.




   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

;El pic que farem servir es un 16F876
   LIST      P=16F876

;Afegim les llibreries necesaries
   INCLUDE  <P16F876.INC>

#DEFINE led PORTA,0

ADDR equ 0x21
VALUE equ 0x22


;Aquesta rutina escriu a la eeprom la dada VALUE a l'adreça ADDR


;Definim uns alias per els ports que utilitzarem, son directives per tant no generen codi
;#DEFINE WR     PORTC,3
ORG 0x00

   bcf led

   banksel ADDR
   movlw .0
   movwf ADDR
   movlw 0x35
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .1
   movwf ADDR
   movlw 0x38
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .2
   movwf ADDR
   movlw 0x30
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .3
   movwf ADDR
   movlw 0x36
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .4
   movwf ADDR
   movlw 0x39
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .5
   movwf ADDR
   movlw 0x35
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .6
   movwf ADDR
   movlw 0x38
   movwf VALUE
   call escriu_eeprom
   banksel ADDR
   movlw .7
   movwf ADDR
   movlw 0x31
   movwf VALUE
   call escriu_eeprom
   goto fi

escriu_eeprom
   bsf STATUS,RP1
   bsf STATUS,RP0
   btfsc EECON1,WR
   goto $-1
   bcf STATUS,RP0
   movf ADDR, W
   movwf EEADR
   movf VALUE,w
   movwf EEDATA
   bsf STATUS,RP0
   bcf EECON1,EEPGD
   bsf EECON1,WREN
   bcf INTCON,GIE
   movlw 0x55
   movwf EECON2
   movlw 0xAA
   movwf EECON2
   bsf EECON1,WR
   bsf INTCON,GIE
   bcf EECON1,WREN
return

fi   
   bsf led
END            
; Fi del programa.
   

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Código para grabar la eeprom de un 16f876
« Respuesta #1 en: 27 de Marzo de 2007, 19:49:32 »
Si, lo que quieres es solo grabar estos valores en la eeprom interna, prueba con:

Código: [Seleccionar]
    ORG 02100h ; Dirección del Banco EEPROM
        DE 0x35
        DE 0x38
        DE 0x30
        DE 0x36
        DE 0x39
        DE 0x35
        DE 0x38
        DE 0x31
    END
Saludos

Desconectado Kedutpic

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 219
    • Microelectronica
Re: Código para grabar la eeprom de un 16f876
« Respuesta #2 en: 27 de Marzo de 2007, 20:53:54 »
bueno aca hay otra forma de hacerlo espero que lo pruebes


Código: ASM
  1. LIST P=16F877A
  2.                 INCLUDE <P16F877A.INC>
  3.  
  4. DIRECCION       EQU 0X10
  5.  
  6.                 ORG 0X2007
  7.                 DW 0X3F7A
  8.                 ORG 0x08
  9.                
  10.                 MOVLW 0X00    
  11.                 MOVWF DIRECCION  
  12.                 BANKSEL EEADR
  13.                 MOVLW 0X00       ; comienza en la direccion 00 de la EEPROM
  14.                 MOVWF EEADR
  15.  
  16. A1              MOVFW DIRECCION
  17.                 CALL PASOS
  18.                 MOVWF EEDATA
  19.                 BANKSEL EECON1
  20.                 BSF EECON1,WREN
  21.                
  22.                 MOVLW 0X55
  23.                 MOVWF EECON2
  24.                 MOVLW 0XAA
  25.                 MOVWF EECON2
  26.                
  27.                 BSF EECON1,WR
  28.                 BANKSEL PIR2
  29.                 BTFSS PIR2,EEIF
  30.                 GOTO $-1
  31.                 BCF PIR2,EEIF
  32.                 BANKSEL EEADR
  33.                 INCF EEADR,F
  34.                 INCF DIRECCION,F
  35.                 MOVFW DIRECCION
  36.                 XORLW .5
  37.                 BTFSS STATUS,Z
  38.                 GOTO A1
  39.                 GOTO $
  40. PASOS      ADDWF PCL,F
  41.                 DT 0X0A,0X09,0X05,0X06,0X00
  42.                 END

PD : Recuerda que  para que los datos se graben en la eeprom del pic , tienes que correr el programa ( alimentar el pic , con su respectivo XTAL ,  claro si tienes el PIC16F877A el cual yo he usado para grabar :)  , creo que es  igual para el 16F876  :mrgreen: )
Actel  -  VHDL un nuevo mundo por descubrir :D
Grupo de Microelectronica - CIDI - UTP
Visitanos en : http://ue.accesus.com

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Re: Código para grabar la eeprom de un 16f876
« Respuesta #3 en: 28 de Marzo de 2007, 09:10:55 »
gracias por las respuestas,

solo con poner esto ya se grabará? cuando se grabará? en el momento que grabe el pic con el ic-prog? o cuando lo ejecute en mi placa?


Si, lo que quieres es solo grabar estos valores en la eeprom interna, prueba con:

Código: [Seleccionar]
    ORG 02100h ; Dirección del Banco EEPROM
        DE 0x35
        DE 0x38
        DE 0x30
        DE 0x36
        DE 0x39
        DE 0x35
        DE 0x38
        DE 0x31
    END
Saludos

un saludo!

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Código para grabar la eeprom de un 16f876
« Respuesta #4 en: 28 de Marzo de 2007, 09:30:46 »
se grabara en el momento q quemes el pic, apareceran los valores en la eeprom segun como lo escribistes, ahora, el detalle es q si solamente quieres esos valores en la eeprom y no van a cambiar, pues de ser asi el codigo de yoel sera suficiente, pero si durante el desarrollo de tu aplicacion esos valores de la eeprom van a modificarse tienes q optar por la alternativa de juan (kedutpic). :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Re: Código para grabar la eeprom de un 16f876
« Respuesta #5 en: 28 de Marzo de 2007, 09:56:19 »
tienen que ser los mismo hasta el 2010, y entonces dudo que nadie se acuerde de mi proyecto asi que es más que suficiente....

gracias!

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Re: Código para grabar la eeprom de un 16f876
« Respuesta #6 en: 28 de Marzo de 2007, 11:07:33 »
he podido grabar correctamente la eeprom, el problema ahora es que quiero grabar(la veces que sea) mi programa en la memoria de código, pero cada vez que grabo el pic, me borra el contenido de la eeprom!
tengo 2 programas, uno graba los datos en la eeprom, y lo hace correctamente
el segundo es el programa propiamente que solo tendria que leer de la eeprom, pero el ic-prog le da por borrar el dispositivo antes de grabar y no veo donde desactivarlo.

alguna solución?

gracias
« Última modificación: 28 de Marzo de 2007, 11:48:37 por bones18 »

Desconectado Y@el

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 415
Re: Código para grabar la eeprom de un 16f876
« Respuesta #7 en: 29 de Marzo de 2007, 10:13:58 »
Parece que no te queda otra, que inializar el valor de la eeprom, en cada programacion.

Recuerdo que antiguamente con el epicwin, cuando grababa, no te cambiaba los valores de la eeprom, por mas q le le dieras a borrar toda la memoria. Tal vez deberias probar con otro grabador.

El problema con el IC-PROG, esta en que llena toda la memoria, y luego hace un volcado total de esta sobre el PIC. A diferencia del EPICWINN y el WINPIC800. Que seleccionan solo los bits a Grabar y de ahi hacen la grabacion al PIC. Esto hace que estos ultimos sean mas rapidos al grabar que el IC-PROG.

Saludos,

Yoel

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Código para grabar la eeprom de un 16f876
« Respuesta #8 en: 29 de Marzo de 2007, 11:43:44 »
Lo que no entiendo, es por que no incluyes en tu programa al final los data que te interesa meter en la eeprom, asi tendrías un solo programa que graba tanto el código como la eeprom.

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado bones18

  • PIC12
  • **
  • Mensajes: 54
Re: Código para grabar la eeprom de un 16f876
« Respuesta #9 en: 30 de Marzo de 2007, 05:04:10 »

Lo tengo todo en un solo programa y funciona correctamente, pero lo que me inquietaba era el hecho que el ic-prog borra toda la memoria, incluida la eeprom, cada vez que se programa el pic, aun cuando no se toque nada de esa memoria.

probaré los otros softwares que me has recomendado

gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Código para grabar la eeprom de un 16f876
« Respuesta #10 en: 30 de Marzo de 2007, 21:24:02 »
pero si durante el desarrollo de tu aplicacion esos valores de la eeprom van a modificarse tienes q optar por la alternativa de juan (kedutpic). :-)

Creo que si los valores no se modificarán, no tiene mayor sentido usar la eeprom.  Yo definiría una constante en el software, por una sencilla y muy práctica razón -> La Flash es mucho más robusta que la EEPROM y al principio de que no hay que complicarse la vida cuando no es necesario.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything