Listing 7 (labmastr.h) Header File Containing Basic Number defs and Function Prototypes for the Lab Master AD

/*****************************************************

       Copyright Don Bradley, 1991.

       Permission is granted for used of these routines
       in any manner as long as this copyright notice is
       included.

       Tested using Quick C 2.5 and MSC 6.0 on a
       Toshiba T5200.

*****************************************************/

#define TRUE        1
#define FALSE       0

#define LM_BASE 0x02c0
#define LM_ID          0x4e69

#define DAC0_DATA              (LM_BASE + 0x00)
#define DAC1_DATA              (LM_BASE + 0x02)
#define PRODUCT                (LM_BASE + 0x02)
#define VERSION                (LM_BASE + 0x03)
#define BRD_ENABLE             (LM_BASE + 0x04)
#define IRQ_CONTROL            (LM_BASE + 0x05)
#define IRQ_STATUS             (LM_BASE + 0x05)
#define TIMER_DATA             (LM_BASE + 0x06)
#define TIMER_CONTROL          (LM_BASE + 0x08)
#define ADC_VIRTCHAN           (LM_BASE + 0x09)
#define ADC_CHN_GAIN_ARRAY     (LM_BASE + 0x0a)
#define DIG_OUT                (LM_BASE + 0x0b)
#define DIG_IN                 (LM_BASE + 0x0b)
#define DIG_EXP                (LM_BASE + 0x0c)
#define ADC_DATA               (LM_BASE + 0x0c)
#define ADC_LASTCHAN           (LM_BASE + 0x0d)
#define ADC_CONTROL            (LM_BASE + 0x0e)
#define ADC_STATUS             (LM_BASE + 0x0e)
#define DAC_CONTROL            (LM_BASE + 0x0f)
#define DAC_STATUS             (LM_BASE + 0x0f)

/* MASK defines */

/* ADC defines */
#define ADC_FIFO_ENABLE        0x80
#define ADC_FIFO_DISABLE       0x00
#define ADC_SINGLE_ENDED       0x00
#define ADC_DIFFERENTIAL       0x40
#define ADC_GAIN_1             0x00
#define ADC_GAIN_2             0x40
#define ADC_GAIN_4             0x80
#define ADC_GAIN_8             0xc0
#define ADC_GAIN_10            0x40
#define ADC_GAIN_100           0x80
#define ADC_GAIN_1000          0xc0
#define ADC_BANK_0             0x00
#define ADC_BANK_1             0x10
#define ADC_BANK_2             0x20
#define ADC_BANK_3             0x30

#define MAX_CHANNELS           16
#define NON_ADC_VALUE          0x8000
#define ADC_DMA_BUFFER_LEN     0x1000
#define ADC_FIFO_SAMPLE_READY  0x40

/* TIMER defines */
#define TIMER_DIVISOR  10
// 4MHz
#define TIMER_F1       4000000L
// 250KHz
#define TIMER_F2  (TIMER_F1/TIMER_DIVISOR)
// 15.625KHz
#define TIMER_F3  (TIMER_F2/TIMER_DIVISOR)
// 976.5625Hz
#define TIMER_F4  (TIMER_F3/TIMER_DIVISOR)
// 61.03516Hz
#define TIMER_F5  (TIMER_F4/TIMER_DIVISOR)

/* LabMasterAD function prototypes */

/* labmastr.c */
int LabMasterAD_Enable(void);
int LabMasterAD_Disable(void);
int LabMasterAD_Product(void);
int LabMasterAD_Version(void);
void timer_reset(void);
void timer0_off(void);
void timer0_on(void);
void timer5_off(void);
void timer5_on(void);
double timer0_setup(double freq);
void dig_out(int chan, int value);
int dig_in(int chan);
void outpwd(unsigned int port, unsigned int value);
int inpwd(unsigned int port);

/* timerad.c */
double timerad(double freq);
void step_timerad(void);

/* adcdma.c */
int init_adc_dma(unsigned int num_chn,
       long num_samples, double *freq, int dma_chn,
       void (*procfunc)(int));

void get_next_adc_values(void);
void terminate_adc_dma(void);
void clr_adc_dma_buffer(void);
int adc_dma_done(void);
long adc_dma_conversion_count(void);

/* adc.c */
int get_adc(unsigned int chn);
void disable_adc(void);
void enable_adc(void);
int adc_status(void);

/* End of File */