Hola,
estoy experimentando con el protocolo ICSP en un PIC16F84A a modo didático. La pruebas las hago con una placa I/O usb. He intentando programar el PIC desde esta pero hay algo que hago mal, el programa de prueba es el siguiente:
Vpp = 13v(a través de una resistencia de 10k)
Vcc = 5v
RB7=DATA
RB6 = CLOCK
Primero envío el comando 2 (load data for programming), luego le envío el dato, y posteriormente le envío el comando para grabar.La lectura del dato no se corresponde con lo que grabo(el JDM me lo lee y los escribe sin problemas). Las funciones LineIn/Out son para la placa usb ,ponen el pin el modo entrada/salida y leen/escriben el bit.Los delais de la placa son bastante grandes así que problema de grabar muy rápido no puede ser.(También lo he ejecutado paso a paso)
ICSPCommand 2
ICSPSend14 &HAA
ICSPCommand 8
ICSPCommand 4
List1.AddItem Hex$(ICSPRead14)
ICSPCommand 6
Public Function ICSPBIT(bit As Byte)
LineOut handle, DATA, bit
LineOut handle, CLK, 0
LineOut handle, CLK, 1
End Function
Public Function ICSPRead14() As Integer
LineOut handle, CLK, 0
LineIn handle, DATA
LineOut handle, CLK, 1
For I = 0 To 13
LineOut handle, CLK, 0
ICSPRead14 = ICSPRead14 + (2 ^ I) * LineIn(handle, DATA)
LineOut handle, CLK, 1
Next
LineOut handle, CLK, 0
LineOut handle, CLK, 1
End Function
Public Function ICSPSend14(value As Integer)
ICSPBIT 0
For I = 0 To 13
ICSPBIT value And 1
value = value \ 2
Next
ICSPBIT 0
End Function
Public Function ICSPCommand(command As Byte)
For I = 0 To 5
ICSPBIT command And 1
command = command \ 2
Next
End Function
Un saludo,
Jordi