diff options
author | fauxpark <fauxpark@gmail.com> | 2019-09-21 15:11:15 +1000 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-09-20 22:11:15 -0700 |
commit | 3642a82d37e8c4fb34b9ee60606ab831d642c9ec (patch) | |
tree | fdfef2b6461519d7c5515308c9ae6bb619b01031 | |
parent | c7d0262be7f3bc2c709fd45bd41327433285a11e (diff) | |
download | qmk_firmware-3642a82d37e8c4fb34b9ee60606ab831d642c9ec.tar.gz |
Add support for 328P hardware backlight on B1/B2 (#6776)
-rw-r--r-- | docs/feature_backlight.md | 22 | ||||
-rw-r--r-- | quantum/quantum.c | 16 |
2 files changed, 28 insertions, 10 deletions
diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index 690eb8215..556da7385 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -32,16 +32,18 @@ This feature is distinct from both the [RGB underglow](feature_rgblight.md) and Hardware PWM is supported according to the following table: -|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A| -|-------------|-------------|-------------|-------------|---------| -|`B5` |Timer 1 |Timer 1 | | | -|`B6` |Timer 1 |Timer 1 | | | -|`B7` |Timer 1 |Timer 1 |Timer 1 | | -|`C4` |Timer 3 | | | | -|`C5` |Timer 3 | |Timer 1 | | -|`C6` |Timer 3 |Timer 3 |Timer 1 | | -|`D4` | | | |Timer 1 | -|`D5` | | | |Timer 1 | +|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A|ATmega328P| +|-------------|-------------|-------------|-------------|---------|----------| +|`B1` | | | | |Timer 1 | +|`B2` | | | | |Timer 1 | +|`B5` |Timer 1 |Timer 1 | | | | +|`B6` |Timer 1 |Timer 1 | | | | +|`B7` |Timer 1 |Timer 1 |Timer 1 | | | +|`C4` |Timer 3 | | | | | +|`C5` |Timer 3 | |Timer 1 | | | +|`C6` |Timer 3 |Timer 3 |Timer 1 | | | +|`D4` | | | |Timer 1 | | +|`D5` | | | |Timer 1 | | All other pins will use software PWM. If the [Audio](feature_audio.md) feature is disabled or only using one timer, the backlight PWM can be triggered by a hardware timer: diff --git a/quantum/quantum.c b/quantum/quantum.c index 85a03377f..ec80fa557 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1104,6 +1104,22 @@ void matrix_scan_quantum() { # define COMxx1 COM1A1 # define OCRxx OCR1A # endif +# elif defined(__AVR_ATmega328P__) && (BACKLIGHT_PIN == B1 || BACKLIGHT_PIN == B2) +# define HARDWARE_PWM +# define ICRx ICR1 +# define TCCRxA TCCR1A +# define TCCRxB TCCR1B +# define TIMERx_OVF_vect TIMER1_OVF_vect +# define TIMSKx TIMSK1 +# define TOIEx TOIE1 + +# if BACKLIGHT_PIN == B1 +# define COMxx1 COM1A1 +# define OCRxx OCR1A +# elif BACKLIGHT_PIN == B2 +# define COMxx1 COM1B1 +# define OCRxx OCR1B +# endif # else # if !defined(BACKLIGHT_CUSTOM_DRIVER) # if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO) |