Servidor PICP: ejemplos |
La memoria de configuración se encuentra a partir de la dirección 2000h y en ella se encuentra la palabra de configuración y la palabra de identificación del PIC (Se puede encontrar más información aquí)
Una vez en modo monitor, se accede a la memoria de configuración invocando el servicio Load Configuration, que hace que el contador de programa apunte a la dirección 2000h (PC=2000h). Las direcciones que nos interesa leer son la 2006h (identificación) y la 2007h (configuracion). Para acceder a ellas se incrementa el contador de programa realizando llamadas al servicio Increment Address. Con cada llamada, el PC se incrementa en una unidad. Una vez que PC=2006h, usamos el servicio Read Data from Program Memory para leer su contenido. A continuación volvemos a incrementar el PC y leemos el contenido de la dirección 2007h.
La secuencia completa de llamadas a los servicios es la siguiente:
La grabación en la familia PIC16F8X se realiza byte a byte. Primero hay que incrementar el contador de programa hasta que apunte a la dirección a partir de la cual queremos grabar las palabras. En este ejemplo comenzaremos en la dirección 0000h, por lo que primero habrá que hacer un Reset para inicializar el contador de programa (PC=0000h). A continuación se envía la primera palabra a grabar, usando el servicio Load Data for Program Memory y a continuación invocando el servicio de Begin Erase/Programming Cycle. El primer dato queda grabado. Ahora se incrementa el contador de programa (Increment Address) y se repite la operación, enviando las otras dos palabras que faltan.
La secuencia completa de llamadas a los servicios es la siguiente:
Con esto se graban las palabras 0x01AB, 0x02BC y 0x03CD en las direcciones 0000h, 0001h y 0002h, respectivamente.
En la familia 16f87xA las palabras se graban de 8 en 8. Es preciso por tanto enviar bloques de 8 palabras, aunque sólo se quieran grabar menos. Para grabar las tres palabras de este ejemplo, habrá que enviar 8 palabras. Las 3 primeras son las que nos interesan. En las 5 restantes se enviará "basura" (por ejemplo 0x0000). Primero hay que inicializar el contador de programa, utilizando el servicio de Reset (PC=0000h). Ahora se envía el primer dato, con
La secuencia completa de llamadas a los servicios es la siguiente:
La palabra de configuración se graba de las misma manera en las familias 16F87XA y 16F8x. Hay que situar el contador de programa en la dirección PC=2007h, enviar la nueva palabra con Load Data for Program Memory y grabarla con Begin Erase/Programming Cycle
La secuencia completa de llamadas a los servicios es la siguiente: