7: Práctica de Módulos Contadores y Aplicaciones de Circuitos
Inicia un DAC.
• channel - 0 o 1
• ioPin
- Escoge pin E/S DAC
• bits
- Resolución (8 bits, 10 bits, etc.)
• level
- Nivel voltaje inicial = 3.3 V * level ÷ 2
___________________________
PUB Update(channel, level)
Actualiza el nivel transmitido por un canal ADC a
level = 3.3 V * level ÷ 2
____________________
PUB Remove(channel)
Recupera el modulo contador y programa los pins asociados E/S a entrada
GUIA:
•
Defina dos arreglos de variables globales
•
Las variables
LedSweepWithSpr.spin.
•
Defina cada elemento del arreglo
(32 - bits)
arreglo
bits
se declaro para el DAC 8-bit en LedSweepWithSpr.spin.
•
Para asignar el nivel de voltaje use
donde
level
bits) entonces un
2) La solución del ejercicio 12 (mostrado abajo) controla dos servos usando dos módulos
contadores. Cada contador en el ciclo
Entonces el comando
pulso es 2200 µs (2.2 ms). Como el ciclo
pulsos de otros servos. Modifique el programa para que controle otros dos servos (para un
total de cuatro) durante 17.8 ms. Recuerde que los módulos contadores corren
independientemente, así que tendrá que insertar retrasos para completar cada par de pulsos
antes de moverse al siguiente par.
{{
TestDualPWM.spin
Demuestra cómo usar dos contadores para enviar una señal doble PWM.
El tiempo de ciclo es el mismo para ambas señales, pero los tiempos
En alto son independientes 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
ctrb[5..0] := 6
bits
son las versiones ajustables de la constante
lsb
lsb
. Por ejemplo si
es 8, el operador encode asigna 24 del elemento del
bits
. ¿Cuál es el valor? 16_777_216. Es el mismo que la constante
es el valor de voltaje deseado. Por ejemplo si bits es 8 (un DAC de 8-
de 128 resultaría en 1.65 V.
level
repeat
espera por los 20ms restantes. El máximo tiempo que toma el
waitcnt
repeat
Kit Educativo de Practicas Propeller: Fundamentos · Página 187
bits
para almacenar el LSB de cada DAC
lsb
en el método
usando
Init
spr[10 + channel] := level * lsb[channel]
entrega un pulso en el rango de 700 a 2200 µs.
se repite cada 20 ms eso deja 17.8 ms para
' Reloj sistema → 80MHz
' <- Suma us
' <- Suma
' Contadores A y B → NCO terminación
' Pins para contadores para control
en
scale
lsb[channel] := |<
que
scale
,