Keyboard firmwares for Atmel AVR and Cortex-M
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.

keyboard-i2c-slave.c 833B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "../i2c-slave.h"
  2. #include "../serial.h"
  3. #include "uno-matrix.h"
  4. #include <avr/io.h>
  5. #include <avr/interrupt.h>
  6. #include <util/delay.h>
  7. void setup(void) {
  8. // give some time for noise to clear
  9. _delay_us(1000);
  10. // turn off arduino uno's led on pin 13
  11. DDRB |= (1 << 5);
  12. PORTB &= ~(1 << 5);
  13. matrix_init();
  14. /* i2c_slave_init(0x32); */
  15. serial_slave_init();
  16. /* serial_slave_buffer[0] = 0xa1; */
  17. /* serial_slave_buffer[1] = 0x52; */
  18. /* serial_slave_buffer[2] = 0xa2; */
  19. /* serial_slave_buffer[3] = 0x67; */
  20. // need interrupts for i2c slave code to work
  21. sei();
  22. }
  23. void loop(void) {
  24. matrix_scan();
  25. for(int i=0; i<MATRIX_ROWS; ++i) {
  26. slaveBuffer[i] = matrix_get_row(i);
  27. serial_slave_buffer[i] = slaveBuffer[i];
  28. }
  29. }
  30. int main(int argc, char *argv[]) {
  31. setup();
  32. while (1)
  33. loop();
  34. }