TODOPIC
Microcontroladores PIC => Programadores => Mensaje iniciado por: manwenwe en 24 de Febrero de 2007, 16:45:30
-
Hola amigos, tengo hecha la rutina "bulk erase" para borrar toda la memoria("chip erase") de los dispositivos "PIC18F2XX0/2X21/2XX2/2XX5/4XX0/4X21/4XX2/4XX5".
Los pasos necesarios para implementar rutina los he sacado del siguiente datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/39622j.pdf.
Y este es mi código:
direccionPcPic18.tablePointer = BULK_ERASE_CONTROL_REGISTERS_1 ;//0x3C0005
cargarDireccionPcPic18(direccionPcPic18);
enviarComandoPic18(TABLE_WRITE);
datoEscribirPic18 = 0x3F3F;
enviarDatoPic18();
direccionPcPic18.tablePointer = BULK_ERASE_CONTROL_REGISTERS_0;//0x3C0004
cargarDireccionPcPic18(direccionPcPic18);
enviarComandoPic18(TABLE_WRITE);
datoEscribirPic18 = 0x8F8F;
enviarDatoPic18();
enviarComandoPic18(CORE_INSTRUCCION);
datoEscribirPic18 = INSTRUCCION_NOP;
enviarDatoPic18();
enviarComandoPic18(CORE_INSTRUCCION);
delayP11();//5 ms
delayP10();// 100us
datoEscribirPic18 = INSTRUCCION_NOP;
enviarDatoPic18();
Las funciones de enviar comandos, datos y cargar las direcciones funcionan correctamente... El problema está en que unos dispositivos se me borran correctamente(4550,4450,2550,2450,etc.) pero otros no se borran(4620,2620,4680,etc.) y se supone que es el mismo protocolo, por lo que no le encuentro mucho sentido...
Se que es una pregunta bastante particular sobre ICSP, pero agradecería cualquier tipo de ayuda porque llevo 4 dias dandole vueltas sin llegar a ninguna solución...
Saludos y gracias!
-
Hola amigos. Despues de 4 dias estrujandome el coco para localizar mi problema me he dado cuenta de que a veces hay que dejar de mirar de frente y unicamente a la programación y darse cuenta de que los Pics son simplemente dispositivos electrónicos y por tanto lo primero y fundamental es cumplir sus especificaciones electrónicas.
El caso es que estaba alimentando el Pic a grabar con VDD = 5 V (como es normal) a traves de una resistencia de 1k; esto dejaba pasar 5mA, cuando el mínimo exigido para asegurarse de que todos los dispostivos de la subfamilia se graban es de 10mA. Esto hacia que ciertos dispositivos se borraran con 5mA pero otros no.
Bueno aunque no he obtenido ninguna respuesta a mi post estoy contento por haber solucionado mi problema. Es más entiendo esta ausencia de respuesta puesto que los que indagamos en el mundillo icsp somos muy pocos y además no contamos con mucha más información que las "prog. specs." de Microchip... y ni que decir que casi nada de códigos de ejemplo. Por esto mismo espero que mi experiencia le pueda servir de ayuda a alguien en un futuro...
Saludos!
-
manwenwe me alegro que resolvieras tu problema :-/
a lo mejor esta información es punta de partida para otros que quieran iniciarse en este tema
Salu2
Pedro
-
manwenwe me podrias ayudar un poco, ya que tienes experiencia en la programacion por medio de ICSP
yo apenas estoy entrando en este tema y me esta haciendo que se me queme el coco
-
Estas haciendo tu propio programador de PICs ?? :lol: :lol:
-
Estas haciendo tu propio programador de PICs ?? :lol: :lol:
Algo parecido donde por medio de mi PC yo pueda darle la instruccion a un pic Maestro a que grabe al esclavo y poderlo actualizar
y ahorita he tratado de grabar los pic's ya se en alto volataje o LVP y no e podido borrar no encuentro la falla todavia :5]
Seguimos analizando la hoja de microchip y espero pronto tener noticias de lo que estoy realizando mal junto con la solucion,