card.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "card.h"
  2. #define BL_RED OCR1B
  3. #define BL_GREEN OCR1A
  4. #define BL_BLUE OCR1C
  5. void backlight_init_ports(void)
  6. {
  7. // Set B5, B6, and B7 as output
  8. DDRB |= (1<<7)|(1<<6)|(1<<5);
  9. // Setup PWM
  10. ICR1 = 0xFFFF;
  11. TCCR1A = 0b10101010;
  12. TCCR1B = 0b00011001;
  13. BL_RED = 0xFFFF;
  14. BL_GREEN = 0xFFFF;
  15. BL_BLUE = 0xFFFF;
  16. }
  17. void backlight_set(uint8_t level)
  18. {
  19. // Set the RGB color
  20. switch (level)
  21. {
  22. case 0:
  23. // Off
  24. BL_RED = 0xFFFF;
  25. BL_GREEN = 0xFFFF;
  26. BL_BLUE = 0xFFFF;
  27. break;
  28. case 1:
  29. // Red
  30. BL_RED = 0x0000;
  31. BL_GREEN = 0xFFFF;
  32. BL_BLUE = 0xFFFF;
  33. break;
  34. case 2:
  35. // Green
  36. BL_RED = 0xFFFF;
  37. BL_GREEN = 0x0000;
  38. BL_BLUE = 0xFFFF;
  39. break;
  40. case 3:
  41. // Blue
  42. BL_RED = 0xFFFF;
  43. BL_GREEN = 0xFFFF;
  44. BL_BLUE = 0x0000;
  45. break;
  46. case 4:
  47. // Magenta
  48. BL_RED = 0x4000;
  49. BL_GREEN = 0x4000;
  50. BL_BLUE = 0x4000;
  51. break;
  52. case 5:
  53. // Purple
  54. BL_RED = 0x0000;
  55. BL_GREEN = 0xFFFF;
  56. BL_BLUE = 0x0000;
  57. break;
  58. case 6:
  59. // Yellow
  60. BL_RED = 0x0000;
  61. BL_GREEN = 0x0000;
  62. BL_BLUE = 0xFFFF;
  63. break;
  64. default:
  65. xprintf("Unknown level: %d\n", level);
  66. }
  67. }