Fork of Smoothie to port to mbed non-LPC targets.
Fork of Smoothie by
Diff: libs/ADC/adc.h
- Revision:
- 3:f151d08d335c
- Parent:
- 2:1df0b61d3b5a
diff -r 1df0b61d3b5a -r f151d08d335c libs/ADC/adc.h --- a/libs/ADC/adc.h Fri Feb 28 18:52:52 2014 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* mbed Library - ADC - * Copyright (c) 2010, sblandford - * released under MIT license http://mbed.org/licence/mit - */ - -#ifndef MBED_ADC_H -#define MBED_ADC_H - -#include "PinNames.h" // mbed.h lib -#define XTAL_FREQ 12000000 -#define MAX_ADC_CLOCK 13000000 -#define CLKS_PER_SAMPLE 64 - -class ADC { -public: - - //Initialize ADC with ADC maximum sample rate of - //sample_rate and system clock divider of cclk_div - //Maximum recommened sample rate is 184000 - ADC(int sample_rate, int cclk_div); - - //Enable/disable ADC on pin according to state - //and also select/de-select for next conversion - void setup(PinName pin, int state); - - //Return enabled/disabled state of ADC on pin - int setup(PinName pin); - - //Enable/disable burst mode according to state - void burst(int state); - - //Select channel already setup - void select(PinName pin); - - //Return burst mode enabled/disabled - int burst(void); - - /*Set start condition and edge according to mode: - 0 - No start (this value should be used when clearing PDN to 0). - 1 - Start conversion now. - 2 - Start conversion when the edge selected by bit 27 occurs on the P2.10 / EINT0 / NMI pin. - 3 - Start conversion when the edge selected by bit 27 occurs on the P1.27 / CLKOUT / - USB_OVRCRn / CAP0.1 pin. - 4 - Start conversion when the edge selected by bit 27 occurs on MAT0.1. Note that this does - not require that the MAT0.1 function appear on a device pin. - 5 - Start conversion when the edge selected by bit 27 occurs on MAT0.3. Note that it is not - possible to cause the MAT0.3 function to appear on a device pin. - 6 - Start conversion when the edge selected by bit 27 occurs on MAT1.0. Note that this does - not require that the MAT1.0 function appear on a device pin. - 7 - Start conversion when the edge selected by bit 27 occurs on MAT1.1. Note that this does - not require that the MAT1.1 function appear on a device pin. - When mode >= 2, conversion is triggered by edge: - 0 - Rising edge - 1 - Falling edge - */ - void startmode(int mode, int edge); - - //Return startmode state according to mode_edge=0: mode and mode_edge=1: edge - int startmode(int mode_edge); - - //Start ADC conversion - void start(void); - - //Set interrupt enable/disable for pin to state - void interrupt_state(PinName pin, int state); - - //Return enable/disable state of interrupt for pin - int interrupt_state(PinName pin); - - //Attach custom interrupt handler replacing default - void attach(void(*fptr)(void)); - - //Restore default interrupt handler - void detach(void); - - //Append custom interrupt handler for pin - void append(PinName pin, void(*fptr)(uint32_t value)); - - //Unappend custom interrupt handler for pin - void unappend(PinName pin); - - //Append custom global interrupt handler - void append(void(*fptr)(int chan, uint32_t value)); - - //Unappend custom global interrupt handler - void unappend(void); - - //Set ADC offset to a value 0-7 - void offset(int offset); - - //Return current ADC offset - int offset(void); - - //Return value of ADC on pin - int read(PinName pin); - - //Return DONE flag of ADC on pin - int done(PinName pin); - - //Return OVERRUN flag of ADC on pin - int overrun(PinName pin); - - //Return actual ADC clock - int actual_adc_clock(void); - - //Return actual maximum sample rate - int actual_sample_rate(void); - - //Return pin ID of ADC channel - PinName channel_to_pin(int chan); - - //Return pin number of ADC channel - int channel_to_pin_number(int chan); - - -private: - int _pin_to_channel(PinName pin); - uint32_t _data_of_pin(PinName pin); - - int _adc_clk_freq; - void adcisr(void); - static void _adcisr(void); - static ADC *instance; - - uint32_t _adc_data[8]; - void(*_adc_isr[8])(uint32_t value); - void(*_adc_g_isr)(int chan, uint32_t value); - void(*_adc_m_isr)(void); -}; - -#endif