Estudio de Soluciones
667.
clkfreq/
us = clkfreq/1_000_000
11) Sume un bloque
a
. Sume una variable local llamada
tHa
700 * us
repeat tHa from (700 * us) to (2200 * us)
12) Solución:
{{
TestDualPWM(Exercise 12).spin
Usando dos módulos contadores demuestra como enviar una señal PWM.
El ciclo de tiempo es el mismo para ambas señales pero los tiempos en alto son
independientes uno del otro.
}}
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
PUB TestPwm | tc, tHa, tHb, t, us
us := clkfreq/1_000_000
ctra[30..26] := ctrb[30..26] := %00100
sencilla
ctra[5..0] := 4
control
ctrb[5..0] := 6
frqa := frqb := 1
reloj
dira[4] := dira[6] := 1
tC := 20_000 * us
tHa := 700 * us
tHb := 2200 * us
t := cnt
repeat tHa from (700 * us) to (2200 * us) ' <- Cambia señal Repeat PWM
phsa := -tHa
phsb := -tHb
t += tC
repeat
waitcnt(t)
Soluciones a Proyectos de Módulos Contadores y Aplicaciones de Circuitos
1) Solución: Versiones comentadas y no comentadas de DAC 2 Channel.spin se muestran
abajo. Note en la versión no comentada que realmente no toma mucho código para llevar a
cabo la especificación del proyecto.
''DAC 2 Channel.spin
Pagina 216 · Kit Educativo de Prácticas Propeller: Fundamentos
Otra
forma
de
hacerlo
. Entonces,
tHa
con
CON
us = clkfreq/1_000_000
sería
sumar
puede ser
.
1500 * us
. Inicialice
tC
al método
count
.
' Reloj sistema → 80 MHz
' <- Suma us
' <- Suma
' Contadores A y B → NCO terminación
' Activa pins para contadores para
' Suma 1 a phs con cada ciclo de
' Activa pins E/S salida
' <- Cambia Set up cycle time
' <- Cambia Set up tiempo alto
' <- Cambia
' Marca tiempo actual.
' Define e inicia el pulso A
' Define e inicia el pulso B
' Calcula ciclo
' Espera por ciclo
un
bloque
CON
a
. Inicialice
20_000 * us
. Cambie
TestPwm
repeat
con
a