differential input adc board K64F Compatible hal freescale K64F

Dependents:   trms_helloworld AnalogIn_Diff_helloworld

Fork of AnalogIn_Diff by frederic blanc

Files at this revision

API Documentation at this revision

Comitter:
JimCarver
Date:
Tue May 20 00:58:33 2014 +0000
Child:
1:7b36e4381d83
Commit message:
A basic Library for the 16 bit Differential A/D in the K64F Freedom platform

Changed in this revision

AnalogIn_Diff.h Show annotated file Show diff for this revision Revisions of this file
AnalohIn_Diff.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AnalogIn_Diff.h	Tue May 20 00:58:33 2014 +0000
@@ -0,0 +1,26 @@
+
+#ifndef K64F_DIFF_A2D_H
+#define K64F_DIFF_A2D_H
+
+#include "mbed.h"
+
+
+class AnalogIn_Diff
+{
+public:
+  AnalogIn_Diff(int channel);
+
+  /**
+  * AnalogIn_Diff destructor
+  */
+  ~AnalogIn_Diff();
+   int16_t read_16(void);
+   float read(void);
+   
+private:
+
+  int ch;
+
+};
+
+#endif
\ No newline at end of file
--- /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);
+}