61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
/*
|
|
Markus Rosenstihl 2005 Nov
|
|
*/
|
|
#ifndef AD5791_H
|
|
#define AD5791_H
|
|
|
|
#include "core/states.h"
|
|
#include "drivers/pfggen.h"
|
|
#include "../../core/states.h"
|
|
|
|
/**
|
|
* \ingroup drivers
|
|
*/
|
|
class AD5791: public GenericDAC {
|
|
protected:
|
|
/// The channel for the latch signal
|
|
int latch_bit;
|
|
int clock_bit;
|
|
int data_bit;
|
|
|
|
public:
|
|
int id;
|
|
// default constructor
|
|
AD5791(int myid=0);
|
|
virtual void set_dac(signed dw);
|
|
// virtual void set_dac_ttls(signed value);
|
|
|
|
void set_latch_bit(int bit);
|
|
void set_clock_bit(int bit);
|
|
void set_data_bit(int bit);
|
|
|
|
/**
|
|
inserts necessary serial data transmission to set the dac, at the end of experiment reset the dac
|
|
|
|
assumes, the root sequence is not repeated, because the reset sequence is appended to the root sequence!
|
|
*/
|
|
virtual void set_dac(state& experiment);
|
|
|
|
// destructor
|
|
virtual ~AD5791();
|
|
|
|
private:
|
|
void set_dac_recursive(state_sequent& the_sequence, state::iterator& the_state);
|
|
void set_dac_to_zero(state_sequent* exp_sequence, state::iterator where);
|
|
void init_dac(state_sequent* exp_sequence, state::iterator where);
|
|
void set_dac_control(state_sequent* exp_sequence, state::iterator where, int input_shift_register);
|
|
|
|
state_sequent *tx_bit(unsigned int bit);
|
|
|
|
state_sequent *select_input_shift_register(unsigned int register_address);
|
|
|
|
state_sequent *write_serial_register(unsigned int register_value);
|
|
};
|
|
|
|
/*class pfg_exception: public std::string {
|
|
public:
|
|
pfg_exception(const std::string& s): std::string(s){}
|
|
};
|
|
*/
|
|
#endif
|