differential input adc board K64F Compatible hal freescale K64F
Dependents: trms_helloworld AnalogIn_Diff_helloworld
Fork of AnalogIn_Diff by
Revision 3:d17541ceae12, committed 2014-12-10
- Comitter:
- fblanc
- Date:
- Wed Dec 10 12:53:25 2014 +0000
- Parent:
- 2:ea5a4c22bd53
- Child:
- 4:a833fa5cce1e
- Commit message:
- ok;
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 |
--- a/AnalogIn_Diff.h Fri Dec 05 14:06:38 2014 +0000
+++ b/AnalogIn_Diff.h Wed Dec 10 12:53:25 2014 +0000
@@ -17,7 +17,7 @@
#ifndef ANALOGIN_DIFF_H
#define ANALOGIN_DIFF_H
-
+#include "mbed.h"
#include "mbed_assert.h"
#include "analogin_api.h"
#include "platform.h"
@@ -74,6 +74,8 @@
*/
AnalogIn_Diff(int adc_ch);
+void test (int x);
+
/** Destroy an AnalogIn_Diff
*/
~AnalogIn_Diff();
--- a/AnalohIn_Diff.cpp Fri Dec 05 14:06:38 2014 +0000
+++ b/AnalohIn_Diff.cpp Wed Dec 10 12:53:25 2014 +0000
@@ -18,10 +18,11 @@
#if FSL_FEATURE_ADC_HAS_DIFF_MODE
-AnalogIn_Diff::~AnalogIn_Diff() { }
+
AnalogIn_Diff::AnalogIn_Diff(int adc_ch)
{
+
const uint32_t temp[] = ADC_BASE_ADDRS;
for (int i = 0; i < sizeof(temp) / sizeof(temp[0]); i++)
adc_addrs[i] = temp[i];
@@ -29,7 +30,7 @@
instance=(adc_ch>>1)&1;
chnNum=(adc_ch>>0)&1;
-
+ test(1);
CLOCK_SYS_EnableAdcClock(instance);
@@ -51,24 +52,30 @@
ADC_HAL_SetClkDividerMode(adc_addrs[instance], (adc_clk_divider_mode_t)(clkdiv & 0x3));
ADC_HAL_SetRefVoltSrcMode(adc_addrs[instance], kAdcRefVoltSrcOfVref);
ADC_HAL_SetResolutionMode(adc_addrs[instance], kAdcResolutionBitOfDiffModeAs16);
- ADC_HAL_SetContinuousConvCmd(adc_addrs[instance], false);
+ ADC_HAL_SetContinuousConvCmd(adc_addrs[instance], false);//false
ADC_HAL_SetHwTriggerCmd(adc_addrs[instance], false); /* sw trigger */
ADC_HAL_SetHwAverageCmd(adc_addrs[instance], false);
//ADC_HAL_SetHwAverageMode(adc_addrs[instance], kAdcHwAverageCountOf4);
ADC_HAL_SetChnMuxMode(adc_addrs[instance], kAdcChnMuxOfB); /* only B channels are avail */
-
}
+AnalogIn_Diff::~AnalogIn_Diff() { }
+void AnalogIn_Diff::test (int x)
+{
+ printf("\r\n %i: 0x%08lx\r\n",x,(long)adc_addrs[instance]);
+}
int16_t AnalogIn_Diff::read_raws16() // Returns a 16bit signed integer
{
/* sw trigger (SC1A) */
+
ADC_HAL_ConfigChn(adc_addrs[instance], 0, false, true, chnNum);
while (!ADC_HAL_GetChnConvCompletedCmd(adc_addrs[instance], 0));
- return ADC_HAL_GetChnConvValueRAW(adc_addrs[instance], 0);
+ return ADC_HAL_GetChnConvValueRAW(adc_addrs[instance], 0);
+
}
float AnalogIn_Diff::read()
frederic blanc

ADC DIFF K64F