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:
- 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.