Práctica de Módulos Contadores y Aplicaciones de Circuitos
OBJ
SquareWave
: "SquareWave"
PUB TestFrequency | a, b, c
' Configura Módulos Contadores.
ctra[30..26] := %00100
ctra[5..0] := 27
outa[27]~
dira[27]~~
ctrb[30..26] := %01010
ctrb[5..0] := 27
frqb := 1
phsb := -3000
a := |< 27
frqa := SquareWave.NcoFrqReg(3000)
repeat while phsb[31]
waitpeq(0, a, 0)
frqa~
PWM con Modos NCO
PWM significa Modulación de Ancho de Pulso, y puede ser útil para servos y control de motores. Un
modulo contador operando en modo NCO puede usarse para generar pulsos de duración precisa y un
ciclo
con un comando
repeat
Vamos a ver como se envía un pulso sencillo con un modulo contador. Este método preciso es tan
bueno como el ciclo de Reloj del chip Propeller. Después de activar el contador en modo NCO solo
active el registro PHS a la duración que se quiere que dure el pulso cargándolo en un valor negativo.
Por ejemplo el comando
80,000,000. Recuerde que el bit 31 de un registro será 1 mientras sea negativo, y también recuerde
que el bit 31 del registro PHS en modo NCO controla un estado de salida de un pin de E/S. Así que
cuando el registro PHS se activa como valor negativo (y FRQ a 1) el pin de E/S enviara una señal alta
por el mismo número de ciclos de reloj que tiene el numero negativo en PHS.
El ejemplo de programa en esta sección de PWM enviara señales al circuito LED de la Figura
7-6 en la pagina 131. Si removió el circuito de la Figura 7-6 en la página 131 de su tarjeta
reconstrúyalo ahora.
Enviando un Pulso Sencillo
El objeto SinglePulseWithCounter usa esta técnica para enviar un pulso de 1 segundo al LED en P4.
Aun considerando que el programa puede moverse tan pronto como active el registro PHS a
, no puede ignorar el registro PHS indefinidamente. ¿Por qué? Porque 2
clkfreq
ciclos de reloj después el registro PHS cambiara de un numero positivo muy grande a un numero
negativo muy grande y volverá a contar. Como el bit 31 del registro PHS cambiara de 0 a 1 en ese
punto el pin de E/S cambiara de bajo a alto sin ninguna razón aparente.
Pagina 160 · Kit Educativo de Prácticas Propeller: Fundamentos
puede usarse para mantener el tiempo de ciclo de la señal
waitcnt
en el siguiente ejemplo activa el registro
phsa :=
-clkfreq
'ctra modulo a modo NCO
'P27 → salida-baja
'ctrb modulo a detector
'POSEDGE
'Suma 1 por cada ciclo
'Inicia el contador a -3000
'Activa un pin mascara para
'el comando waitpeq
'inicia la onda cuadrada
'Espera por el cambio 3000
'de alto a bajo
'Espera por señal baja
'Detiene la señal
a -
phsa
-
31
– 1 = 2,147,483,647