41 lines
952 B
C++
41 lines
952 B
C++
/*
|
|
AD5292.h - AD5292 library for Arduino
|
|
MIT License
|
|
Copyright (c) 2023 Markus Kreitzer.
|
|
Website: https://github.com/markuskreitzer/AD5292
|
|
*/
|
|
|
|
#include "AD5292.h"
|
|
|
|
AD5292::AD5292(uint8_t csPin, uint32_t spiFreq) : _csPin(csPin), _spiFreq(spiFreq) {}
|
|
|
|
void AD5292::begin() {
|
|
pinMode(_csPin, OUTPUT);
|
|
digitalWrite(_csPin, HIGH);
|
|
SPI.begin();
|
|
}
|
|
|
|
bool AD5292::setWiperPosition(uint16_t position) {
|
|
if (position > 1023) {
|
|
return false; // Invalid position value
|
|
}
|
|
|
|
uint16_t command = (0x01 << 10) | (position & 0x03FF);
|
|
sendCommand(command);
|
|
delay(6);
|
|
|
|
return true; // Successful operation
|
|
}
|
|
|
|
void AD5292::sendCommand(uint16_t command) {
|
|
SPI.beginTransaction(SPISettings(_spiFreq, MSBFIRST, SPI_MODE1));
|
|
digitalWrite(_csPin, LOW);
|
|
SPI.transfer16(command);
|
|
digitalWrite(_csPin, HIGH);
|
|
SPI.endTransaction();
|
|
}
|
|
|
|
void AD5292::setSpiFrequency(uint32_t spiFreq) {
|
|
_spiFreq = spiFreq;
|
|
}
|