Merge remote-tracking branch 'upstream/master' into documentation-edits
This commit is contained in:
commit
3b94756465
|
@ -169,14 +169,15 @@ static const uint8_t const multiWiiFont[][5] = { // Refer to "Times New Roman" F
|
|||
};
|
||||
|
||||
#define OLED_address 0x3C // OLED at address 0x3C in 7bit
|
||||
void i2c_OLED_send_cmd(uint8_t command)
|
||||
|
||||
static bool i2c_OLED_send_cmd(uint8_t command)
|
||||
{
|
||||
i2cWrite(OLED_address, 0x80, command);
|
||||
return i2cWrite(OLED_address, 0x80, command);
|
||||
}
|
||||
|
||||
static void i2c_OLED_send_byte(uint8_t val)
|
||||
static bool i2c_OLED_send_byte(uint8_t val)
|
||||
{
|
||||
i2cWrite(OLED_address, 0x40, val);
|
||||
return i2cWrite(OLED_address, 0x40, val);
|
||||
}
|
||||
|
||||
void i2c_OLED_clear_display(void)
|
||||
|
@ -247,9 +248,14 @@ void i2c_OLED_send_string(const char *string)
|
|||
* according to http://www.adafruit.com/datasheets/UG-2864HSWEG01.pdf Chapter 4.4 Page 15
|
||||
*/
|
||||
#if 1
|
||||
void ug2864hsweg01InitI2C(void)
|
||||
bool ug2864hsweg01InitI2C(void)
|
||||
{
|
||||
i2c_OLED_send_cmd(0xAE); // Set display OFF
|
||||
|
||||
// Set display OFF
|
||||
if (!i2c_OLED_send_cmd(0xAE)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
i2c_OLED_send_cmd(0xD4); // Set Display Clock Divide Ratio / OSC Frequency
|
||||
i2c_OLED_send_cmd(0x80); // Display Clock Divide Ratio / OSC Frequency
|
||||
i2c_OLED_send_cmd(0xA8); // Set Multiplex Ratio
|
||||
|
@ -272,7 +278,10 @@ void ug2864hsweg01InitI2C(void)
|
|||
i2c_OLED_send_cmd(0xA4); // Set all pixels OFF
|
||||
i2c_OLED_send_cmd(0xA6); // Set display not inverted
|
||||
i2c_OLED_send_cmd(0xAF); // Set display On
|
||||
|
||||
i2c_OLED_clear_display();
|
||||
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
void ug2864hsweg01InitI2C(void)
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#define VERTICAL_BARGRAPH_ZERO_CHARACTER (128 + 32)
|
||||
#define VERTICAL_BARGRAPH_CHARACTER_COUNT 7
|
||||
|
||||
void ug2864hsweg01InitI2C(void);
|
||||
bool ug2864hsweg01InitI2C(void);
|
||||
|
||||
void i2c_OLED_set_xy(uint8_t col, uint8_t row);
|
||||
void i2c_OLED_set_line(uint8_t row);
|
||||
|
|
|
@ -73,6 +73,7 @@ controlRateConfig_t *getControlRateConfig(uint8_t profileIndex);
|
|||
#define PAGE_CYCLE_FREQUENCY (MILLISECONDS_IN_A_SECOND * 5)
|
||||
|
||||
static uint32_t nextDisplayUpdateAt = 0;
|
||||
static bool displayPresent = false;
|
||||
|
||||
static rxConfig_t *rxConfig;
|
||||
|
||||
|
@ -136,7 +137,7 @@ typedef struct pageState_s {
|
|||
static pageState_t pageState;
|
||||
|
||||
void resetDisplay(void) {
|
||||
ug2864hsweg01InitI2C();
|
||||
displayPresent = ug2864hsweg01InitI2C();
|
||||
}
|
||||
|
||||
void LCDprint(uint8_t i) {
|
||||
|
@ -211,11 +212,6 @@ void showTitle()
|
|||
|
||||
void handlePageChange(void)
|
||||
{
|
||||
// Some OLED displays do not respond on the first initialisation so refresh the display
|
||||
// when the page changes in the hopes the hardware responds. This also allows the
|
||||
// user to power off/on the display or connect it while powered.
|
||||
resetDisplay();
|
||||
|
||||
i2c_OLED_clear_display_quick();
|
||||
showTitle();
|
||||
}
|
||||
|
@ -533,9 +529,22 @@ void updateDisplay(void)
|
|||
}
|
||||
|
||||
if (pageState.pageChanging) {
|
||||
handlePageChange();
|
||||
pageState.pageFlags &= ~PAGE_STATE_FLAG_FORCE_PAGE_CHANGE;
|
||||
pageState.nextPageAt = now + PAGE_CYCLE_FREQUENCY;
|
||||
|
||||
// Some OLED displays do not respond on the first initialisation so refresh the display
|
||||
// when the page changes in the hopes the hardware responds. This also allows the
|
||||
// user to power off/on the display or connect it while powered.
|
||||
resetDisplay();
|
||||
|
||||
if (!displayPresent) {
|
||||
return;
|
||||
}
|
||||
handlePageChange();
|
||||
}
|
||||
|
||||
if (!displayPresent) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch(pageState.pageId) {
|
||||
|
|
Loading…
Reference in New Issue