Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: MAX518.cpp
- Revision:
- 1:aec29e73ffc1
- Parent:
- 0:8ebf1c452028
- Child:
- 3:96d5489ff1ab
diff -r 8ebf1c452028 -r aec29e73ffc1 MAX518.cpp
--- a/MAX518.cpp Thu Dec 20 10:36:17 2012 +0000
+++ b/MAX518.cpp Thu Dec 20 10:45:27 2012 +0000
@@ -1,105 +1,104 @@
-/* MAX518 mbed interface library
- * Copyright (c) 2012 ppatel
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#include "MAX518.h"
-#include "mbed.h"
-
-// Class constructor, create i2c connection, update instance variables
-DAC::DAC(PinName sda, PinName scl, int address, int freq, bool ack) : i2c(sda, scl) {
- _address = address;
- _ack = ack;
- i2c.frequency(freq);
-}
-
-// Set output of both DAC channels with ints 0 - 255
-bool DAC::setDAC(int a, int b) {
- if (a > 255 || a < 0 || b > 255 || b < 0)
- return false; // Return if int a or int b is out of range
- int check = 0; // Counter for ACK signals
-
- i2c.start();
- check += i2c.write(_address); // Write address
- check += i2c.write(0); // Select Channel 1
- check += i2c.write(a); // Write output value
- check += i2c.write(1); // Select Channel 2
- check += i2c.write(b); // Write output value
- i2c.stop(); // End communication (trigger DAC to update outputs)
-
- if (_ack && check != 5) return false; // Return false if device did not acknowledge when expected
- else return true;
-}
-
-// Set output of DAC Channel 1 with int 0 - 255
-bool DAC::setCh1(int n) {
- if (n > 255 || n < 0) return false; // Return if n is out of range
- int check = 0; // Counter for ACK signals
-
- i2c.start();
- check += i2c.write(_address); // Write address
- check += i2c.write(0); // Select Channel 1
- check += i2c.write(n); // Write output value
- i2c.stop(); // End communication (trigger DAC to update outputs)
-
- if (_ack && check != 3) return false; // Return false if device did not acknowledge when expected
- else return true;
-}
-
-// Set output of DAC Channel 2 with int 0 - 255
-bool DAC::setCh2(int n) {
- if (n > 255 || n < 0) return false; // Return if n is out of range
- int check = 0; // Counter for ACK signals
-
- i2c.start();
- check += i2c.write(_address); // Write address
- check += i2c.write(1); // Select Channel 1
- check += i2c.write(n); // Write output value
- i2c.stop(); // End communication (trigger DAC to update outputs)
-
- if (_ack && check != 3) return false; // Return false if device did not acknowledge when expected
- else return true;
-}
-
-// Reset DAC (all outputs to 0)
-bool DAC::reset() {
- int check = 0; // Counter for ACK signals
-
- i2c.start();
- check += i2c.write(_address); // Write address
- check += i2c.write(16); // Reset command (all outputs to 0)
- i2c.stop(); // End communication (trigger DAC to update)
-
- if (_ack && check != 2) return false; // Return false if device did not acknowledge when expected
- else return true;
-}
-
-// Power down DAC into silent monitoring mode (outputs also go to 0)
-bool DAC::powerDown() {
- int check = 0; // Counter for ACK signals
-
- i2c.start();
- check += i2c.write(_address); // Write address
- check += i2c.write(8); // Power down DAC into silent mode (outputs also go to 0)
- i2c.stop(); // End communication (trigger DAC to update)
-
- if (_ack && check != 2) return false; // Return false if device did not acknowledge when expected
- else return true;
+/* Copyright (c) <2012> <P. Patel>, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+// ------------------------------ MAX518 Interfacing Library ------------------------------------
+
+
+#include "MAX518.h"
+#include "mbed.h"
+
+// Class constructor, create i2c connection, update instance variables
+DAC::DAC(PinName sda, PinName scl, int address, int freq, bool ack) : i2c(sda, scl) {
+ _address = address;
+ _ack = ack;
+ i2c.frequency(freq);
+}
+
+// Set output of both DAC channels with ints 0 - 255
+bool DAC::setDAC(int a, int b) {
+ if (a > 255 || a < 0 || b > 255 || b < 0)
+ return false; // Return if int a or int b is out of range
+ int check = 0; // Counter for ACK signals
+
+ i2c.start();
+ check += i2c.write(_address); // Write address
+ check += i2c.write(0); // Select Channel 1
+ check += i2c.write(a); // Write output value
+ check += i2c.write(1); // Select Channel 2
+ check += i2c.write(b); // Write output value
+ i2c.stop(); // End communication (trigger DAC to update outputs)
+
+ if (_ack && check != 5) return false; // Return false if device did not acknowledge when expected
+ else return true;
+}
+
+// Set output of DAC Channel 1 with int 0 - 255
+bool DAC::setCh1(int n) {
+ if (n > 255 || n < 0) return false; // Return if n is out of range
+ int check = 0; // Counter for ACK signals
+
+ i2c.start();
+ check += i2c.write(_address); // Write address
+ check += i2c.write(0); // Select Channel 1
+ check += i2c.write(n); // Write output value
+ i2c.stop(); // End communication (trigger DAC to update outputs)
+
+ if (_ack && check != 3) return false; // Return false if device did not acknowledge when expected
+ else return true;
+}
+
+// Set output of DAC Channel 2 with int 0 - 255
+bool DAC::setCh2(int n) {
+ if (n > 255 || n < 0) return false; // Return if n is out of range
+ int check = 0; // Counter for ACK signals
+
+ i2c.start();
+ check += i2c.write(_address); // Write address
+ check += i2c.write(1); // Select Channel 1
+ check += i2c.write(n); // Write output value
+ i2c.stop(); // End communication (trigger DAC to update outputs)
+
+ if (_ack && check != 3) return false; // Return false if device did not acknowledge when expected
+ else return true;
+}
+
+// Reset DAC (all outputs to 0)
+bool DAC::reset() {
+ int check = 0; // Counter for ACK signals
+
+ i2c.start();
+ check += i2c.write(_address); // Write address
+ check += i2c.write(16); // Reset command (all outputs to 0)
+ i2c.stop(); // End communication (trigger DAC to update)
+
+ if (_ack && check != 2) return false; // Return false if device did not acknowledge when expected
+ else return true;
+}
+
+// Power down DAC into silent monitoring mode (outputs also go to 0)
+bool DAC::powerDown() {
+ int check = 0; // Counter for ACK signals
+
+ i2c.start();
+ check += i2c.write(_address); // Write address
+ check += i2c.write(8); // Power down DAC into silent mode (outputs also go to 0)
+ i2c.stop(); // End communication (trigger DAC to update)
+
+ if (_ack && check != 2) return false; // Return false if device did not acknowledge when expected
+ else return true;
}
\ No newline at end of file