Práctica de Módulos Contadores y Aplicaciones de Circuitos
PUB TestPwm | tc, tHa, t
ctra[30..26] := %00100
ctra[5..0] := 4
frqa := 1
dira[4]~~
tC := clkfreq
tHa := clkfreq/4
t := cnt
repeat
phsa := -tHa
t += tC
waitcnt(t)
Este es otro lugar donde poder examinar las señales diferenciales. Las únicas diferencias entre este
ejemplo y el previo son:
•
El modo se active a NCO diferencial usando
ctra[30..26] := %00100
•
Un segundo pin de E/S se selecciona para señales diferenciales con
•
P4 y P5 se activan a salidas con
Pruebe el programa y verifique que P5 está encendido cada vez que P4 está apagado.
''1Hz25PercentDutyCycleDiffSig.spin
''Versión diferencial de 1Hz25PercentDutyCycle.spin
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
PUB TestPwm | tc, tHa, t
ctra[30..26] := %00101
ctra[5..0] := 4
ctra[14..9] := 5
frqa := 1
dira[4..5]~~
' El resto es lo mismo que 1Hz25PercentDutyCycle.spin
tC := clkfreq
tHa := clkfreq/4
t := cnt
repeat
phsa := -tHa
t += tC
waitcnt(t)
El objeto TestDualPwm.spin usa ambos contadores para transmitir señales PWM que tienen el mismo
tiempo de ciclo pero independientemente de los tiempos altos (1/2 s de tiempo alto con contador A y
1/5 con contador B). Las señales del ciclo DUTY se transmiten en P4 y P6.
Pagina 162 · Kit Educativo de Prácticas Propeller: Fundamentos
' Configura Contador A a NCO
' Activa ciclo y tiempo alto
' Marca tiempo de contador
' Repite señal PWM
' Activa el Pulso
' Calcula ciclo repeat
' Espera el siguiente ciclo
ctra[30..26] := %00101
(terminación sencilla)
en vez de solo
dira[4..5]~~
' reloj → 80 MHz
' Contador A → NCO (diferencial)
' Selecciona pin E/S
' Suma 1 a phs con cada ciclo
' Activa ambos pins
' diferencial a salida
' Activa ciclo y tiempos
' Marca tiempo de contador
' Repite señal PWM
' active el Pulso
' Calcula el siguiente ciclo
' Espera el siguiente ciclo
(diferencial) en vez de
ctra[14..9] := 5
dira[4]~~
' de reloj