Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
FastAnalogIn.h@1:2fa375aacece, 2013-05-14 (annotated)
- Committer:
- bikeNomad
- Date:
- Tue May 14 14:08:22 2013 +0000
- Revision:
- 1:2fa375aacece
- Child:
- 2:5bcd2f55a294
trying to get continuous conversion going
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| bikeNomad | 1:2fa375aacece | 1 | #ifndef __included_fast_analog_in_h |
| bikeNomad | 1:2fa375aacece | 2 | #define __included_fast_analog_in_h |
| bikeNomad | 1:2fa375aacece | 3 | |
| bikeNomad | 1:2fa375aacece | 4 | #include "mbed.h" |
| bikeNomad | 1:2fa375aacece | 5 | |
| bikeNomad | 1:2fa375aacece | 6 | namespace NK |
| bikeNomad | 1:2fa375aacece | 7 | { |
| bikeNomad | 1:2fa375aacece | 8 | |
| bikeNomad | 1:2fa375aacece | 9 | using namespace mbed; |
| bikeNomad | 1:2fa375aacece | 10 | |
| bikeNomad | 1:2fa375aacece | 11 | class FastAnalogIn: public mbed::AnalogIn |
| bikeNomad | 1:2fa375aacece | 12 | { |
| bikeNomad | 1:2fa375aacece | 13 | public: |
| bikeNomad | 1:2fa375aacece | 14 | void start_read() { |
| bikeNomad | 1:2fa375aacece | 15 | ADC0->SC1[0] = ADC_SC1_ADCH(_adc.adc); // start conversion |
| bikeNomad | 1:2fa375aacece | 16 | } |
| bikeNomad | 1:2fa375aacece | 17 | |
| bikeNomad | 1:2fa375aacece | 18 | uint16_t read_u16() { |
| bikeNomad | 1:2fa375aacece | 19 | // Wait Conversion Complete |
| bikeNomad | 1:2fa375aacece | 20 | while ((ADC0->SC1[0] & ADC_SC1_COCO_MASK) != ADC_SC1_COCO_MASK); |
| bikeNomad | 1:2fa375aacece | 21 | |
| bikeNomad | 1:2fa375aacece | 22 | // Return value |
| bikeNomad | 1:2fa375aacece | 23 | return (uint16_t)ADC0->R[0]; |
| bikeNomad | 1:2fa375aacece | 24 | } |
| bikeNomad | 1:2fa375aacece | 25 | |
| bikeNomad | 1:2fa375aacece | 26 | FastAnalogIn(PinName what) |
| bikeNomad | 1:2fa375aacece | 27 | : mbed::AnalogIn(what) { |
| bikeNomad | 1:2fa375aacece | 28 | ADC0->CFG2 = /* ADC_CFG2_MUXSEL_MASK // ADxxb channels are selected */ |
| bikeNomad | 1:2fa375aacece | 29 | 0 | ADC_CFG2_ADACKEN_MASK // Asynchronous Clock Output Enable |
| bikeNomad | 1:2fa375aacece | 30 | | ADC_CFG2_ADHSC_MASK // High-Speed Configuration |
| bikeNomad | 1:2fa375aacece | 31 | | ADC_CFG2_ADLSTS(0); // Long Sample Time Select = 24 clocks |
| bikeNomad | 1:2fa375aacece | 32 | |
| bikeNomad | 1:2fa375aacece | 33 | // set up for averaging 16 samples at 125KHz sample rate => 7812.5 samples/sec |
| bikeNomad | 1:2fa375aacece | 34 | ADC0->SC3 = ADC_SC3_AVGE_MASK // Hardware Average Enable |
| bikeNomad | 1:2fa375aacece | 35 | | ADC_SC3_AVGS(2) // 16 Samples Averaged |
| bikeNomad | 1:2fa375aacece | 36 | | ADC_SC3_ADCO_MASK; // contin conversion |
| bikeNomad | 1:2fa375aacece | 37 | } |
| bikeNomad | 1:2fa375aacece | 38 | |
| bikeNomad | 1:2fa375aacece | 39 | void enable_interrupt() { |
| bikeNomad | 1:2fa375aacece | 40 | ADC0->SC1[0] |= ADC_SC1_AIEN_MASK; // enable interrupt |
| bikeNomad | 1:2fa375aacece | 41 | ADC0->SC1[1] |= ADC_SC1_AIEN_MASK; // enable interrupt |
| bikeNomad | 1:2fa375aacece | 42 | } |
| bikeNomad | 1:2fa375aacece | 43 | void disable_interrupt() { |
| bikeNomad | 1:2fa375aacece | 44 | ADC0->SC1[0] &= ~ADC_SC1_AIEN_MASK; // disable interrupt |
| bikeNomad | 1:2fa375aacece | 45 | ADC0->SC1[1] &= ~ADC_SC1_AIEN_MASK; // disable interrupt |
| bikeNomad | 1:2fa375aacece | 46 | } |
| bikeNomad | 1:2fa375aacece | 47 | |
| bikeNomad | 1:2fa375aacece | 48 | }; |
| bikeNomad | 1:2fa375aacece | 49 | |
| bikeNomad | 1:2fa375aacece | 50 | } |
| bikeNomad | 1:2fa375aacece | 51 | |
| bikeNomad | 1:2fa375aacece | 52 | #endif |