Parallax Propeller Manual Del Usuario página 163

Kit educativo
Tabla de contenido
7: Práctica de Módulos Contadores y Aplicaciones de Circuitos
Intente hacer ambas señales diferenciales usando los pins E/S P4..P7.
Nuevamente si tiene un osciloscopio intente crear una señal de 1.3 ms y la otra de 1.7 ms.
Esto podría hacer un robot con dos controles servos de rotación continua para ir hacia delante
o hacia atrás.
{{
TestDualPWM.spin
Demuestra usando dos módulos contadores el envió de una señal PWM.
El tiempo de ciclo es el mismo para ambas señales
pero los tiempos altos son independiente uno del otro.
}}
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
PUB TestPwm | tc, tHa, tHb, t
ctra[30..26] := ctrb[30..26] := %00100
ctra[5..0] := 4
ctrb[5..0] := 6
frqa := frqb := 1
dira[4] := dira[6] := 1
tC := clkfreq
tHa := clkfreq/2
tHb := clkfreq/5
t := cnt
repeat
phsa := -tHa
phsb := -tHb
t += tC
waitcnt(t)
Una variable o constante puede usarse para almacenar un incremento de tiempo para pulso y tiempo
de ciclo. En el ejemplo la variable
, significa que el tiempo de ciclo será 500,000 µs. Así mismo
* tInc
''SinglePwmwithTimeIncrements.spin
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
PUB TestPwm | tc, tHa, t, tInc
ctra[30..26] := %00100
ctra[5..0] := 4
frqa := 1
' Reloj de sistema → 80 MHz
' Contadores A y B → NCO
' terminación sencilla
' Activa los pins para
' contadores de control
' Suma 1 a phs con cada
' ciclo de reloj
' Activa pins E/S a salida
' Activa tiempo de ciclo
' Activa tiempos altos para
' ambas señales
' Marca tiempo actual
' Repite señal PWM
' Definen e inicia pulso A
' Definen e inicia pulso B
' Calcula siguiente ciclo
' Espera siguiente ciclo
almacena
tInc
clkfreq/1_000_000
' Reloj de sistema → 80 MHz
' Configura Contador A a NCO
' Activa salida de contador
' a P4
' Suma 1 a phsa con cada
' ciclo de reloj
Kit Educativo de Practicas Propeller: Fundamentos · Página 163
. Cuando se activa
tC
será 100,000 µs.
tHa
a
50_000
Tabla de contenido
loading

Tabla de contenido