You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.2 KiB

[Keyboard] Georgi Support (#5384) * Working on chording * Working on chording * Got layouts in order * Initial Georgi support * forgot to add keymaps * Updated readme * Update keyboards/georgi/keymaps/template/readme.md Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/georgi.h Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/keymaps/default/keymap.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/keymaps/default/keymap.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/rules.mk Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/rules.mk Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/matrix.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/georgi.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/georgi.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/rules.mk Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/keymaps/default/keymap.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/keymaps/template/keymap.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/matrix.c Co-Authored-By: germ <jeremythegeek@gmail.com> * Disabled features, updated info * Update keyboards/georgi/config.h Co-Authored-By: germ <jeremythegeek@gmail.com> * Update keyboards/georgi/config.h Co-Authored-By: germ <jeremythegeek@gmail.com> * Fixed info.json
5 years ago
  1. #include QMK_KEYBOARD_H
  2. bool i2c_initialized = 0;
  3. i2c_status_t mcp23018_status = 0x20;
  4. void matrix_init_kb(void) {
  5. steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
  6. // (tied to Vcc for hardware convenience)
  7. //DDRB &= ~(1<<4); // set B(4) as input
  8. //PORTB &= ~(1<<4); // set B(4) internal pull-up disabled
  9. // unused pins - C7, D4, D5, D7, E6
  10. // set as input with internal pull-up enabled
  11. DDRC &= ~(1<<7);
  12. DDRD &= ~(1<<5 | 1<<4 | 1<<6 | 1<<7);
  13. DDRE &= ~(1<<6);
  14. PORTC |= (1<<7);
  15. PORTD |= (1<<5 | 1<<4 | 1<<6 | 1<<7);
  16. PORTE |= (1<<6);
  17. matrix_init_user();
  18. }
  19. uint8_t init_mcp23018(void) {
  20. print("starting init");
  21. mcp23018_status = 0x20;
  22. // I2C subsystem
  23. // uint8_t sreg_prev;
  24. // sreg_prev=SREG;
  25. // cli();
  26. if (i2c_initialized == 0) {
  27. i2c_init(); // on pins D(1,0)
  28. i2c_initialized = true;
  29. _delay_ms(1000);
  30. }
  31. // i2c_init(); // on pins D(1,0)
  32. // _delay_ms(1000);
  33. // set pin direction
  34. // - unused : input : 1
  35. // - input : input : 1
  36. // - driving : output : 0
  37. mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  38. mcp23018_status = i2c_write(IODIRA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  39. mcp23018_status = i2c_write(0b10000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  40. mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  41. i2c_stop();
  42. // set pull-up
  43. // - unused : on : 1
  44. // - input : on : 1
  45. // - driving : off : 0
  46. mcp23018_status = i2c_start(I2C_ADDR_WRITE, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  47. mcp23018_status = i2c_write(GPPUA, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  48. mcp23018_status = i2c_write(0b10000000, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  49. mcp23018_status = i2c_write(0b11111111, ERGODOX_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
  50. out:
  51. i2c_stop();
  52. // SREG=sreg_prev;
  53. //uprintf("Init %x\n", mcp23018_status);
  54. return mcp23018_status;
  55. }