Autor Tema: Problema al usar memoria eeprom en ccs  (Leído 3653 veces)

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

Desconectado Braegor

  • PIC10
  • *
  • Mensajes: 1
Problema al usar memoria eeprom en ccs
« en: 15 de Noviembre de 2018, 16:39:53 »
Hola a todos,

Estoy intentando hacer un programa en ccs para el microcontrolador PIC16f916 que me permita guardar el valor de una variable en la memoria eeprom. En principio creia que seria facil de conseguir utilizando las funciones que aparecen en el manual de ccs:
read_eeprom(adress)
write_eeprom (address,value)

Sin embargo, no se que hago mal al utilizar estas instrucciones o si me falta por configurar algo en mi programa, pero no consigo utilizar efectivamente las instrucciones de la eeprom y con mis escasos conocimientos en c no he conseguido dar con la solución. Esta es la primera parte del código que estoy utilizando:
Código: [Seleccionar]
#include <16f916.h>
#fuses NOPROTECT,NOCPD,NOWDT,XT,BROWNOUT
#use delay (clock=4000000)
#use rs232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7)

#byte port_a=5
#byte port_b=6
#byte port_c=7

int serie;
int modo=0;
int reset=1;
int g;

#int_rda
Modo_leds()
{serie=getc();
if(modo<5)
{modo++;
reset=2;
}
if(modo>=5&reset==1)
{modo=0;
}
reset=1;
write_eeprom(0,modo);
write_eeprom(1,12);
}

main()
{
set_tris_a(0b00000000);
set_tris_b(0b00000000);
set_tris_c(0b00000001);
 
enable_interrupts (int_rda);
enable_interrupts (global);

g=read_eeprom(1);
if(save!=12)
modo=0;
else
modo=read_eeprom(0);

Como veis es un programa sencillo de una secuencia, despues de esto en el bucle modifico las salidas dependiendo del estado de la variable "modo", esa parte me funciona correctamente, así como la interrupción cuando no utilizo las instrucciones de la memoria. Sin embargo al añadir la parte del código para leer y escribir la eeprom, no solo no puedo guardar el valor y leerlo mas tarde, si no que la variable "modo" se queda bloqueada en el valor 0 y deja de cambiar con la interrupción externa.

Espero que alguien pueda echarme un cable con esto.

Muchas gracias de antemano.

Desconectado Drakarys

  • PIC10
  • *
  • Mensajes: 1
Re:Problema al usar memoria eeprom en ccs
« Respuesta #1 en: 23 de Octubre de 2019, 11:21:08 »
Hola, tengo el mismo problema. Veo que esto es de hace mucho tiempo ya, pero si en su momento diste con la solución, me gustaría saber cual es, me ayudaría mucho. Gracias.

Desconectado CTaddey

  • PIC10
  • *
  • Mensajes: 3
Re:Problema al usar memoria eeprom en ccs
« Respuesta #2 en: 23 de Octubre de 2019, 13:54:14 »
IIRC los pics necesitan respetar una secuencia antes de poder escribir a la EEPROM, para protegerla de escrituras accidentales.
Hay que escribir un par de flags antes de poner el comando para escribir en la eeprom.(esta en el manual)
Al menos asi era en assembler para el 16f84.
Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema al usar memoria eeprom en ccs
« Respuesta #3 en: 23 de Octubre de 2019, 14:50:51 »
IIRC los pics necesitan respetar una secuencia antes de poder escribir a la EEPROM, para protegerla de escrituras accidentales.
Hay que escribir un par de flags antes de poner el comando para escribir en la eeprom.(esta en el manual)
Al menos asi era en assembler para el 16f84.
Saludos.

Pero en CCS eso te lo hace la misma funcion de escritura de la EEPROM

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Problema al usar memoria eeprom en ccs
« Respuesta #4 en: 23 de Octubre de 2019, 17:22:25 »
¿Habéis probado al agregar una espera de 10 ms entre cada grabación?.  Usualmente las eeprom externas requiere esperar ese tiempo mientras se produce la grabación antes de enviar otra instrucción al chip de lo contrario ni de coña se graba nada. En la eeprom interna no lo sé si será igualmente obligatorio.

   Pruébalo. Yo desde luego siempre le doy un tiempo de espera entre cada operación de escritura.