Práctica básica de E/S y tiempo
Cargue el objeto LedOnOffP4 en la RAM del chip Propeller y verifique que la luz prende y
apaga cada segundo por ¼ encendido y ¾ apagado.
Recuerde que el indentado es importante! La Figura 4-2 muestra un error común que puede ocasionar
resultados inesperados. En la izquierda las cuatro líneas bajo el comando repeat están mas indentadas que
repeat. Esto significa que están anidadas en el comando repeat y los cuatro comandos se repetirán. En la
derecha las líneas bajo repeat no están indentadas. Estas están al mismo nivel que el comando repeat. En
este caso el programa nunca llega a ellas porque el ciclo repeat no hace nada.
Note que las líneas sombreadas que conectan la "r" en repeat a los comandos debajo de ella. Estas líneas
indican los comandos en el bloque en el que opera repeat.
Para habilitar esta función en el software Propeller presione Edit y seleccione Preferences. Debajo de la tabla
Appearance seleccione la opcion Show Block Group Indicators o use el acceso rápido Ctrl +I
Figura 4-2: Bloque de Código Repeat
repeat
Este ciclo
!
Dentro de waitcnt(clkfreq + cnt)
Cuando se usa Run → Compile Current → Load... para cargar un objeto la herramienta Propeller
examina algunas declaraciones constantes que configuran el sistema de reloj del chip Propeller. Si el
objeto no tiene estas constantes de reloj el software Propeller almacena valores por defecto en el
registro CLK del chip Propeller el cual está programado para usar el oscilador interno RC en modo
rápido (aproximadamente 12 MHz) para el reloj del sistema. Con el reloj de sistema por defecto a
12MHz la instrucción
waitcnt(clkfreq + cnt)
.
cnt)
La Figura 4-3 muestra como
millones más de ciclos de reloj que cuando el comando
registro
se ha estado incrementando con cada ciclo de reloj desde que el chip Propeller se re-
cnt
encendió. En este ejemplo
el valor
que
cnt
waitcnt
ejecuta
waitcnt(12_000_000 + cnt)
registro
alcanza los 62,000,008 ciclos de reloj.
cnt
Pagina 52 · Kit Educativo de Prácticas Propeller: Fundamentos
repite cuatro comandos
es equivalente a la instrucción
waitcnt(12_000_000 + cnt)
alcanzo los 50,000,008 ciclos de reloj cuando
cnt
espera es 12,000,000 +50,000,008 = 62,000,008. Por lo tanto el Cog que
no se le permite moverse al siguiente comando hasta que el
repeat
Los comandos bajo
indentados así que no son parte del ciclo
repeat
.
waitcnt(12_000_000 +
espera para que el registro
comienza. Tenga en mente que el
waitcnt
waitcnt
no están
acumule 12
cnt
se ejecuto. Así