Fix breathing always on for soft PWM (#5983)
* Fix breathing always on for soft PWM * Remove reference to hardware PWM pins in BACKLIGHT_BREATHING description Now, breathing will only be unsupported when Timers 1 and 3 are both used by Audio * Document BACKLIGHT_ON_STATE and its purpose
This commit is contained in:
parent
67e0c951af
commit
317b809564
3 changed files with 19 additions and 10 deletions
|
@ -80,7 +80,7 @@ This is a C header file that is one of the first things included, and will persi
|
||||||
* `#define BACKLIGHT_LEVELS 3`
|
* `#define BACKLIGHT_LEVELS 3`
|
||||||
* number of levels your backlight will have (maximum 15 excluding off)
|
* number of levels your backlight will have (maximum 15 excluding off)
|
||||||
* `#define BACKLIGHT_BREATHING`
|
* `#define BACKLIGHT_BREATHING`
|
||||||
* enables backlight breathing (only works with backlight pins B5, B6 and B7)
|
* enables backlight breathing
|
||||||
* `#define BREATHING_PERIOD 6`
|
* `#define BREATHING_PERIOD 6`
|
||||||
* the length of one backlight "breath" in seconds
|
* the length of one backlight "breath" in seconds
|
||||||
* `#define DEBOUNCE 5`
|
* `#define DEBOUNCE 5`
|
||||||
|
|
|
@ -69,6 +69,12 @@ To change the behaviour of the backlighting, `#define` these in your `config.h`:
|
||||||
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|
|`BACKLIGHT_CAPS_LOCK`|*Not defined*|Enable Caps Lock indicator using backlight (for keyboards without dedicated LED) |
|
||||||
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported |
|
|`BACKLIGHT_BREATHING`|*Not defined*|Enable backlight breathing, if supported |
|
||||||
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|
|`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds |
|
||||||
|
|`BACKLIGHT_ON_STATE` |`0` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low |
|
||||||
|
|
||||||
|
## Backlight On State
|
||||||
|
|
||||||
|
Most backlight circuits are driven by an N-channel MOSFET or NPN transistor. This means that to turn the transistor *on* and light the LEDs, you must drive the backlight pin, connected to the gate or base, *low*.
|
||||||
|
Sometimes, however, a P-channel MOSFET, or a PNP transistor is used. In this case you must `#define BACKLIGHT_ON_STATE 1`, so that when the transistor is on, the pin is driven *high* instead.
|
||||||
|
|
||||||
## Multiple backlight pins
|
## Multiple backlight pins
|
||||||
|
|
||||||
|
|
|
@ -707,8 +707,9 @@ bool process_record_quantum(keyrecord_t *record) {
|
||||||
|
|
||||||
#if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING)
|
#if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_BREATHING)
|
||||||
case BL_BRTG: {
|
case BL_BRTG: {
|
||||||
if (record->event.pressed)
|
if (record->event.pressed) {
|
||||||
breathing_toggle();
|
breathing_toggle();
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1233,7 +1234,9 @@ ISR(TIMERx_COMPA_vect) {
|
||||||
// this one triggers at F_CPU/65536 =~ 244 Hz
|
// this one triggers at F_CPU/65536 =~ 244 Hz
|
||||||
ISR(TIMERx_OVF_vect) {
|
ISR(TIMERx_OVF_vect) {
|
||||||
#ifdef BACKLIGHT_BREATHING
|
#ifdef BACKLIGHT_BREATHING
|
||||||
|
if(is_breathing()) {
|
||||||
breathing_task();
|
breathing_task();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
// for very small values of OCRxx (or backlight level)
|
// for very small values of OCRxx (or backlight level)
|
||||||
// we can't guarantee this whole code won't execute
|
// we can't guarantee this whole code won't execute
|
||||||
|
|
Loading…
Reference in a new issue