TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Diego E. en 17 de Junio de 2008, 12:53:37
-
Hola grupo,
como hago para borrar la memoria EEPROM de un pic cada vez que lo vaya a programar (con el PIC start-Plus)
:(
-
Hola.
Pues laPICSTART Plus no da esa opcion en el MPLAB. Yo lo que hago es escribir la directiva #rom asignando los valores respectivos ya sean ceros u otros valores en el programa principal.
Pero :-) , en la seccion Programmer/Settings/Memory Ranges, esta habilitada por default la casilla Erase All Before Program. Es decir, se borra automaticamente antes de programarse, y ademas esta habilitada la casilla EEPROM.
Saludos
-
MLO, gracias por responderme,
verifiqué en el MPLAB y si aparece la opción pero deshabilitada, para habilitarla debo deshabilitar la opción Erase All Befor Program; pero hay que darle la direción final del programa.
Pero me puedes explicar un poco más sobre la directiva " #rom" ?, no se de que setrata y me interesa saber
gracias
-
Es una directiva en otro lenguaje. Esta directiva no se usa en asm.
-
Hola.
La directiva de compilacion #rom asigna valores a la ROM en la direccion del dispositivo. Creo que con un pequeno codigo de ejemplo es mejor, para un pic16 seria:
#include<16F873A.h>
#device adc=8
#fuses XT,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP
#use delay(clock=4M)
#use rs232(baud=300,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#rom 0x2100={0,0,0,0}
void main (void)
{
...
while(true)
{
....
}
}
Con esto veremos que la EEPROM se carga con los valores 00h desde la direccion 00h hasta 03h
(http://img187.imageshack.us/img187/655/eepromhd4.th.jpg)
-
Hola.
Ahi va la imagen.
(http://img75.imageshack.us/img75/7912/eepromjx3.jpg)
Saludos
-
La verdad es que siempre trabajo en assembler, y veo que el ejemplo se ajusta más a C, pero de todos modos con la opción de Programmer/Settings/Memory Ranges puedo resolver mi situación
gracias
-
Hola Diego, lo que puedes hacer es definir el valor a grabar, o colocar en cero de la siguiente manera
;-------------------------------------------------------------------------;
; seteos de valores iniciales en data EEPROM ;
;-------------------------------------------------------------------------;
ORG H'2100'
DE 1,5, 5, 5, 3
Norberto
-
Norberto, gracais por responderme
me disculpas pero la verdad no comprendo, de todos modos te repito que es lo que necesito:
necesito que cada vez que programe el PIC (16f628) con PICSTAR, los datos existentes en la eeprom se borren.
-
ok, entonces, en tu programa, en el final, le colocas que en la dirección 2100 (zona de la eeprom), estaran todos en cero
ejemplo
;-------------------------------------------------------------------------;
; seteos de valores iniciales en data EEPROM ;
;-------------------------------------------------------------------------;
ORG H'2100'
DE 0,0,0,0,0 ;y todos los ceros que necesites en cada posición de esta tabla
-
Norberto, ya creo comprender algo.
1- Esto quiere decir que apartir de la dirección H'2100' inicial las posiciones de la eeprom, y ocurre así en todos los PIC ?
2- Esto me garantiza que las posiciones nombradas inician con el valor escrito, pero luego en ejecución del programa se pueden modificar sin ningún problema ?
gracias
-
1. No, para cada pic, el banco de memoria de la eeprom, comienza distinto. Para saber esto, te tienes que fijar en el datasheet correspondiente.
2. Si. Y obviamente, si necesitas en el programa un dato de la eeprom ni bien comienza a funcionar el PIC, puedes ponerle al momento de grabar, el valor deseado.
-
Norberto, me voy a dedicar a realizar pruebas con esta información.
te quedo altamante agradecido,
hasta pronto.