''Objeto 2 channel DAC. Cada canal se puede configurar para pin E/S y resolución
(bits)
VAR
' Almacena valores que funcionan como escaleras LSB para los registros FRQ.
long lsb[2]
PUB Init(channel, ioPin, bits, level)
{{
Inicia un DAC.
• channel - 0 o 1
• ioPin
- Escoge pin E/S DAC
• bits
- Resolución (8 bits, 10 bits, etc.)
• level
- Nivel de Voltaje Inicial = 3.3 V * level ÷ 2
}}
dira[ioPin]~
spr[8 + channel] := (%00110 << 26) + ioPin
pin E/S
lsb[channel] := |< (32 - bits)
Update(channel, level)
dira[ioPin] ~~
PUB Update(channel, level)
'' Actualiza el nivel transmitido por un canal ADC a
''
''
level = 3.3 V * level ÷ 2
spr[10 + channel] := level * lsb[channel]
PUB Remove(channel)
''Reclama el módulo contador y activa los grupos de pin E/S a entrada.
dira[spr[8+channel] & %111111]~
spr[8+channel]~
''DAC 2 Channel.spin (versión no comentada)
VAR
long lsb[2]
PUB Init(channel, ioPin, bits, level)
dira[ioPin]~
spr[8 + channel] := (%00110 << 26) + ioPin
lsb[channel] := |< (32 - bits)
Update(channel, level)
dira[ioPin] ~~
PUB Update(channel, level)
spr[10 + channel] := level * lsb[channel
PUB Remove(channel)
dira[spr[8+channel] & %111111]~
spr[8+channel]~
Apéndice B: Estudio de Soluciones
' Activa pin E/S a entrada
' Configura CTR para modo duty y
' Define LSB para registro FRQ
' Activa duty inicial
' Activa pin E/S a salida
bits
' Actualiza salida DAC
' Activa pin E/S a entrada
' Limpia canales registro CTR
Kit Educativo de Practicas Propeller: Fundamentos · Página 217
bits