mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 01:35:41 +03:00
Merge remote-tracking branch 'upstream/master' into documentation-edits
This commit is contained in:
commit
3b94756465
3 changed files with 32 additions and 14 deletions
|
@ -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
|
#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)
|
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
|
* according to http://www.adafruit.com/datasheets/UG-2864HSWEG01.pdf Chapter 4.4 Page 15
|
||||||
*/
|
*/
|
||||||
#if 1
|
#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(0xD4); // Set Display Clock Divide Ratio / OSC Frequency
|
||||||
i2c_OLED_send_cmd(0x80); // 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
|
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(0xA4); // Set all pixels OFF
|
||||||
i2c_OLED_send_cmd(0xA6); // Set display not inverted
|
i2c_OLED_send_cmd(0xA6); // Set display not inverted
|
||||||
i2c_OLED_send_cmd(0xAF); // Set display On
|
i2c_OLED_send_cmd(0xAF); // Set display On
|
||||||
|
|
||||||
i2c_OLED_clear_display();
|
i2c_OLED_clear_display();
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void ug2864hsweg01InitI2C(void)
|
void ug2864hsweg01InitI2C(void)
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#define VERTICAL_BARGRAPH_ZERO_CHARACTER (128 + 32)
|
#define VERTICAL_BARGRAPH_ZERO_CHARACTER (128 + 32)
|
||||||
#define VERTICAL_BARGRAPH_CHARACTER_COUNT 7
|
#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_xy(uint8_t col, uint8_t row);
|
||||||
void i2c_OLED_set_line(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)
|
#define PAGE_CYCLE_FREQUENCY (MILLISECONDS_IN_A_SECOND * 5)
|
||||||
|
|
||||||
static uint32_t nextDisplayUpdateAt = 0;
|
static uint32_t nextDisplayUpdateAt = 0;
|
||||||
|
static bool displayPresent = false;
|
||||||
|
|
||||||
static rxConfig_t *rxConfig;
|
static rxConfig_t *rxConfig;
|
||||||
|
|
||||||
|
@ -136,7 +137,7 @@ typedef struct pageState_s {
|
||||||
static pageState_t pageState;
|
static pageState_t pageState;
|
||||||
|
|
||||||
void resetDisplay(void) {
|
void resetDisplay(void) {
|
||||||
ug2864hsweg01InitI2C();
|
displayPresent = ug2864hsweg01InitI2C();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LCDprint(uint8_t i) {
|
void LCDprint(uint8_t i) {
|
||||||
|
@ -211,11 +212,6 @@ void showTitle()
|
||||||
|
|
||||||
void handlePageChange(void)
|
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();
|
i2c_OLED_clear_display_quick();
|
||||||
showTitle();
|
showTitle();
|
||||||
}
|
}
|
||||||
|
@ -533,9 +529,22 @@ void updateDisplay(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pageState.pageChanging) {
|
if (pageState.pageChanging) {
|
||||||
handlePageChange();
|
|
||||||
pageState.pageFlags &= ~PAGE_STATE_FLAG_FORCE_PAGE_CHANGE;
|
pageState.pageFlags &= ~PAGE_STATE_FLAG_FORCE_PAGE_CHANGE;
|
||||||
pageState.nextPageAt = now + PAGE_CYCLE_FREQUENCY;
|
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) {
|
switch(pageState.pageId) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue