不韋 呂 / UIT_ADDA

Dependents:   UIT2_MovingAverage UIT2_AllpassReverb UIT2_CombReverb UIT2_FIR_LPF_Symmetry ... more

Committer:
MikamiUitOpen
Date:
Mon Oct 20 03:01:11 2014 +0000
Revision:
0:6e0ed5adfe47
Child:
5:651809e96a2d
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:6e0ed5adfe47 1 //------------------------------------------------------
MikamiUitOpen 0:6e0ed5adfe47 2 // Class for ADC using TIM2 trigger -- Header
MikamiUitOpen 0:6e0ed5adfe47 3 //
MikamiUitOpen 0:6e0ed5adfe47 4 // 2014/10/04, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:6e0ed5adfe47 5 //------------------------------------------------------
MikamiUitOpen 0:6e0ed5adfe47 6
MikamiUitOpen 0:6e0ed5adfe47 7 #ifndef ADC_BASE_HPP
MikamiUitOpen 0:6e0ed5adfe47 8 #define ADC_BASE_HPP
MikamiUitOpen 0:6e0ed5adfe47 9
MikamiUitOpen 0:6e0ed5adfe47 10 #include "mbed.h"
MikamiUitOpen 0:6e0ed5adfe47 11
MikamiUitOpen 0:6e0ed5adfe47 12 namespace Mikami
MikamiUitOpen 0:6e0ed5adfe47 13 {
MikamiUitOpen 0:6e0ed5adfe47 14 class ADC_Base
MikamiUitOpen 0:6e0ed5adfe47 15 {
MikamiUitOpen 0:6e0ed5adfe47 16 private:
MikamiUitOpen 0:6e0ed5adfe47 17 // Using mbed library for ADC
MikamiUitOpen 0:6e0ed5adfe47 18 AnalogIn adc_;
MikamiUitOpen 0:6e0ed5adfe47 19 // Default constructor is not defined in AnalogIn class
MikamiUitOpen 0:6e0ed5adfe47 20 AnalogIn* adc2_;
MikamiUitOpen 0:6e0ed5adfe47 21 AnalogIn* adc3_;
MikamiUitOpen 0:6e0ed5adfe47 22
MikamiUitOpen 0:6e0ed5adfe47 23 // Pins for Analog input
MikamiUitOpen 0:6e0ed5adfe47 24 const PinName PIN1_, PIN2_, PIN3_;
MikamiUitOpen 0:6e0ed5adfe47 25
MikamiUitOpen 0:6e0ed5adfe47 26 // Set timer to generate sampling pulse for ADC
MikamiUitOpen 0:6e0ed5adfe47 27 void SetTim2(int frequency);
MikamiUitOpen 0:6e0ed5adfe47 28
MikamiUitOpen 0:6e0ed5adfe47 29 // for inhibition of copy constructor
MikamiUitOpen 0:6e0ed5adfe47 30 ADC_Base(const ADC_Base&);
MikamiUitOpen 0:6e0ed5adfe47 31 // for inhibition of substitute operator
MikamiUitOpen 0:6e0ed5adfe47 32 ADC_Base& operator=(const ADC_Base&);
MikamiUitOpen 0:6e0ed5adfe47 33
MikamiUitOpen 0:6e0ed5adfe47 34 protected:
MikamiUitOpen 0:6e0ed5adfe47 35 // for normalize
MikamiUitOpen 0:6e0ed5adfe47 36 static const float AMP_ = 1.0f/2048.0f;
MikamiUitOpen 0:6e0ed5adfe47 37
MikamiUitOpen 0:6e0ed5adfe47 38 ADC_TypeDef* const myAdc_;
MikamiUitOpen 0:6e0ed5adfe47 39
MikamiUitOpen 0:6e0ed5adfe47 40 // Wait until completion of AD conversion
MikamiUitOpen 0:6e0ed5adfe47 41 void WaitDone()
MikamiUitOpen 0:6e0ed5adfe47 42 { while((myAdc_->SR & ADC_SR_EOC) == RESET); }
MikamiUitOpen 0:6e0ed5adfe47 43
MikamiUitOpen 0:6e0ed5adfe47 44 public:
MikamiUitOpen 0:6e0ed5adfe47 45 // Constructor
MikamiUitOpen 0:6e0ed5adfe47 46 // pin1: Pin Name for input as A0, A1, etc.
MikamiUitOpen 0:6e0ed5adfe47 47 // frequency: Sampling frequency
MikamiUitOpen 0:6e0ed5adfe47 48 // pin2: If use 2nd channel set this parameter
MikamiUitOpen 0:6e0ed5adfe47 49 // pin3: If use 3rd channel set this parameter
MikamiUitOpen 0:6e0ed5adfe47 50 ADC_Base(PinName pin1, int frequency,
MikamiUitOpen 0:6e0ed5adfe47 51 PinName pin2 = NC, PinName pin3 = NC);
MikamiUitOpen 0:6e0ed5adfe47 52
MikamiUitOpen 0:6e0ed5adfe47 53 // Read ADC with waiting, range: [0, 0x0FFF]
MikamiUitOpen 0:6e0ed5adfe47 54 virtual uint16_t Read_u16()
MikamiUitOpen 0:6e0ed5adfe47 55 {
MikamiUitOpen 0:6e0ed5adfe47 56 WaitDone();
MikamiUitOpen 0:6e0ed5adfe47 57 return myAdc_->DR;
MikamiUitOpen 0:6e0ed5adfe47 58 }
MikamiUitOpen 0:6e0ed5adfe47 59
MikamiUitOpen 0:6e0ed5adfe47 60 // Read ADC with waiting, range: [-1.0f, 1.0f]
MikamiUitOpen 0:6e0ed5adfe47 61 virtual float Read()
MikamiUitOpen 0:6e0ed5adfe47 62 {
MikamiUitOpen 0:6e0ed5adfe47 63 WaitDone();
MikamiUitOpen 0:6e0ed5adfe47 64 return AMP_*((int16_t)myAdc_->DR - 2048);
MikamiUitOpen 0:6e0ed5adfe47 65 }
MikamiUitOpen 0:6e0ed5adfe47 66
MikamiUitOpen 0:6e0ed5adfe47 67 // Select channel
MikamiUitOpen 0:6e0ed5adfe47 68 void Select1stChannel() { myAdc_->SQR3 = PIN1_; }
MikamiUitOpen 0:6e0ed5adfe47 69 void Select2ndChannel() { myAdc_->SQR3 = PIN2_; }
MikamiUitOpen 0:6e0ed5adfe47 70 void Select3rdChannel() { myAdc_->SQR3 = PIN3_; }
MikamiUitOpen 0:6e0ed5adfe47 71
MikamiUitOpen 0:6e0ed5adfe47 72 // Software start
MikamiUitOpen 0:6e0ed5adfe47 73 virtual void SoftStart()
MikamiUitOpen 0:6e0ed5adfe47 74 { myAdc_->CR2 |= ADC_CR2_SWSTART; }
MikamiUitOpen 0:6e0ed5adfe47 75
MikamiUitOpen 0:6e0ed5adfe47 76 uint32_t ReadSQR3() { return myAdc_->SQR3; }
MikamiUitOpen 0:6e0ed5adfe47 77 };
MikamiUitOpen 0:6e0ed5adfe47 78 }
MikamiUitOpen 0:6e0ed5adfe47 79 #endif // ADC_BASE_HPP
MikamiUitOpen 0:6e0ed5adfe47 80
MikamiUitOpen 0:6e0ed5adfe47 81
MikamiUitOpen 0:6e0ed5adfe47 82
MikamiUitOpen 0:6e0ed5adfe47 83