From: smckown Date: Tue, 16 Sep 2008 21:22:25 +0000 (+0000) Subject: ADC functionality still questionable. X-Git-Tag: release/2.1.0-1~32 X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=commitdiff_plain;h=070aae08a0599fabd7ee6b46a91be83e6f313d50;hp=34937fdf4124537bd6ddf43bef3e1874660f8ad7;p=tinyos-2.x.git ADC functionality still questionable. --- diff --git a/tos/platforms/tmirws/sensors/BattAdcC.nc b/tos/platforms/tmirws/sensors/BattAdcC.nc deleted file mode 100644 index aa0a90a4..00000000 --- a/tos/platforms/tmirws/sensors/BattAdcC.nc +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2008, Titanium Mirror, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of Titanium Mirror, Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Reads the ADC pin connected to the LiPoly battery. The connection is made - * via a resistor divider where the battery voltage is 3x that read by the ADC. - * Therefore, BattV = ADC / 4096 * 1.5 * 3. - * - * @author R. Steve McKown - */ - -generic configuration BattAdcC() { - provides interface Read; - provides interface ReadStream; - - provides interface Resource; - provides interface ReadNow; -} -implementation { - components new AdcReadClientC(); - Read = AdcReadClientC; - - components new AdcReadStreamClientC(); - ReadStream = AdcReadStreamClientC; - - components BattAdcP; - AdcReadClientC.AdcConfigure -> BattAdcP; - AdcReadStreamClientC.AdcConfigure -> BattAdcP; - - components new AdcReadNowClientC(); - Resource = AdcReadNowClientC; - ReadNow = AdcReadNowClientC; - - AdcReadNowClientC.AdcConfigure -> BattAdcP; -} diff --git a/tos/platforms/tmirws/sensors/BattAdcP.nc b/tos/platforms/tmirws/sensors/BattAdcP.nc deleted file mode 100644 index 08c0b064..00000000 --- a/tos/platforms/tmirws/sensors/BattAdcP.nc +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2008, Titanium Mirror, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of Titanium Mirror, Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Battery ADC reading. - * - * @author R. Steve McKown - */ - -#include "Msp430Adc12.h" - -module BattAdcP { - provides interface AdcConfigure; -} -implementation { - - const msp430adc12_channel_config_t config = { - inch: INPUT_CHANNEL_A0, - sref: REFERENCE_VREFplus_AVss, - ref2_5v: REFVOLT_LEVEL_1_5, - adc12ssel: SHT_SOURCE_ADC12OSC, - adc12div: SHT_CLOCK_DIV_1, - sht: SAMPLE_HOLD_8_CYCLES, - sampcon_ssel: SAMPCON_SOURCE_ACLK, - sampcon_id: SAMPCON_CLOCK_DIV_1 - }; - - async command const msp430adc12_channel_config_t* AdcConfigure.getConfiguration() - { - return &config; - } -} diff --git a/tos/platforms/tmirws/sensors/BatteryAdcC.nc b/tos/platforms/tmirws/sensors/BatteryAdcC.nc new file mode 100644 index 00000000..d600a5ba --- /dev/null +++ b/tos/platforms/tmirws/sensors/BatteryAdcC.nc @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2008, Titanium Mirror, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of Titanium Mirror, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Reads the ADC pin connected to the LiPoly battery. The connection is made + * via a resistor divider where the battery voltage is 3x that read by the ADC. + * Therefore, BattV = ADC / 4096 * 1.5 * 3. + * + * @author R. Steve McKown + */ + +generic configuration BatteryAdcC() { + provides interface Read; + provides interface ReadStream; + + provides interface Resource; + provides interface ReadNow; +} +implementation { + components new AdcReadClientC(); + Read = AdcReadClientC; + + components new AdcReadStreamClientC(); + ReadStream = AdcReadStreamClientC; + + components BatteryAdcP; + AdcReadClientC.AdcConfigure -> BatteryAdcP; + AdcReadStreamClientC.AdcConfigure -> BatteryAdcP; + + components new AdcReadNowClientC(); + Resource = AdcReadNowClientC; + ReadNow = AdcReadNowClientC; + + AdcReadNowClientC.AdcConfigure -> BatteryAdcP; +} diff --git a/tos/platforms/tmirws/sensors/BatteryAdcP.nc b/tos/platforms/tmirws/sensors/BatteryAdcP.nc new file mode 100644 index 00000000..7a4f4489 --- /dev/null +++ b/tos/platforms/tmirws/sensors/BatteryAdcP.nc @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2008, Titanium Mirror, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * - Neither the name of Titanium Mirror, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Battery ADC reading. + * + * @author R. Steve McKown + */ + +#include "Msp430Adc12.h" + +module BatteryAdcP { + provides interface AdcConfigure; +} +implementation { + /* TODO: The internal references are unsable, varying by more than 0.1V and + * jumping around. The external reference of 2.50V seems stable. + */ + const msp430adc12_channel_config_t config = { + inch: INPUT_CHANNEL_A0, +#if 0 /* internal references unstable */ + sref: REFERENCE_VREFplus_AVss, + ref2_5v: REFVOLT_LEVEL_1_5, + ref2_5v: REFVOLT_LEVEL_2_5, +#else /* external reference is stable */ + sref: REFERENCE_VeREFplus_AVss, + ref2_5v: REFVOLT_LEVEL_1_5, +#endif + adc12ssel: SHT_SOURCE_ADC12OSC, + adc12div: SHT_CLOCK_DIV_8, + sht: SAMPLE_HOLD_8_CYCLES, + sampcon_ssel: SAMPCON_SOURCE_ACLK, + sampcon_id: SAMPCON_CLOCK_DIV_1 + }; + + async command const msp430adc12_channel_config_t* AdcConfigure.getConfiguration() + { + return &config; + } +} diff --git a/tos/platforms/tmirws/sensors/PyranometerAdcP.nc b/tos/platforms/tmirws/sensors/PyranometerAdcP.nc index 11e8ad37..6fd9b3ed 100644 --- a/tos/platforms/tmirws/sensors/PyranometerAdcP.nc +++ b/tos/platforms/tmirws/sensors/PyranometerAdcP.nc @@ -39,13 +39,18 @@ module PyranometerAdcP { provides interface AdcConfigure; } implementation { - const msp430adc12_channel_config_t config = { inch: INPUT_CHANNEL_A3, +#if 0 /* internal references unstable */ sref: REFERENCE_VREFplus_AVss, ref2_5v: REFVOLT_LEVEL_1_5, + ref2_5v: REFVOLT_LEVEL_2_5, +#else /* external reference is stable */ + sref: REFERENCE_VeREFplus_AVss, + ref2_5v: REFVOLT_LEVEL_1_5, +#endif adc12ssel: SHT_SOURCE_ADC12OSC, - adc12div: SHT_CLOCK_DIV_1, + adc12div: SHT_CLOCK_DIV_8, sht: SAMPLE_HOLD_8_CYCLES, sampcon_ssel: SAMPCON_SOURCE_ACLK, sampcon_id: SAMPCON_CLOCK_DIV_1