summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDiego Barrios Romero <eldruin@gmail.com>2018-11-08 19:08:57 +0100
committerDiego Barrios Romero <eldruin@gmail.com>2018-11-08 19:08:57 +0100
commitdf30ade977dceef79b69fa8d7fe193bcc23d35c3 (patch)
tree98ceee01369a5a2ebd9f1e80f8b09bc271c3f01f /src
parente316baaf8ca226caa2447041e1d895fb72ed4f19 (diff)
downloadads1x1x-async-df30ade977dceef79b69fa8d7fe193bcc23d35c3.tar.gz
ads1x1x-async-df30ade977dceef79b69fa8d7fe193bcc23d35c3.tar.xz
ads1x1x-async-df30ade977dceef79b69fa8d7fe193bcc23d35c3.zip
Add support for setting the comparator mode
Diffstat (limited to 'src')
-rw-r--r--src/devices/ads1x1x/features/mod.rs2
-rw-r--r--src/devices/ads1x1x/features/tier2.rs23
-rw-r--r--src/lib.rs19
3 files changed, 43 insertions, 1 deletions
diff --git a/src/devices/ads1x1x/features/mod.rs b/src/devices/ads1x1x/features/mod.rs
index ad26258..c24b7b4 100644
--- a/src/devices/ads1x1x/features/mod.rs
+++ b/src/devices/ads1x1x/features/mod.rs
@@ -2,4 +2,4 @@
//! support.
mod tier1;
-
+mod tier2;
diff --git a/src/devices/ads1x1x/features/tier2.rs b/src/devices/ads1x1x/features/tier2.rs
new file mode 100644
index 0000000..d238691
--- /dev/null
+++ b/src/devices/ads1x1x/features/tier2.rs
@@ -0,0 +1,23 @@
+//! Tier 2 features.
+//!
+//! These are the features included only in ADS1x14, ADS1x15
+
+use { Ads1x1x, Error, interface, ic, ComparatorMode, Register, BitFlags };
+
+impl<DI, IC, MODE, E> Ads1x1x<DI, IC, MODE>
+where
+ DI: interface::WriteData<Error = E>,
+ IC: ic::Resolution + ic::Tier2Features
+{
+ /// Set comparator mode
+ pub fn set_comparator_mode(&mut self, mode: ComparatorMode) -> Result<(), Error<E>> {
+ let config;
+ match mode {
+ ComparatorMode::Traditional => config = self.config.with_low(BitFlags::COMP_MODE),
+ ComparatorMode::Window => config = self.config.with_high(BitFlags::COMP_MODE)
+ }
+ self.iface.write_register(Register::CONFIG, config.bits)?;
+ self.config = config;
+ Ok(())
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index 5d4c3fa..a35f8f7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -98,6 +98,24 @@ pub enum DataRate {
Sps3300
}
+/// Comparator mode (only for ADS1x14, ADS1x15)
+#[derive(Debug, Clone)]
+pub enum ComparatorMode {
+ /// Traditional comparator (default)
+ ///
+ /// In this mode the ALERT/RDY pin asserts (according to selected active
+ /// polarity) when the conversion data exceeds the limit set as *high*
+ /// threshold and remains active until the conversion data falls below the
+ /// value set as *low* threshold.
+ Traditional,
+ /// Window comparator
+ ///
+ /// In this mode the ALERT/RDY pin asserts (according to selected active
+ /// polarity) when the conversion data exceeds the value set as *high*
+ /// threshold or goes below the value set as *low* temperature threshold.
+ Window
+}
+
/// Possible slave addresses
#[derive(Debug, Clone)]
pub enum SlaveAddr {
@@ -141,6 +159,7 @@ impl BitFlags {
const DR2 : u16 = 0b0000_0000_1000_0000;
const DR1 : u16 = 0b0000_0000_0100_0000;
const DR0 : u16 = 0b0000_0000_0010_0000;
+ const COMP_MODE : u16 = 0b0000_0000_0001_0000;
}