gjyrjyykkudt

Dependencies:   mbed MCP23017

Revision:
0:db8d4af513c0
Child:
1:5b0303768126
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCP/MCP.h	Mon Jan 20 08:46:24 2020 +0000
@@ -0,0 +1,79 @@
+#ifndef  MCP_H_
+#define  MCP_H_
+
+#include "mbed.h"
+
+#define SDA PB_7
+#define SCL PB_6
+
+#define MCP_ADDRESS 0x40
+
+// MCP register address
+#define IODIRA   0x00
+#define IODIRB   0x01
+#define IPOLA    0x02
+#define IPOLB    0x03
+#define GPINTENA 0x04
+#define GPINTENB 0x05
+#define DEFVALA  0x06
+#define DEFVALB  0x07
+#define INTCONA  0x08
+#define INTCONB  0x09
+#define IOCONA   0x0A
+#define IOCONB   0x0B
+#define GPPUA    0x0C
+#define GPPUB    0x0D
+#define INTFA    0x0E
+#define INTFB    0x0F
+#define INTCAPA  0x10
+#define INTCAPB  0x11
+#define GPIOA    0x12
+#define GPIOB    0x13
+#define OLATA    0x14
+#define OLATB    0x15
+
+typedef enum {
+    OUTPUT,
+    INPUT,
+    INPUT_PULLUP,
+}pin_mode;
+
+typedef union {
+    uint8_t port_A, port_B;
+    uint16_t all;
+}mcp_register;
+
+class MCP {
+    public:
+        /* MCP class constracter
+        /   deffult Input
+        /                                              */
+        MCP(PinName sda, PinName scl, uint8_t device_address);
+        // MCP pin define * pin number is 0 ~ 15
+        void PinMode(uint8_t pin, uint8_t mode);
+        // MCP DigitalWrite * pin number is 0 ~ 15
+        void Write(uint8_t pin, bool signal);
+        // MCP DigitalRead * pin number is 0 ~ 15
+        bool Read(uint8_t pin, bool signal);
+        // MCP initialize
+        void Initialize(void);
+        // MCP register update and read new data
+        void Update(void);
+        // i2c error check
+        bool ErrorOccurred(void);
+        
+    private:
+        I2C i2c;
+        char _read_opcode;
+        char _write_opcode;
+        
+        uint16_t _pull_data;
+        uint16_t _read_data;
+        uint16_t _write_data;
+        
+        void _Write(uint8_t address, uint8_t data);
+        void _Read(uint8_t address, uint8_t data);    
+    
+};
+
+#endif //I2C_H_
\ No newline at end of file