TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: giff en 10 de Febrero de 2010, 15:57:24
-
Hola gente de todo pic. Luego de haber usado el buscador he adaptado un codigo simple cosa de simularlo. Quiero saber que tengo malo, porque la verdad no logro vermi error. Intenté siimularlo con el MPLAB 8.36 y el Proteus 7.6 SP0 y no me escribe en la EEPROM interna. Estoy usando el PIC18f2550 y el compilador CCS v4.104.
#include <18f2550.h>
#fuses NOWDT,HS, NOPROTECT,NOBROWNOUT, NOPUT, NOLVP, NOWRT, NOEBTR, NOEBTRB, NOMCLR
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
int16 write_data, read_data;
void main()
{
while(true){
write_data = 0xAA;
write_program_eeprom(0, write_data);
delay_ms(1000);
read_data = read_program_eeprom(0);
printf("%03Lu ", read_data);
}
}
Por otra parte, la duda que tengo es que valor de direccion tiene write_program_eeprom(DIRECCION, valor). ¿Es un valor especificado por el datasheet o el compilador hace el trabajo y yo solo debo asignar una de las 268 direcciones que tiene este modelo de pic en hexadecimal?
-
como primera medida cambia el FUSE HS por XT
XT: para 4Mhz o menos
HS: mayores a 4Mhz
-
Hola.
La funcion para escribir la EEPROM interna del micro es: write_eeprom (address, value) y para leer: read_eeprom (address)
Saludos
-
como primera medida cambia el FUSE HS por XT
XT: para 4Mhz o menos
HS: mayores a 4Mhz
Hecho, no paso nada... funciona igual.
Hola.
La funcion para escribir la EEPROM interna del micro es: write_eeprom (address, value) y para leer: read_eeprom (address)
Saludos
Gracias, ahora pude escribir ;D. Pero igual tengo la idea que guarde datos de 16 bits. Y por lop que leo en la ayuda del compilador CCS write_program_eeprom y read_program_eeprom no las emula bien :(.
Como tarea probaré la libreria que esta en la pagina de cuervo para guardar datos de 16bit en 2 bytes (http://picmania.garcia-cuervo.net/picc4.php#INT16EENINT). Esa seria la solución deseada para mi proyecto. Les informo cualquier cosa.
Vuelvo a dar las gracias a jhozate y MLO_, tengo algo mas de esperanza en estos momentos ;D
PD: ¿en que sección del datasheet del pic18f2550 puedo encontrar el tiempo que demora en escribir la eeprom interna del pic?
-
buenas, oye si tienes una variable de 16 bits es decir un word y tienes que guardarla en la eeprom in terna del micro tienes primero que separfa esa variable en dos y te quedaria 2 byte el de mayor peso y el menor luego que ya tengas separada tu variable word si puedes guardar tranquilamente tu informacion en la eeprom.
Saludos y espero que esta informacion te ayude.
Atten.
Alexander Santana.
Venezuela-Barcelona.
-
Utiliza make8 para separar la variable de 16-bits en 2 de 8-bits. Igualmente este tema ya se ha tratado en el foro, utiliza el buscador.
Saludos!
-
Utiliza make8 para separar la variable de 16-bits en 2 de 8-bits. Igualmente este tema ya se ha tratado en el foro, utiliza el buscador.
Saludos!
ok boss... cualquier cosa aviso
-
Probé con la libreria de cuervo pero por alguna razon no me funcionó. Luego de googlear un buen rato pille mi solucion en el mismo CCS. Este posee una carpeta de drivers en donde hay una librería que me sirvió.
Write a Float variable in the internal EEPROM memory (http://www.ccsinfo.com/forum/viewtopic.php?t=40529&highlight=eeprom+float)
Gracias por la ayuda brindada ;D.