matrix_scanrate.c 1013 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <stdint.h>
  2. #include <stdbool.h>
  3. #include <avr/io.h>
  4. #include "wait.h"
  5. #include "print.h"
  6. #include "debug.h"
  7. #include "util.h"
  8. #include "matrix.h"
  9. #include "timer.h"
  10. #ifdef CONSOLE_ENABLE
  11. static uint16_t matrix_scan_count = 0;
  12. static uint32_t matrix_timer = 0;
  13. void matrix_check_scan_rate(void) {
  14. matrix_scan_count++;
  15. if (matrix_scan_count > 1000) {
  16. uint32_t timer_now = timer_read32();
  17. uint16_t ms_per_thousand = TIMER_DIFF_32(timer_now, matrix_timer);
  18. uint16_t rate_per_second = 1000000UL / ms_per_thousand;
  19. print("scan_rate: ");
  20. pdec(rate_per_second);
  21. print("\n");
  22. matrix_timer = timer_now;
  23. matrix_scan_count = 0;
  24. }
  25. }
  26. static uint32_t last_scan_time = 0;
  27. void matrix_time_between_scans(void) {
  28. if (timer_elapsed(last_scan_time) > 1)
  29. {
  30. print(">1ms elapsed since last scan: ");
  31. pdec(timer_elapsed(last_scan_time));
  32. print("\n");
  33. }
  34. last_scan_time = timer_read();
  35. }
  36. #endif