Add support for 328P hardware backlight on B1/B2 (#6776)

master
fauxpark 2019-09-21 15:11:15 +10:00 committed by Drashna Jaelre
parent c7d0262be7
commit 3642a82d37
2 changed files with 28 additions and 10 deletions

View File

@ -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: Hardware PWM is supported according to the following table:
|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A| |Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A|ATmega328P|
|-------------|-------------|-------------|-------------|---------| |-------------|-------------|-------------|-------------|---------|----------|
|`B5` |Timer 1 |Timer 1 | | | |`B1` | | | | |Timer 1 |
|`B6` |Timer 1 |Timer 1 | | | |`B2` | | | | |Timer 1 |
|`B7` |Timer 1 |Timer 1 |Timer 1 | | |`B5` |Timer 1 |Timer 1 | | | |
|`C4` |Timer 3 | | | | |`B6` |Timer 1 |Timer 1 | | | |
|`C5` |Timer 3 | |Timer 1 | | |`B7` |Timer 1 |Timer 1 |Timer 1 | | |
|`C6` |Timer 3 |Timer 3 |Timer 1 | | |`C4` |Timer 3 | | | | |
|`D4` | | | |Timer 1 | |`C5` |Timer 3 | |Timer 1 | | |
|`D5` | | | |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: 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:

View File

@ -1104,6 +1104,22 @@ void matrix_scan_quantum() {
# define COMxx1 COM1A1 # define COMxx1 COM1A1
# define OCRxx OCR1A # define OCRxx OCR1A
# endif # 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 # else
# if !defined(BACKLIGHT_CUSTOM_DRIVER) # if !defined(BACKLIGHT_CUSTOM_DRIVER)
# if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO) # if !defined(B5_AUDIO) && !defined(B6_AUDIO) && !defined(B7_AUDIO)