irsan julfikar / PCA9535
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PCA9535.cpp Source File

PCA9535.cpp

00001 #include "PCA9535.h"
00002 
00003 extern Serial dbg;
00004 
00005 PCA9535::PCA9535(PinName sda, PinName scl):i2c(sda, scl)
00006 {
00007     i2c.frequency(PCA9535_FREQ);
00008 }
00009 
00010 PCA9535::~PCA9535()
00011 {
00012     
00013 }
00014 
00015 bool PCA9535::configure(char pin1, char pin2)
00016 {
00017     char data1 = pin1;
00018     char data2 = pin2;
00019     
00020     char buffer[3];
00021     
00022     buffer[0] = 0x06;
00023     buffer[1] = data1;
00024     buffer[2] = data2;
00025     
00026     dbg.printf("%.2X %.2X %.2X\r\n", buffer[0], buffer[1], buffer[2]);
00027     if(i2c.write(ADDR, buffer, 3) != 0)return 0;
00028     
00029     return 1;
00030 }
00031 
00032 bool PCA9535::write(char pin1, char pin2)
00033 {
00034     char buffer[3];
00035     buffer[0] = 0x02;
00036     buffer[1] = pin1;
00037     buffer[2] = pin2;
00038     
00039     dbg.printf("%.2X %.2X %.2X\r\n", buffer[0], buffer[1], buffer[2]);
00040     if(i2c.write(ADDR, buffer, 3) != 0)return 0;
00041     
00042     return 1;
00043 }
00044 
00045 int PCA9535::read()
00046 {
00047     char start = 0x00;
00048     char buffer[2];
00049     
00050     if(i2c.write(ADDR, &start, 1) != 0)return 0;
00051     if(i2c.read(ADDR, buffer, 2) != 0)return 0;
00052     
00053     int val = (int) (buffer[0] * 256) + buffer[1];
00054     
00055     return val;
00056 }