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.

51 lines
845 B

  1. #include <stdbool.h>
  2. #include "ps2_io.h"
  3. #include "gpio_api.h"
  4. static gpio_t clock;
  5. static gpio_t data;
  6. /*
  7. * Clock
  8. */
  9. void clock_init(void) {
  10. gpio_init(&clock, P0_9);
  11. gpio_mode(&clock, OpenDrain | PullNone);
  12. }
  13. void clock_lo(void) {
  14. gpio_dir(&clock, PIN_OUTPUT);
  15. gpio_write(&clock, 0);
  16. }
  17. void clock_hi(void) {
  18. gpio_dir(&clock, PIN_OUTPUT);
  19. gpio_write(&clock, 1);
  20. }
  21. bool clock_in(void) {
  22. gpio_dir(&clock, PIN_INPUT);
  23. return gpio_read(&clock);
  24. }
  25. /*
  26. * Data
  27. */
  28. void data_init(void) {
  29. gpio_init(&data, P0_8);
  30. gpio_mode(&data, OpenDrain | PullNone);
  31. }
  32. void data_lo(void) {
  33. gpio_dir(&data, PIN_OUTPUT);
  34. gpio_write(&data, 0);
  35. }
  36. void data_hi(void) {
  37. gpio_dir(&data, PIN_OUTPUT);
  38. gpio_write(&data, 1);
  39. }
  40. bool data_in(void) {
  41. gpio_dir(&data, PIN_INPUT);
  42. return gpio_read(&data);
  43. }