Práctica de Módulos Contadores y Aplicaciones de Circuitos
El objeto LedSweepWithSpr hace el mismo trabajo que el código LedDutySweep modificado en la
sección "Usando ambos Módulos Contadores". La diferencia es que desarrolla todas las operaciones
de modulo usando el arreglo SPR en vez de referirse a los registros CTR, FRQ y PHS de los módulos
A y B.
Compare la copia de LedDutySweep que mueve ambos contadores contra el código en
LedSweepWithSpr.spin.
Corra LedSweepWithSpr y use LEDs para verificar que controla dos señales duty separadas.
''LedSweepWithSpr.spin
''Ciclo P4 y P5 LEDs de apagado hasta brillo máximo en diferentes rangos.
CON
scale = 16_777_216
PUB TestDuty | apin, duty[2], module
'Configura ambos módulos contadores con un ciclo repeat que indexa elementos SPR.
repeat module from 0 to 1
apin := lookupz (module: 4, 6)
spr[8 + module] := (%00110 << 26) + apin
dira[apin]~~
'Repite cambios duty indefinidamente.
repeat
repeat duty from 0 to 255
duty[1] := duty[0] * 2
repeat module from 0 to 1
spr[10 + module] := duty[module] * scale
waitcnt(clkfreq/128 + cnt)
Modificando LedSweepWithSpr para Señales Diferenciales
Intente actualizar el objeto LedSweepWithSprpara que haga dos señales diferenciales, una en P4 y P5
y la otra en P6 y P7.
Haga una copia de LedSweepWithSpr.spin.
Agregue una variable
Agregue el comando
el valor
con un comando
apin
Cambie
spr[8 + module] := (%00110 << 26) + apin
[8
module]
spr
+
Agregue
dira[bpin]~~
Cargue la copia modificada de LedSweepWithSpr.spin en el chip Propeller y verifique que
envía dos señales diferenciales duty.
Pagina 140 · Kit Educativo de Prácticas Propeller: Fundamentos
a la lista de variables locales del método
bpin
bpin := lookupz(module: 5, 7)
.
lookup
(%00111
26)
(bpin
:=
<<
+
inmediatamente después de
' 2³²÷ 256
' 0 es modulo A, 1 es B.
' Cambia duty de 0 a 255
' duty[1] dos veces más rápido
' Actualiza reg frqa
' Detiene por 1/128 s
justo debajo del comando que asigna
a
9)
apin.
<<
+
.
dira[apin]~~
.
TestDuty