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.

ps2_io_mbed.c 842B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. {
  11. gpio_init(&clock, P0_9);
  12. gpio_mode(&clock, OpenDrain|PullNone);
  13. }
  14. void clock_lo(void)
  15. {
  16. gpio_dir(&clock, PIN_OUTPUT);
  17. gpio_write(&clock, 0);
  18. }
  19. void clock_hi(void)
  20. {
  21. gpio_dir(&clock, PIN_OUTPUT);
  22. gpio_write(&clock, 1);
  23. }
  24. bool clock_in(void)
  25. {
  26. gpio_dir(&clock, PIN_INPUT);
  27. return gpio_read(&clock);
  28. }
  29. /*
  30. * Data
  31. */
  32. void data_init(void)
  33. {
  34. gpio_init(&data, P0_8);
  35. gpio_mode(&data, OpenDrain|PullNone);
  36. }
  37. void data_lo(void)
  38. {
  39. gpio_dir(&data, PIN_OUTPUT);
  40. gpio_write(&data, 0);
  41. }
  42. void data_hi(void)
  43. {
  44. gpio_dir(&data, PIN_OUTPUT);
  45. gpio_write(&data, 1);
  46. }
  47. bool data_in(void)
  48. {
  49. gpio_dir(&data, PIN_INPUT);
  50. return gpio_read(&data);
  51. }