1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#ifndef VCO_H_
#define VCO_H_
#define fineFreqSteps 256
#define coarseFreqSteps 256
#define pulsewidthSteps 256
enum class Wave : int {sine, triangle, ramp, square};
class Vco {
int fineFreq, coarseFreq, pulsewidth;
int fineFreqAddr, coarseFreqAddr, pulsewidthAddr, switchAddr, iicBus, synthBoardAddr;
int fineFreqRdac, coarseFreqRdac, pulsewidthRdac;
bool syncEnable;
Wave waveSelect;
public:
Vco (int, int, int, int, int, int, int, int, int);
void setFineFreq (int);
void setCoarseFreq (int);
void setPulsewidth (int);
void incrementFineFreq (int);
void incrementCoarseFreq (int);
void incrementPulsewidth (int);
int getFineFreq ();
int getCoarseFreq ();
int getPulsewidth ();
void setWave (Wave);
Wave getWave ();
void setSync (bool);
bool getSync ();
private:
void updateFineFreqDigipot ();
void updateCoarseFreqDigipot ();
void updatePulsewidthDigipot ();
void updateSwitch ();
};
#endif /* VCO_H_ */
|