Programando un PIC con un PIC

2

Estoy creando un dispositivo con dos PIC, un PIC18F46K22 y un PIC16F88 . Tengo un búfer en el 18F46K22 que contiene un programa que quiero escribir en la memoria del programa del 16F88. No puedo hacer esto manualmente, porque tiene que suceder sobre la marcha (el búfer puede cambiar), por lo que la programación debe ser iniciada por el 18F46K22. Sin embargo, los bits de CONFIGURACIÓN se pueden configurar manualmente, no necesito cambiarlos sobre la marcha. Tampoco es necesario escribir en la memoria RAM del 16F88 o en la EEPROM antes del 18F46K22.

Los dos chips funcionan con 5 V y no hay suministro de 12 V disponible. ¿Supongo que tendré que utilizar la programación de bajo voltaje (LVP)?

¿Hay alguien que ya haya hecho algo así? ¿Hay algún código o circuito disponible en algún lugar para programar un PIC con un PIC?

Al final, esto es para hacer un dispositivo de codificación basado en PIC básico: el usuario edita el búfer en el 18F46K22, programa el 16F88 con él. Habrá una interfaz I 2 C entre los dos para que pueda compartir algo de resultados. La programación para el 16F88 será solo para fines matemáticos: el chip recibe alguna información sobre I 2 C y un disparador START en algún pin. Después de eso, el resultado se devuelve a través de I 2 C.

    
pregunta Keelan

2 respuestas

3

Programar un PIC por otro PIC es perfectamente posible, y cuando usas LVP el circuito es trivial. El esfuerzo consiste en escribir el código en el PIC maestro que implementa el algoritmo de programación, de acuerdo con las especificaciones en el documento de 'especificación de programación' para el chip esclavo. Esto es lo que hace la mayoría de los programadores (las cosas del hardware, no la gente), pero tenga en cuenta que en la mayoría de los casos el algoritmo de programación se implementa al menos parcialmente en el software del lado de la PC.

Hay varios ejemplos que puede verificar, el pickit2 ya se ha mencionado. El firmware My Wisp648 (en Jal) y el software para PC (en Python) también son de código abierto, y el software IIRC para los programadores de Olin también lo es.

Pero las especificaciones de programación no son tan difíciles de leer desde un principio, especialmente si necesita admitir solo un chip de destino. Esencialmente, fuerza el chip en el modo de programación (reinicio de liberación mientras el LVP está activo), y luego alimenta los comandos y los datos asociados (de forma similar a SPI), observando el tiempo requerido. Luego, puede usar un programador fuera de la estantería para verificar si su esfuerzo de programación fue exitoso.

Otra solución sería poner un gestor de arranque en el F88. El lado negativo es que necesita programar el cargador de arranque (pero ya podría salir uno adecuado) y que el cargador de arranque necesita algo de memoria, pero el lado positivo es que puede elegir el protocolo de comunicación (o adherirse a un cargador de arranque existente, que a menudo utiliza un protocolo basado en UART).

    
respondido por el Wouter van Ooijen
4

Estoy de acuerdo con lo que dijo Wouter.

También Vendo programadores PIC en el lateral. Todo el software y firmware para mis programadores se incluye en la versión de Software de desarrollo en www.embedinc.com /picprg/sw.htm . Hay mucha complejidad allí, pero eso se debe a que este software / firmware tiene que soportar tantos algoritmos de programación diferentes. El POD (División de ofuscación de programación) de Microchip tiene algunas personas muy inteligentes que constantemente inventan pequeñas y diferentes cosas pequeñas que tiene que hacer para programar los PIC. Sin embargo, a pesar de sus mejores esfuerzos, aún es posible programar todos los diferentes PIC, pero requiere mucha investigación y lectura entre las líneas de la documentación, que a veces es totalmente errónea. El software / firmware en esa versión sería mucho más pequeño si todos los PIC se programaran de la misma manera.

Afortunadamente, su firmware puede ser específico para el PIC en particular que está intentando programar. Debe obtener la especificación de programación y leerla con cuidado, pero puede darse el lujo de ignorar todas las demás especificaciones de programación. Probablemente pueda usar un montón de módulos de firmware de nivel inferior que tengo, especialmente para los programadores de USBProg. Ese es el firmware EUSB, que también utiliza los nombres de archivos comunes PICPRG_xxx.INS.ASPIC. Todo ese firmware está diseñado para ejecutarse en un PIC 18, por lo que gran parte de él debería poder utilizarse directamente.

Por lo general, el programador presenta aproximadamente una interfaz de dirección / lectura / escritura y hago que el software del host se ocupe de los niveles más altos. Afortunadamente, los niveles más altos es la parte relativamente fácil. Deberá buscar en el software del host ejemplos de los algoritmos de borrado. Presiono esos en el host ya que cada uno se ejecuta solo una vez por operación de programación, por lo que la velocidad no es un gran problema.

Pregunte aquí si tiene alguna pregunta más específica.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas