differential input adc board K64F Compatible hal freescale K64F
Dependents: trms_helloworld AnalogIn_Diff_helloworld
Fork of AnalogIn_Diff by
Diff: AnalohIn_Diff.cpp
- Revision:
- 0:0f6f4be28e21
- Child:
- 1:7b36e4381d83
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/AnalohIn_Diff.cpp Tue May 20 00:58:33 2014 +0000
@@ -0,0 +1,34 @@
+#include "mbed.h"
+#include "AnalogIn_Diff.h"
+
+
+AnalogIn_Diff::AnalogIn_Diff(int channel) : ch(channel) {
+ if(ch) BW_SIM_SCGC3_ADC1(1);
+ else BW_SIM_SCGC6_ADC0(1);
+ BW_ADC_SC1n_ADCH(ch, 0, 0x01);
+ BW_ADC_SC1n_DIFF(ch, 0, 1);
+ BW_ADC_CFG1_ADICLK(ch, 0);
+ BW_ADC_CFG1_MODE(ch, 3);
+ BW_ADC_CFG1_ADLSMP(ch, 0); //
+ BW_ADC_CFG1_ADIV(ch, 3);
+ BW_ADC_CFG1_ADLPC(ch, 0);
+}
+
+AnalogIn_Diff::~AnalogIn_Diff() { }
+
+int16_t AnalogIn_Diff::read_16(void) {
+ BW_ADC_SC1n_ADCH(ch, 0, 0x01);
+ while(!BR_ADC_SC1n_COCO(ch, 0));
+ return(BR_ADC_Rn_D(ch, 0));
+}
+
+float AnalogIn_Diff::read(void) {
+ int16_t i;
+ float t;
+ BW_ADC_SC1n_ADCH(ch, 0, 0x01);
+ while(!BR_ADC_SC1n_COCO(ch, 0));
+ i = BR_ADC_Rn_D(ch, 0);
+ t = ((float) i);
+ t = t / 32768.0f;
+ return(t);
+}
frederic blanc

ADC DIFF K64F