diff options
Diffstat (limited to 'quantum/quantum.c')
| -rw-r--r-- | quantum/quantum.c | 61 |
1 files changed, 47 insertions, 14 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index 4a6d0355f..761ba37f3 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -7,9 +7,14 @@ | |||
| 7 | #define TAPPING_TERM 200 | 7 | #define TAPPING_TERM 200 |
| 8 | #endif | 8 | #endif |
| 9 | 9 | ||
| 10 | <<<<<<< HEAD | ||
| 11 | #include "backlight.h" | ||
| 12 | extern backlight_config_t backlight_config; | ||
| 13 | ======= | ||
| 10 | #ifdef FAUXCLICKY_ENABLE | 14 | #ifdef FAUXCLICKY_ENABLE |
| 11 | #include "fauxclicky.h" | 15 | #include "fauxclicky.h" |
| 12 | #endif | 16 | #endif |
| 17 | >>>>>>> 49e72632d2200fc3bf71d5ced2aa43058da3b2e0 | ||
| 13 | 18 | ||
| 14 | static void do_code16 (uint16_t code, void (*f) (uint8_t)) { | 19 | static void do_code16 (uint16_t code, void (*f) (uint8_t)) { |
| 15 | switch (code) { | 20 | switch (code) { |
| @@ -601,6 +606,10 @@ void matrix_scan_quantum() { | |||
| 601 | matrix_scan_combo(); | 606 | matrix_scan_combo(); |
| 602 | #endif | 607 | #endif |
| 603 | 608 | ||
| 609 | #if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_PIN) | ||
| 610 | backlight_task(); | ||
| 611 | #endif | ||
| 612 | |||
| 604 | matrix_scan_kb(); | 613 | matrix_scan_kb(); |
| 605 | } | 614 | } |
| 606 | 615 | ||
| @@ -668,13 +677,13 @@ __attribute__ ((weak)) | |||
| 668 | void backlight_set(uint8_t level) | 677 | void backlight_set(uint8_t level) |
| 669 | { | 678 | { |
| 670 | // Prevent backlight blink on lowest level | 679 | // Prevent backlight blink on lowest level |
| 671 | #if BACKLIGHT_ON_STATE == 0 | 680 | // #if BACKLIGHT_ON_STATE == 0 |
| 672 | // PORTx &= ~n | 681 | // // PORTx &= ~n |
| 673 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | 682 | // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); |
| 674 | #else | 683 | // #else |
| 675 | // PORTx |= n | 684 | // // PORTx |= n |
| 676 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | 685 | // _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); |
| 677 | #endif | 686 | // #endif |
| 678 | 687 | ||
| 679 | if ( level == 0 ) { | 688 | if ( level == 0 ) { |
| 680 | #ifndef NO_BACKLIGHT_CLOCK | 689 | #ifndef NO_BACKLIGHT_CLOCK |
| @@ -682,13 +691,13 @@ void backlight_set(uint8_t level) | |||
| 682 | TCCR1A &= ~(_BV(COM1x1)); | 691 | TCCR1A &= ~(_BV(COM1x1)); |
| 683 | OCR1x = 0x0; | 692 | OCR1x = 0x0; |
| 684 | #else | 693 | #else |
| 685 | #if BACKLIGHT_ON_STATE == 0 | 694 | // #if BACKLIGHT_ON_STATE == 0 |
| 686 | // PORTx |= n | 695 | // // PORTx |= n |
| 687 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | 696 | // _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); |
| 688 | #else | 697 | // #else |
| 689 | // PORTx &= ~n | 698 | // // PORTx &= ~n |
| 690 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | 699 | // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); |
| 691 | #endif | 700 | // #endif |
| 692 | #endif | 701 | #endif |
| 693 | } | 702 | } |
| 694 | #ifndef NO_BACKLIGHT_CLOCK | 703 | #ifndef NO_BACKLIGHT_CLOCK |
| @@ -711,6 +720,30 @@ void backlight_set(uint8_t level) | |||
| 711 | #endif | 720 | #endif |
| 712 | } | 721 | } |
| 713 | 722 | ||
| 723 | uint8_t backlight_tick = 0; | ||
| 724 | |||
| 725 | void backlight_task(void) { | ||
| 726 | #ifdef NO_BACKLIGHT_CLOCK | ||
| 727 | if ((0xFFFF >> ((BACKLIGHT_LEVELS - backlight_config.level) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) { | ||
| 728 | #if BACKLIGHT_ON_STATE == 0 | ||
| 729 | // PORTx &= ~n | ||
| 730 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | ||
| 731 | #else | ||
| 732 | // PORTx |= n | ||
| 733 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | ||
| 734 | #endif | ||
| 735 | } else { | ||
| 736 | #if BACKLIGHT_ON_STATE == 0 | ||
| 737 | // PORTx |= n | ||
| 738 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | ||
| 739 | #else | ||
| 740 | // PORTx &= ~n | ||
| 741 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | ||
| 742 | #endif | ||
| 743 | } | ||
| 744 | backlight_tick = (backlight_tick + 1) % 16; | ||
| 745 | #endif | ||
| 746 | } | ||
| 714 | 747 | ||
| 715 | #ifdef BACKLIGHT_BREATHING | 748 | #ifdef BACKLIGHT_BREATHING |
| 716 | 749 | ||
