This code is to collect data from the ADCs in burst mode, decimate the data, encapsulate it in a simple UDP-like packet and then transmit it over the serial port.

Dependencies:   mbed

Committer:
jimurai
Date:
Fri Aug 27 15:20:30 2010 +0000
Revision:
0:03e8a03052c9

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jimurai 0:03e8a03052c9 1 /**
jimurai 0:03e8a03052c9 2 * @file daq.h
jimurai 0:03e8a03052c9 3 * Header file for daq.cpp - a data acquisition system capable of
jimurai 0:03e8a03052c9 4 * sampling from multiple ADCs in BURST mode to allow consistent,
jimurai 0:03e8a03052c9 5 * high-rate sampling. The samples are passed to a bank of decimators
jimurai 0:03e8a03052c9 6 * to allow the samples to be synchronised with another, slower
jimurai 0:03e8a03052c9 7 * sampling clock or other sampling sources/
jimurai 0:03e8a03052c9 8 *
jimurai 0:03e8a03052c9 9 * @brief Header file for daq.cpp
jimurai 0:03e8a03052c9 10 *
jimurai 0:03e8a03052c9 11 * @author James A C Patterson
jimurai 0:03e8a03052c9 12 */
jimurai 0:03e8a03052c9 13 #ifndef DAQ_H
jimurai 0:03e8a03052c9 14 #define DAQ_H
jimurai 0:03e8a03052c9 15
jimurai 0:03e8a03052c9 16 typedef void (*FuncPtr)(void);
jimurai 0:03e8a03052c9 17
jimurai 0:03e8a03052c9 18 class ADC_BURST {
jimurai 0:03e8a03052c9 19 public:
jimurai 0:03e8a03052c9 20 ADC_BURST ();
jimurai 0:03e8a03052c9 21 ~ADC_BURST ();
jimurai 0:03e8a03052c9 22 void attach(FuncPtr);
jimurai 0:03e8a03052c9 23 void burst_isr(void);
jimurai 0:03e8a03052c9 24 uint32_t data[4];
jimurai 0:03e8a03052c9 25 private:
jimurai 0:03e8a03052c9 26 FuncPtr isr_pointer_;
jimurai 0:03e8a03052c9 27 bool attached_;
jimurai 0:03e8a03052c9 28 static ADC_BURST *instance;
jimurai 0:03e8a03052c9 29 static void _burst_isr(void);
jimurai 0:03e8a03052c9 30 };
jimurai 0:03e8a03052c9 31
jimurai 0:03e8a03052c9 32 /**
jimurai 0:03e8a03052c9 33 * Decimator class to implement simple low-pass filtering on uC
jimurai 0:03e8a03052c9 34 * Unsigned integer decimator. Depth up to 32 samples.
jimurai 0:03e8a03052c9 35 * Currently just behaves as a uniform weighted FIR
jimurai 0:03e8a03052c9 36 */
jimurai 0:03e8a03052c9 37 class Decimator {
jimurai 0:03e8a03052c9 38 public:
jimurai 0:03e8a03052c9 39 Decimator (uint8_t);
jimurai 0:03e8a03052c9 40 void write (uint16_t);
jimurai 0:03e8a03052c9 41 uint16_t read ();
jimurai 0:03e8a03052c9 42 private:
jimurai 0:03e8a03052c9 43 uint8_t decimation_order_;
jimurai 0:03e8a03052c9 44 uint8_t decimation_length_;
jimurai 0:03e8a03052c9 45 uint8_t decimation_pointer_;
jimurai 0:03e8a03052c9 46 uint16_t decimation_buffer_[32];
jimurai 0:03e8a03052c9 47 uint32_t accumulator_;
jimurai 0:03e8a03052c9 48 };
jimurai 0:03e8a03052c9 49 #endif