Autor Tema: como grabar un pic sin el programador  (Leído 4797 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
como grabar un pic sin el programador
« en: 30 de Enero de 2017, 10:06:55 »
Hola a todos, el otro dia vi un proyecto de una placa para calibrar el oscilador de un pic 12f629 que grababa el pic directamente sin usar un programador y sin bootloader, alguin sabe como es la rutina de grabacion de la memoria flash de un pIC?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como grabar un pic sin el programador
« Respuesta #1 en: 30 de Enero de 2017, 11:15:02 »
Por la informacion que das (excasa) solo puedo aportarte 4 ideas/soluciones:

1era:

Lo que la mayoria no sabe es que en la ultima posicion de memoria en algunos PICs (no se si todos)  y este posee oscilador interno, tiene un valor para poner en el registro OSCCON, ese valor es la calibracion de fabrica para que este a 4Mhz el reloj interno.

El tema esta en que cuando uno borra el dispositivo este valor desaparece. Aun asi esto seria un hardcode, es decir invariable en el momento. Y tampoco podrias modificar el valor.

2da:

Puede que esa placa le de pulsos en una frecuencia exacta, y el PIC ya posea dentro el programa de calibracion, el cual contaria la cantidad de pulso provenientes de esta placa y luego compararia con la cantidad de pulsos que tuvo el microcontrolador de forma interna. De esa forma por ejemplo si tenemos pulsos cada 1ms de forma exacta en nuestro micro (4Mhz) el timer deberia tener un valor de 1000 entre pulsos, o 10000 pasado los 10ms, Luego de alli podes calibrarlo hasta que se aproxime lo suficiente a ese valor.

Luego de aca puede ser guardado en la EEPROM para futuros valores.

3ro:

Implementar un programador ( en esa plaquita que decis ) que haga una verificacion de la frecuencia tal como se hizo en el 2do caso, y que programa la EEPROM o que programa la flash en ese ultimo lugar.

Este es medio irrealizable, ya que se necesita incorporar bastantes cosas, como un corte de alimentacion, aumento de tension para llegar a la tension de programacion, etc. Y termina siendo mas barato un bootloader.

4to:

Viste mal o supones mal. Posee un bootloader externo o interno a la placa.
« Última modificación: 30 de Enero de 2017, 11:30:06 por KILLERJC »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:como grabar un pic sin el programador
« Respuesta #2 en: 30 de Enero de 2017, 19:34:07 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como grabar un pic sin el programador
« Respuesta #3 en: 30 de Enero de 2017, 19:46:39 »
Mucho mejor cuando das un circuito y esas cosas. Yo crei que la placa era externa al PIC.

En ves de tener una placa externa que provea una frecuencia estable y buena como pensaba, utiliza la frecuencia de la red.
Apartir de aca lo unico que hace es contar la cantidad de pulsos de reloj (interno) respecto a cada pulso que le da la red electrica.
Y de alli va modificando el valor hasta llegar al correcto.

Finalmente procede a guardarlo en la EEPROM, utilizando 2 posiciones de memoria, 0x00 y 0x01 para indicar un "estado" del mismo.

Pero en si... Tenes que ponerle un programa al PIC12F que es el de calibracion. Luego ponerlo en esa placa, retirarlo, Leerlo con un programador o... directamente grabar otro programa cuidando de no borrar las posiciones de memoria de la EEPROM.

Y todo esto si es que primero borras sin querer el valor del OSSCAL que tenias.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:como grabar un pic sin el programador
« Respuesta #4 en: 30 de Enero de 2017, 20:24:50 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como grabar un pic sin el programador
« Respuesta #5 en: 30 de Enero de 2017, 20:43:29 »
Siempre asumimos que perdiste el valor de calibracion de fabrica. Este caso seria el 3ro que nombre antes.
Si observas el diagrama GP4 es la salida de frecuencia.

El PIC Maestro implementa un ICSP, la parte de abajo con transistores lo que hace es poner 13V al pin MCLR del esclavo y la seccion de arriba permite el reset del esclavo.
Entonces.... ¿como harias?

Desde fabrica no sabes como esta configurado, por lo tanto lo primero a realizar es grabar los bits de configuracion para que arranque con oscilador interno Y que GP4 sea salida de frecuencia, la cual es Fosc/4 , y como la unica frecuencia que tenes es la de 4Mhz, la salida unicamente es de 1Mhz. Solo eso? No, graba mas codigo que hace el que pueda cambiar el OSSCAL.

Ahora vamos al maestro, este debe tener si o si una referencia de tiempo correcta, y por eso el autor dice:

Citar
- El micro Maestro deberá tener el valor de calibración correcto (el que viene de fábrica) ya que el calculo de la frecuencia depende de ello.

Entonces alli tenes tu "referencia" ( antes era la señal de red, la otra supuse que tenias una entrada externa), algo que se hizo en todos los casos anteriores.

Reseteamos el micro y que inicie normalmente, ahora tenemos salida de frecuencia, procedemos a usar las entradas GP0 y GP1 para controlar los valores de OSSCAL, tal ves un pulso en GP0 aumente 10 en el registro por ejemplo. O una entrada es la direccion y la otra es para darle cantidad (cada pulso es 1). El maestro en el programa que grabo debe setear inicialmente el valor del OSSCAL

Cuando finalmente logramos que tenga una frecuencia de 1Mhz +- 1%. Sabiendo el valor ingresado en ese momento del OSSCAL, procedemos a resetear el micro, borrarlo y grabar la ultima posicion de memoria con el valor de calibracion encontrado y una instruccion RETLW.

Y se termno. Lo bueno de este metodo es que no necesitas programar el PIC que vayas a usar, lo que si tenes que recordar que el valor queda guardado en la flash de nuevo, asi que ojo con borrarlo. Lo mismo ocurre con el caso anterior, en el que se grababa en la EEPROM, ojo con borrarlo.
« Última modificación: 30 de Enero de 2017, 21:17:59 por KILLERJC »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:como grabar un pic sin el programador
« Respuesta #6 en: 30 de Enero de 2017, 21:25:03 »
Hacia alla iba mi pregunta, como se graba desde un pIC la flash de otro PIC?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como grabar un pic sin el programador
« Respuesta #7 en: 30 de Enero de 2017, 22:56:39 »
Citar
El PIC Maestro implementa un ICSP

Para entrar en modo ICSP se tienen que cumplir algunas condiciones..

El MCLR tiene que tener una tension Vpp que es de unos 12V, aunque usan 13 la mayoria que vi, si no me equivoco son 7.5V mas que Vdd
Vdd tiene que estar conectado
Y los pines de data y clock del ICSP en estado bajo.

Luego apartir de alli necesitas saber los comandos/tiempos/flujp para poder ejecutar las lecturas/grabaciones/borrados.
Tenes los documentos en la pagina de microchip, aca tenes el del PIC12F629:

http://ww1.microchip.com/downloads/en/DeviceDoc/41191D.pdf

En si es un programador.. nomas que lo harias unicamente para el PIC12F

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re:como grabar un pic sin el programador
« Respuesta #8 en: 31 de Enero de 2017, 16:00:03 »
Gracias por responder


 

anything