mirror of
https://github.com/jhbruhn/eurorack.git
synced 2025-03-15 02:55:49 +00:00
34 lines
726 B
C
34 lines
726 B
C
|
#pragma once
|
||
|
|
||
|
#include "stmlib/stmlib.h"
|
||
|
|
||
|
enum VoltageRange {
|
||
|
VOLTAGE_RANGE_FIVE_VOLTS = 0,
|
||
|
VOLTAGE_RANGE_TEN_VOLTS = 1,
|
||
|
VOLTAGE_RANGE_TEN_EIGHT_VOLTS = 2
|
||
|
};
|
||
|
|
||
|
enum Register {
|
||
|
REGISTER_DAC = 0,
|
||
|
REGISTER_OUTPUT_RANGE = 1,
|
||
|
REGISTER_CONTROL = 2,
|
||
|
REGISTER_POWER_CONTROL = 3
|
||
|
};
|
||
|
|
||
|
class AD57X4 {
|
||
|
public:
|
||
|
AD57X4() {};
|
||
|
|
||
|
void Init();
|
||
|
|
||
|
void WriteDacBipolar(uint8_t dac, VoltageRange range, int16_t value);
|
||
|
void WriteDacUnipolar(uint8_t dac, VoltageRange range, uint16_t value);
|
||
|
|
||
|
private:
|
||
|
uint8_t dacPower = 0;
|
||
|
VoltageRange dacRange[4];
|
||
|
void EnableAndSetRange(uint8_t dac, VoltageRange range, bool bipolar);
|
||
|
void Write(Register reg, uint8_t address, uint16_t data);
|
||
|
DISALLOW_COPY_AND_ASSIGN(AD57X4);
|
||
|
};
|