|
PropWare
3.0.0.229
C++ objects and CMake build system for Parallax Propeller
|
21 #define DUTY_SE (0b110 << 26)
24 void dac2chDriver(
void *par);
29 device = (
void *) malloc(
sizeof(
dac2ch));
30 device->dacCtrBits = bits;
31 device->dacBitX = 32 - device->dacCtrBits;
34 device->dac2chCog =
cogstart(dac2chDriver, device, device->dac2chStack,
sizeof(device->dac2chStack)) + 1;
40 if(device->dac2chCog)
cogstop(device->dac2chCog - 1);
41 device->dac2chCog = 0;
55 device->frqa = (dacVal << device->dacBitX);
68 device->frqb = (dacVal << device->dacBitX);
78 void dac2chDriver(
void *par)
85 if(device->ctra !=
CTRA)
89 device->pin =
CTRA & 0b111111;
90 DIRA &= ~(1 << device->pin);
97 device->pin =
CTRA & 0b111111;
98 DIRA |= (1 << device->pin);
102 if(device->ctrb !=
CTRB)
106 device->pin =
CTRB & 0b111111;
107 DIRA &= ~(1 << device->pin);
112 if(device->ctrb != 0)
114 device->pin =
CTRB & 0b111111;
115 DIRA |= (1 << device->pin);
void dac2ch_set(dac2ch *device, int pin, int channel, int dacVal)
Set a DAC signal's level.
dac2ch * dac2ch_start(int bits)
Start duty modulation process in another cog for D/A conversion through a low pass filter.
#define FRQA
Counter A frequency register.
#define FRQB
Counter B frequency register.
#define CTRB
Counter B control register.
#define cogstop(a)
Stop a COG.
void dac2ch_stop(dac2ch *device)
Shut down dac2ch process and reclaim cog and I/O pins for other uses.
Functions for up to 2 channels per cog of duty modulated signals for D/A conversion through a low pas...
#define DIRA
Use to set pins to input (0) or output (1).
int cogstart(void(*func)(void *), void *par, void *stack, size_t stacksize)
Start a new propeller LMM function/thread in another COG.
#define CTRA
Counter A control register.