Line Health / SX1509
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SX1509.h Source File

SX1509.h

00001 #ifndef SX1509_H
00002 #define SX1509_H
00003 
00004 #include "mbed.h"
00005 
00006 // DEFINES - SX1509 Configuration
00007 // ====================================================
00008 #define SX1509_FREQUENCY    400000
00009 #define SX1509_ADDR         (0x3E<<1)
00010 
00011 // DEFINES - Register Addresses
00012 // ====================================================
00013 #define REGINPUTDISABLEB    (0x00)
00014 #define REGINPUTDISABLEA    (0x01)
00015 #define REGLONGSLEWB        (0x02)
00016 #define REGLONGSLEWA        (0x03)
00017 #define REGLOWDRIVEB        (0x04)
00018 #define REGLOWDRIVEA        (0x05)
00019 #define REGPULLUPB          (0x06)
00020 #define REGPULLUPA          (0x07)
00021 #define REGPULLDOWNB        (0x08)
00022 #define REGPULLDOWNA        (0x09)
00023 #define REGOPENDRAINB       (0x0A)
00024 #define REGOPENDRAINA       (0x0B)
00025 #define REGPOLARITYB        (0x0C)
00026 #define REGPOLARITYA        (0x0D)
00027 #define REGDIRB             (0x0E)
00028 #define REGDIRA             (0x0F)
00029 #define REGDATAB            (0x10)
00030 #define REGDATAA            (0x11)
00031 #define REGINTERRUPTMASKB   (0x12)
00032 #define REGINTERRUPTMASKA   (0x13)
00033 #define REGSENSEHIGHB       (0x14)
00034 #define REGSENSELOWB        (0x15)
00035 #define REGSENSEHIGHA       (0x16)
00036 #define REGSENSELOWA        (0x17)
00037 #define REGINTERRUPTSOURCEB (0x18)
00038 #define REGINTERRUPTSOURCEA (0x19)
00039 #define REGEVENTSTATUSB     (0x1A)
00040 #define REGEVENTSTATUSA     (0x1B)
00041 #define REGLEVELSHIFTER1    (0x1C)
00042 #define REGLEVELSHIFTER2    (0x1D)
00043 #define REGCLOCK            (0x1E)
00044 #define REGMISC             (0x1F)
00045 #define REGLEDDRIVERENABLEB (0x20)
00046 #define REGLEDDRIVERENABLEA (0x21)
00047 // Debounce
00048 #define REGDEBOUNCECONFIG   (0x22)
00049 #define REGDEBOUNCEENABLEB  (0x23)
00050 #define REGDEBOUNCEENABLEA  (0x24)
00051 #define REGKEYCONFIG1       (0x25)
00052 #define REGKEYCONFIG2       (0x26)
00053 #define REGKEYDATA1         (0x27)
00054 #define REGKEYDATA2         (0x28)
00055 // LED Driver
00056 #define REGTON0             (0x29)
00057 #define REGION0             (0x2A)
00058 #define REGOFF0             (0x2B)
00059 #define REGTON1             (0x2C)
00060 #define REGION1             (0x2D)
00061 #define REGOFF1             (0x2E)
00062 #define REGTON2             (0x2F)
00063 #define REGION2             (0x30)
00064 #define REGOFF2             (0x31)
00065 #define REGTON3             (0x32)
00066 #define REGION3             (0x33)
00067 #define REGOFF3             (0x34)
00068 #define REGTON4             (0x35)
00069 #define REGION4             (0x36)
00070 #define REGOFF4             (0x37)
00071 #define REGTRISE4           (0x38)
00072 #define REGTFALL4           (0x39)
00073 #define REGTON5             (0x3A)
00074 #define REGION5             (0x3B)
00075 #define REGOFF5             (0x3C)
00076 #define REGTRISE5           (0x3D)
00077 #define REGTFALL5           (0x3E)
00078 #define REGTON6             (0x3F)
00079 #define REGION6             (0x40)
00080 #define REGOFF6             (0x41)
00081 #define REGTRISE6           (0x42)
00082 #define REGTFALL6           (0x43)
00083 #define REGTON7             (0x44)
00084 #define REGION7             (0x45)
00085 #define REGOFF7             (0x46)
00086 #define REGTRISE7           (0x47)
00087 #define REGTFALL7           (0x48)
00088 #define REGTON8             (0x49)
00089 #define REGION8             (0x4A)
00090 #define REGOFF8             (0x4B)
00091 #define REGTON9             (0x4C)
00092 #define REGION9             (0x4D)
00093 #define REGOFF9             (0x4E)
00094 #define REGTON10            (0x4F)
00095 #define REGION10            (0x50)
00096 #define REGOFF10            (0x51)
00097 #define REGTON11            (0x52)
00098 #define REGION11            (0x53)
00099 #define REGOFF11            (0x54)
00100 #define REGTON12            (0x55)
00101 #define REGION12            (0x56)
00102 #define REGOFF12            (0x57)
00103 #define REGTRISE12          (0x58)
00104 #define REGTFALL12          (0x59)
00105 #define REGTON13            (0x5A)
00106 #define REGION13            (0x5B)
00107 #define REGOFF13            (0x5C)
00108 #define REGTRISE13          (0x5D)
00109 #define REGTFALL13          (0x5E)
00110 #define REGTON14            (0x5F)
00111 #define REGION14            (0x60)
00112 #define REGOFF14            (0x61)
00113 #define REGTRISE14          (0x62)
00114 #define REGTFALL14          (0x63)
00115 #define REGTON15            (0x64)
00116 #define REGION15            (0x65)
00117 #define REGOFF15            (0x66)
00118 #define REGTRISE15          (0x67)
00119 #define REGTFALL15          (0x68)
00120 // Misc
00121 #define REGHIGHINPUTB       (0x69)
00122 #define REGHIGHINPUTA       (0x6A)
00123 // Software Reset
00124 #define REGRESET            (0x7D)
00125 // Test Registers (do not write)
00126 #define REGTEST1            (0x7E)
00127 #define REGTEST2            (0x7F)
00128 
00129 #define LINEAR 0
00130 #define LOG 1
00131 
00132 class SX1509{
00133     private:
00134         I2C i2c;
00135         uint8_t div_g;
00136         
00137         void i2cWrite8(char reg, char data);
00138         uint8_t i2cRead8(char reg);
00139         uint16_t i2cRead16(char reg);
00140            
00141     public:
00142         SX1509(PinName sda, PinName scl);
00143         
00144         enum mode_t {INPUT, OUTPUT, LED};
00145         
00146         bool init();
00147         void enableLEDDriver();
00148         void enableLEDDriver(uint8_t div, bool mode);
00149         void setLEDMode(bool mode);
00150         void setMode(uint8_t pin, mode_t mode);
00151         void setBreath(uint8_t pin, uint8_t fadeIn, uint8_t fadeOut);
00152         void setBlink(uint8_t pin, uint8_t tOn, uint8_t tOff, uint8_t iOff);
00153         void writePin(uint8_t pin, uint8_t intensity);
00154         void setReset();
00155         void fullReset();
00156 };
00157 
00158 
00159 #endif