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.