# PIC12F675 Programmer using arduino (port from 12bit programmer)

I bought some pic12f675 and i am trying to program it using an arduino (for testing purposes, I was trying to write a simple blinking led code, I tried both my code hex compiled and another that I got on internet).

I looked around and found some pic18f or pic16f sketches, but I used this one for pic12f (the code was made for PIC12F508, which is 12bit, and my pic is PIC12F675, which is 14-bit): http://www.reenigne.org/blog/a-pic12-programmer-from-an-arduino/

The only change I made was to use a 12V battery connected to a TIP102 transistor for the 12V input of the PIC.

One of the hex files I have tried to upload was the one below. I got the hex file general idea: size, address, type, data, checksum. The software I downloaded rejects this hex if I keep the last but one line (:02400E00C43FAD). It says "Address in hex file out of range.". I believe the reason I get this error is because the software was made for 12-bit and the code for 14-bit microcontroller.

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


With all that said, assuming that I am correct, I am trying to modify the sofware in arduino to support 14-bit controller (my pic12f675).

And my status on this task: 0%. (almost)

In the arduino source code, which you can find in the first link, then click on github link, file: programmer_c.c. (cant post more than 2 links)

Check the comments at lines 27 to 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


The only changes I found was on "Begin Programming" and "End Programming", which was supposed to be:

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


Im not sure how to change it on code yet, but I will find. Even if I fix this, will not resolve the address problem.

If anybody has thoughts or want to help on this port, I would appreciate. Thank you.