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: MCP/MCP.cpp
- Revision:
- 1:5b0303768126
- Parent:
- 0:db8d4af513c0
- Child:
- 2:32d2cd7d744b
--- a/MCP/MCP.cpp Mon Jan 20 08:46:24 2020 +0000
+++ b/MCP/MCP.cpp Tue Jan 21 11:10:33 2020 +0000
@@ -1,14 +1,50 @@
#include "MCP.h"
#include "mbed.h"
+#include "MCP23017.h"
MCP::MCP(PinName sda, PinName scl, uint8_t device_address)
- :i2c(sda, scl)
+ :i2c(sda, scl), mcp(i2c, device_address)
{
- _write_opcode = device_address & 0xFE; // low order bit = 0 for write
- _read_opcode = device_address | 0x01; // low order bit = 1 for read;
+ _iodir_data.all = 0xffff;
+ _pull_data.all = 0x0000;
+ _read_data.all = 0x0000;
+ _write_data.all = 0x0000;
+}
+
+void MCP::PinMode(uint8_t pin, pin_mode mode)
+{
+ if(mode == OUTPUT) {
+ _iodir_data.all &= ~(0x0001 << pin);
+ } else if(mode == INPUT) {
+ _iodir_data.all |= (0x0001 << pin);
+ } else if(mode == INPUT_PULLUP) {
+ _iodir_data.all |= (0x0001 << pin);
+ _pull_data.all |= (0x0001 << pin);
+ }
}
-void MCP::PinMode(uint8_t pin, uint8_t mode)
+void MCP::Write(uint8_t pin, bool signal)
+{
+ if(signal == 1) {
+ _write_data.all |= (0x0001 << pin);
+ } else {
+ _write_data.all &= ~(0x0001 << pin);
+ }
+}
+
+bool MCP::Read(uint8_t pin)
{
- //_pull_data
-}
\ No newline at end of file
+ return (_read_data.all >> pin) & 0x01;
+}
+
+void MCP::Update(void)
+{
+ mcp.direction(PORT_A, _iodir_data.port.port_A);
+ mcp.direction(PORT_B, _iodir_data.port.port_B);
+ mcp.configurePullUps(PORT_A, _pull_data.port.port_A);
+ mcp.configurePullUps(PORT_B, _pull_data.port.port_B);
+ _read_data.port.port_A = mcp.read(PORT_A);
+ _read_data.port.port_B = mcp.read(PORT_B);
+ // mcp.write(PORT_A, _write_data.port_A);
+ // mcp.write(PORT_B, _write_data.port_B);
+}