school project

Dependencies:   PololuLedStrip mbed

Committer:
taptoneesarm
Date:
Thu Jan 26 11:00:15 2017 +0000
Revision:
0:5ddd4b0f64f8
schooll led proiject

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taptoneesarm 0:5ddd4b0f64f8 1 /* mbed Library - ADC
taptoneesarm 0:5ddd4b0f64f8 2 * Copyright (c) 2010, sblandford
taptoneesarm 0:5ddd4b0f64f8 3 * released under MIT license http://mbed.org/licence/mit
taptoneesarm 0:5ddd4b0f64f8 4 */
taptoneesarm 0:5ddd4b0f64f8 5
taptoneesarm 0:5ddd4b0f64f8 6 #ifndef MBED_ADC_H
taptoneesarm 0:5ddd4b0f64f8 7 #define MBED_ADC_H
taptoneesarm 0:5ddd4b0f64f8 8
taptoneesarm 0:5ddd4b0f64f8 9 #include "mbed.h"
taptoneesarm 0:5ddd4b0f64f8 10 #define XTAL_FREQ 12000000
taptoneesarm 0:5ddd4b0f64f8 11 #define MAX_ADC_CLOCK 13000000
taptoneesarm 0:5ddd4b0f64f8 12 #define CLKS_PER_SAMPLE 64
taptoneesarm 0:5ddd4b0f64f8 13
taptoneesarm 0:5ddd4b0f64f8 14 class ADC {
taptoneesarm 0:5ddd4b0f64f8 15 public:
taptoneesarm 0:5ddd4b0f64f8 16
taptoneesarm 0:5ddd4b0f64f8 17 //Initialize ADC with ADC maximum sample rate of
taptoneesarm 0:5ddd4b0f64f8 18 //sample_rate and system clock divider of cclk_div
taptoneesarm 0:5ddd4b0f64f8 19 //Maximum recommened sample rate is 184000
taptoneesarm 0:5ddd4b0f64f8 20 ADC(int sample_rate, int cclk_div);
taptoneesarm 0:5ddd4b0f64f8 21
taptoneesarm 0:5ddd4b0f64f8 22 //Enable/disable ADC on pin according to state
taptoneesarm 0:5ddd4b0f64f8 23 //and also select/de-select for next conversion
taptoneesarm 0:5ddd4b0f64f8 24 void setup(PinName pin, int state);
taptoneesarm 0:5ddd4b0f64f8 25
taptoneesarm 0:5ddd4b0f64f8 26 //Return enabled/disabled state of ADC on pin
taptoneesarm 0:5ddd4b0f64f8 27 int setup(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 28
taptoneesarm 0:5ddd4b0f64f8 29 //Enable/disable burst mode according to state
taptoneesarm 0:5ddd4b0f64f8 30 void burst(int state);
taptoneesarm 0:5ddd4b0f64f8 31
taptoneesarm 0:5ddd4b0f64f8 32 //Select channel already setup
taptoneesarm 0:5ddd4b0f64f8 33 void select(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 34
taptoneesarm 0:5ddd4b0f64f8 35 //Return burst mode enabled/disabled
taptoneesarm 0:5ddd4b0f64f8 36 int burst(void);
taptoneesarm 0:5ddd4b0f64f8 37
taptoneesarm 0:5ddd4b0f64f8 38 /*Set start condition and edge according to mode:
taptoneesarm 0:5ddd4b0f64f8 39 0 - No start (this value should be used when clearing PDN to 0).
taptoneesarm 0:5ddd4b0f64f8 40 1 - Start conversion now.
taptoneesarm 0:5ddd4b0f64f8 41 2 - Start conversion when the edge selected by bit 27 occurs on the P2.10 / EINT0 / NMI pin.
taptoneesarm 0:5ddd4b0f64f8 42 3 - Start conversion when the edge selected by bit 27 occurs on the P1.27 / CLKOUT /
taptoneesarm 0:5ddd4b0f64f8 43 USB_OVRCRn / CAP0.1 pin.
taptoneesarm 0:5ddd4b0f64f8 44 4 - Start conversion when the edge selected by bit 27 occurs on MAT0.1. Note that this does
taptoneesarm 0:5ddd4b0f64f8 45 not require that the MAT0.1 function appear on a device pin.
taptoneesarm 0:5ddd4b0f64f8 46 5 - Start conversion when the edge selected by bit 27 occurs on MAT0.3. Note that it is not
taptoneesarm 0:5ddd4b0f64f8 47 possible to cause the MAT0.3 function to appear on a device pin.
taptoneesarm 0:5ddd4b0f64f8 48 6 - Start conversion when the edge selected by bit 27 occurs on MAT1.0. Note that this does
taptoneesarm 0:5ddd4b0f64f8 49 not require that the MAT1.0 function appear on a device pin.
taptoneesarm 0:5ddd4b0f64f8 50 7 - Start conversion when the edge selected by bit 27 occurs on MAT1.1. Note that this does
taptoneesarm 0:5ddd4b0f64f8 51 not require that the MAT1.1 function appear on a device pin.
taptoneesarm 0:5ddd4b0f64f8 52 When mode >= 2, conversion is triggered by edge:
taptoneesarm 0:5ddd4b0f64f8 53 0 - Rising edge
taptoneesarm 0:5ddd4b0f64f8 54 1 - Falling edge
taptoneesarm 0:5ddd4b0f64f8 55 */
taptoneesarm 0:5ddd4b0f64f8 56 void startmode(int mode, int edge);
taptoneesarm 0:5ddd4b0f64f8 57
taptoneesarm 0:5ddd4b0f64f8 58 //Return startmode state according to mode_edge=0: mode and mode_edge=1: edge
taptoneesarm 0:5ddd4b0f64f8 59 int startmode(int mode_edge);
taptoneesarm 0:5ddd4b0f64f8 60
taptoneesarm 0:5ddd4b0f64f8 61 //Start ADC conversion
taptoneesarm 0:5ddd4b0f64f8 62 void start(void);
taptoneesarm 0:5ddd4b0f64f8 63
taptoneesarm 0:5ddd4b0f64f8 64 //Set interrupt enable/disable for pin to state
taptoneesarm 0:5ddd4b0f64f8 65 void interrupt_state(PinName pin, int state);
taptoneesarm 0:5ddd4b0f64f8 66
taptoneesarm 0:5ddd4b0f64f8 67 //Return enable/disable state of interrupt for pin
taptoneesarm 0:5ddd4b0f64f8 68 int interrupt_state(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 69
taptoneesarm 0:5ddd4b0f64f8 70 //Attach custom interrupt handler replacing default
taptoneesarm 0:5ddd4b0f64f8 71 void attach(void(*fptr)(void));
taptoneesarm 0:5ddd4b0f64f8 72
taptoneesarm 0:5ddd4b0f64f8 73 //Restore default interrupt handler
taptoneesarm 0:5ddd4b0f64f8 74 void detach(void);
taptoneesarm 0:5ddd4b0f64f8 75
taptoneesarm 0:5ddd4b0f64f8 76 //Append custom interrupt handler for pin
taptoneesarm 0:5ddd4b0f64f8 77 void append(PinName pin, void(*fptr)(uint32_t value));
taptoneesarm 0:5ddd4b0f64f8 78
taptoneesarm 0:5ddd4b0f64f8 79 //Unappend custom interrupt handler for pin
taptoneesarm 0:5ddd4b0f64f8 80 void unappend(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 81
taptoneesarm 0:5ddd4b0f64f8 82 //Append custom global interrupt handler
taptoneesarm 0:5ddd4b0f64f8 83 void append(void(*fptr)(int chan, uint32_t value));
taptoneesarm 0:5ddd4b0f64f8 84
taptoneesarm 0:5ddd4b0f64f8 85 //Unappend custom global interrupt handler
taptoneesarm 0:5ddd4b0f64f8 86 void unappend(void);
taptoneesarm 0:5ddd4b0f64f8 87
taptoneesarm 0:5ddd4b0f64f8 88 //Set ADC offset to a value 0-7
taptoneesarm 0:5ddd4b0f64f8 89 void offset(int offset);
taptoneesarm 0:5ddd4b0f64f8 90
taptoneesarm 0:5ddd4b0f64f8 91 //Return current ADC offset
taptoneesarm 0:5ddd4b0f64f8 92 int offset(void);
taptoneesarm 0:5ddd4b0f64f8 93
taptoneesarm 0:5ddd4b0f64f8 94 //Return value of ADC on pin
taptoneesarm 0:5ddd4b0f64f8 95 int read(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 96
taptoneesarm 0:5ddd4b0f64f8 97 //Return DONE flag of ADC on pin
taptoneesarm 0:5ddd4b0f64f8 98 int done(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 99
taptoneesarm 0:5ddd4b0f64f8 100 //Return OVERRUN flag of ADC on pin
taptoneesarm 0:5ddd4b0f64f8 101 int overrun(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 102
taptoneesarm 0:5ddd4b0f64f8 103 //Return actual ADC clock
taptoneesarm 0:5ddd4b0f64f8 104 int actual_adc_clock(void);
taptoneesarm 0:5ddd4b0f64f8 105
taptoneesarm 0:5ddd4b0f64f8 106 //Return actual maximum sample rate
taptoneesarm 0:5ddd4b0f64f8 107 int actual_sample_rate(void);
taptoneesarm 0:5ddd4b0f64f8 108
taptoneesarm 0:5ddd4b0f64f8 109 //Return pin ID of ADC channel
taptoneesarm 0:5ddd4b0f64f8 110 PinName channel_to_pin(int chan);
taptoneesarm 0:5ddd4b0f64f8 111
taptoneesarm 0:5ddd4b0f64f8 112 //Return pin number of ADC channel
taptoneesarm 0:5ddd4b0f64f8 113 int channel_to_pin_number(int chan);
taptoneesarm 0:5ddd4b0f64f8 114
taptoneesarm 0:5ddd4b0f64f8 115
taptoneesarm 0:5ddd4b0f64f8 116 private:
taptoneesarm 0:5ddd4b0f64f8 117 int _pin_to_channel(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 118 uint32_t _data_of_pin(PinName pin);
taptoneesarm 0:5ddd4b0f64f8 119
taptoneesarm 0:5ddd4b0f64f8 120 int _adc_clk_freq;
taptoneesarm 0:5ddd4b0f64f8 121 void adcisr(void);
taptoneesarm 0:5ddd4b0f64f8 122 static void _adcisr(void);
taptoneesarm 0:5ddd4b0f64f8 123 static ADC *instance;
taptoneesarm 0:5ddd4b0f64f8 124
taptoneesarm 0:5ddd4b0f64f8 125 uint32_t _adc_data[8];
taptoneesarm 0:5ddd4b0f64f8 126 void(*_adc_isr[8])(uint32_t value);
taptoneesarm 0:5ddd4b0f64f8 127 void(*_adc_g_isr)(int chan, uint32_t value);
taptoneesarm 0:5ddd4b0f64f8 128 void(*_adc_m_isr)(void);
taptoneesarm 0:5ddd4b0f64f8 129 };
taptoneesarm 0:5ddd4b0f64f8 130
taptoneesarm 0:5ddd4b0f64f8 131 #endif