Programador PIC12F675 usando arduino (puerto del programador de 12 bits)

0

Compré algunos pic12f675 y estoy tratando de programarlo usando un arduino (para propósitos de prueba, estaba tratando de escribir un simple código led parpadeante, probé mi código hex compilado y otro que obtuve en internet).

Miré a mi alrededor y encontré algunos bocetos pic18f o pic16f, pero utilicé este para pic12f (el código fue creado para PIC12F508, que es de 12 bits, y mi foto es PIC12F675, que es de 14 bits): enlace

El único cambio que hice fue usar una batería de 12V conectada a un transistor TIP102 para la entrada de 12V del PIC.

Uno de los archivos hexadecimales que he intentado cargar fue el siguiente. Tengo la idea general del archivo hexadecimal: tamaño, dirección, tipo, datos, suma de comprobación. El software que descargué rechaza este hexágono si guardo la última pero una línea (: 02400E00C43FAD). Dice "Dirección en archivo hexadecimal fuera de rango". Creo que la razón por la que recibo este error es porque el software se creó para 12 bits y el código para el microcontrolador de 14 bits.

:100000000428FF3FFF3FFF3F03138316850107309E
:100010008312990083169F01FF30831285000330FD
:10002000DC00FF30DB00FF30DA00DC0B18281F2873
:10003000DB0B1B281E28DA0B1B28182815288C30F0
:10004000DB00FF30DA00DB0B26282928DA0B262814
:100050002328A130DA00DA0B2B28000085010330B9
:10006000DC00FF30DB00FF30DA00DC0B38283F28F3
:10007000DB0B3B283E28DA0B3B28382835288C3010
:10008000DB00FF30DA00DB0B46284928DA0B462874
:100090004328A130DA00DA0B4B2800000C284F2847
:02400E00C43FAD
:00000001FF

Con todo lo dicho, asumiendo que estoy en lo correcto, estoy tratando de modificar el software en arduino para que sea compatible con el controlador de 14 bits (mi pic12f675).

Y mi estado en esta tarea: 0%. (casi)

En el código fuente de arduino, que puede encontrar en el primer enlace, haga clic en el enlace github, archivo: programmer_c.c. (No puedo publicar más de 2 enlaces)

Verifique los comentarios en las líneas 27 a 32.

// Load Data for Program Memory   x x 0 0 1 0     (0 data(14) 0)
// Read Data from Program Memory  x x 0 1 0 0     (0 data(14) 0)
// Increment Address              x x 0 1 1 0
// Begin Programming              x x 1 0 0 0
// End Programming                x x 1 1 1 0
// Bulk Erase Program Memory      x x 1 0 0 1

Y aquí están las especificaciones de programación pic12f675 ( enlace )

Los únicos cambios que encontré fueron en "Comenzar la programación" y "Terminar la programación", que se suponía que eran:

// Begin Programming              0 0 1 0 0 0
// End Programming                0 0 1 0 1 0

Todavía no estoy seguro de cómo cambiarlo en el código, pero lo encontraré. Incluso si soluciono esto, no resolveré el problema de la dirección.

Si alguien tiene ideas o quiere ayudar en este puerto, lo apreciaría. Gracias.

    
pregunta rtmc

1 respuesta

0

Los algoritmos para programar los diversos microcontroladores PIC difieren en los pequeños detalles confusos. Como se enteró, para los detalles debe consultar la "especificación de programación" para su chip objetivo.

La línea en el archivo hexadecimal al que hace referencia es la configuración de Fusibles de configuración. La dirección de esta cosa, y el número de direcciones, varía de un chip a otro (la mayoría de los chips de 14 bits lo tienen en 0x2007). Hay un comando específico, para el 12F675 xx0000, para ir al inicio de esa área (0x2000). Luego debe incrementar la dirección 7 veces para llegar a la dirección de los fusibles, 0x2007.

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas