Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OLED display update interval support #10388

Merged
merged 5 commits into from
Oct 19, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/feature_oled_driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ void oled_task_user(void) {
|`OLED_SCROLL_TIMEOUT_RIGHT`|*Not defined* |Scroll timeout direction is right when defined, left when undefined. |
|`OLED_IC` |`OLED_IC_SSD1306`|Set to `OLED_IC_SH1106` if you're using the SH1106 OLED controller. |
|`OLED_COLUMN_OFFSET` |`0` |(SH1106 only.) Shift output to the right this many pixels.<br />Useful for 128x64 displays centered on a 132x64 SH1106 IC.|
|`OLED_UPDATE_INTERVAL_MS` |`0` |Set the time interval for updating the OLED display in ms. This will improve the matrix scan rate. |
mtei marked this conversation as resolved.
Show resolved Hide resolved

## 128x64 & Custom sized OLED Displays

Expand Down
10 changes: 10 additions & 0 deletions drivers/oled/oled_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,9 @@ uint32_t oled_timeout;
#if OLED_SCROLL_TIMEOUT > 0
uint32_t oled_scroll_timeout;
#endif
#if OLED_UPDATE_INTERVAL_MS > 0
mtei marked this conversation as resolved.
Show resolved Hide resolved
uint16_t oled_update_timeout;
#endif

// Internal variables to reduce math instructions

Expand Down Expand Up @@ -619,6 +622,13 @@ void oled_task(void) {
return;
}

#if OLED_UPDATE_INTERVAL_MS > 0
if (timer_elapsed(oled_update_timeout) < OLED_UPDATE_INTERVAL_MS) {
mtei marked this conversation as resolved.
Show resolved Hide resolved
return;
}
oled_update_timeout = timer_read();
#endif

oled_set_cursor(0, 0);

oled_task_user();
Expand Down