mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
115 lines
2.4 KiB
C++
115 lines
2.4 KiB
C++
//
|
|
// FILE: AD985X_multi.ino
|
|
// AUTHOR: Rob Tillaart
|
|
// PURPOSE: demo multi device
|
|
// URL: https://github.com/RobTillaart/AD985X
|
|
|
|
|
|
/*
|
|
Arduino AND AD985X
|
|
--------------------------------------------------
|
|
|
|
+--------+
|
|
(2) select ----| A |
|
|
| Q |------- FQ_UD AD985X[0]
|
|
(9) FQ_UD ----| B |
|
|
+--------+
|
|
|
|
+--------+
|
|
(3) select ----| A |
|
|
| Q |------- FQ_UD AD985X[1]
|
|
(9) FQ_UD ----| B |
|
|
+--------+
|
|
|
|
+--------+
|
|
(4) select ----| A |
|
|
| Q |------- FQ_UD AD985X[2]
|
|
(9) FQ_UD ----| B |
|
|
+--------+
|
|
*/
|
|
|
|
|
|
#include "AD985X.h"
|
|
|
|
|
|
// we want to control three hardware devices
|
|
// so we declare three software objects
|
|
AD9850 freqGen0;
|
|
AD9850 freqGen1;
|
|
AD9850 freqGen2;
|
|
|
|
float freq0 = 25000;
|
|
float freq1 = 30000;
|
|
float freq2 = 40000;
|
|
uint32_t maxFreq = 30000000;
|
|
|
|
uint32_t previousMillis0 = 0;
|
|
uint32_t previousMillis1 = 0;
|
|
uint32_t previousMillis2 = 0;
|
|
|
|
uint32_t period0 = 500;
|
|
uint32_t period1 = 1000;
|
|
uint32_t period2 = 2000;
|
|
|
|
uint32_t now;
|
|
|
|
|
|
|
|
void setup()
|
|
{
|
|
// OPEN SERIAL for messages and debugging etc
|
|
Serial.begin(115200);
|
|
Serial.println(__FILE__);
|
|
Serial.print("AD985X_LIB_VERSION: \t");
|
|
Serial.println(AD985X_LIB_VERSION);
|
|
|
|
// initialize three devices
|
|
freqGen0.begin(4, 9, 10);
|
|
freqGen0.powerUp();
|
|
freqGen1.begin(2, 9, 10);
|
|
freqGen1.powerUp();
|
|
freqGen2.begin(3, 9, 10);
|
|
freqGen2.powerUp();
|
|
|
|
// MAXFREQ is the same for all devices
|
|
maxFreq = freqGen0.getMaxFrequency();
|
|
Serial.println(maxFreq);
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
// get the time
|
|
now = millis();
|
|
|
|
// do we need to update 0
|
|
if (now - previousMillis0 >= period0)
|
|
{
|
|
previousMillis0 = now;
|
|
freq0 = freq0 * 0.01;
|
|
freqGen0.setFrequencyF(freq0 * 0.01);
|
|
Serial.println( (uint32_t) freq0);
|
|
}
|
|
|
|
// do we need to update 1
|
|
if (now - previousMillis1 >= period1)
|
|
{
|
|
previousMillis1 = now;
|
|
freq1 = freq1 * 0.01;
|
|
freqGen1.setFrequencyF(freq1 * 0.01);
|
|
Serial.println( (uint32_t) freq1);
|
|
}
|
|
|
|
// do we need to update 2
|
|
if (now - previousMillis2 >= period2)
|
|
{
|
|
previousMillis0 = now;
|
|
freq2 = freq2 * 0.01;
|
|
freqGen2.setFrequencyF(freq2 * 0.01);
|
|
Serial.println( (uint32_t) freq2);
|
|
}
|
|
|
|
}
|
|
|
|
// -- END OF FILE --
|