qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

sx60.c (808B)


      1 #include "sx60.h"
      2 #include "i2c_master.h"
      3 
      4 
      5 bool i2c_initialized = 0;
      6 uint8_t mcp23018_status = 0x20;
      7 
      8 uint8_t init_mcp23018(void) {
      9     mcp23018_status = 0x20;
     10 
     11     /* I2C subsystem */
     12 
     13     if (i2c_initialized == 0) {
     14         i2c_init();  // on pins D(1,0)
     15         i2c_initialized = true;
     16         _delay_ms(1000);
     17     }
     18 
     19     /* B Pins are Row, A pins are Columns 
     20        Set them to output */
     21     static uint8_t direction[2] = {
     22         0b11111111,
     23         0b00000000,
     24     };
     25     static uint8_t pullup[2] = {
     26         0b11111111,
     27         0b00000000,
     28     };
     29 
     30     mcp23018_status = i2c_write_register(I2C_ADDR, IODIRA, direction, 2, I2C_TIMEOUT);
     31     if (mcp23018_status) return mcp23018_status;
     32 
     33     mcp23018_status = i2c_write_register(I2C_ADDR, GPPUA, pullup, 2, I2C_TIMEOUT);
     34     return mcp23018_status;
     35 }