Fixed EEPROM Writing. Fixed not sending stop on I2C
This commit is contained in:
parent
6f76c5a5b0
commit
6cd14efd0c
1
TODO
1
TODO
@ -1,2 +1 @@
|
|||||||
Fix EEPROM write - detection and read work (maybe algo failure?)
|
|
||||||
Battery icon - how to calc percentage?
|
Battery icon - how to calc percentage?
|
||||||
|
|||||||
17
code/main.c
17
code/main.c
@ -109,7 +109,7 @@ uint8_t event_count = 0;
|
|||||||
uint8_t *event_read = events;
|
uint8_t *event_read = events;
|
||||||
uint8_t *event_write = events;
|
uint8_t *event_write = events;
|
||||||
|
|
||||||
uint32_t ms = 0;
|
volatile uint32_t ms = 0;
|
||||||
|
|
||||||
#ifdef ROT_REVERSE
|
#ifdef ROT_REVERSE
|
||||||
const uint8_t PROGMEM rot_table[16] =
|
const uint8_t PROGMEM rot_table[16] =
|
||||||
@ -749,6 +749,8 @@ void display_init()
|
|||||||
{
|
{
|
||||||
display_send_data(buf, sizeof(buf));
|
display_send_data(buf, sizeof(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i2c_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_enable(uint8_t en)
|
void display_enable(uint8_t en)
|
||||||
@ -819,6 +821,7 @@ void print_symbol(uint8_t symbol_idx, uint8_t x, uint8_t y, uint8_t invert)
|
|||||||
|
|
||||||
display_set_area(x, x + CHAR_SIZE * 2 - 1, y * 2, y * 2 + 1);
|
display_set_area(x, x + CHAR_SIZE * 2 - 1, y * 2, y * 2 + 1);
|
||||||
display_send_data(unfolded_symbol, sizeof(unfolded_symbol));
|
display_send_data(unfolded_symbol, sizeof(unfolded_symbol));
|
||||||
|
i2c_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_mm()
|
void print_mm()
|
||||||
@ -1061,11 +1064,13 @@ void print_battery_icon()
|
|||||||
display_set_area(OLED_BATTERY_ICON_X1, OLED_BATTERY_ICON_X1 + OLED_BATTERY_ICON_SIZE - 1,
|
display_set_area(OLED_BATTERY_ICON_X1, OLED_BATTERY_ICON_X1 + OLED_BATTERY_ICON_SIZE - 1,
|
||||||
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y2);
|
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y2);
|
||||||
display_send_data(buf, (OLED_BATTERY_ICON_Y2 - OLED_BATTERY_ICON_Y1 + 1) * OLED_BATTERY_ICON_SIZE);
|
display_send_data(buf, (OLED_BATTERY_ICON_Y2 - OLED_BATTERY_ICON_Y1 + 1) * OLED_BATTERY_ICON_SIZE);
|
||||||
|
i2c_stop();
|
||||||
|
|
||||||
// Draw right border
|
// Draw right border
|
||||||
display_set_area(OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE + 1, OLED_BATTERY_ICON_X2,
|
display_set_area(OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE + 1, OLED_BATTERY_ICON_X2,
|
||||||
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y2);
|
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y2);
|
||||||
display_send_data(buf, (OLED_BATTERY_ICON_Y2 - OLED_BATTERY_ICON_Y1 + 1) * OLED_BATTERY_ICON_SIZE);
|
display_send_data(buf, (OLED_BATTERY_ICON_Y2 - OLED_BATTERY_ICON_Y1 + 1) * OLED_BATTERY_ICON_SIZE);
|
||||||
|
i2c_stop();
|
||||||
|
|
||||||
for (i = 0; i < sizeof(buf); ++i)
|
for (i = 0; i < sizeof(buf); ++i)
|
||||||
{
|
{
|
||||||
@ -1077,10 +1082,12 @@ void print_battery_icon()
|
|||||||
OLED_BATTERY_ICON_X1 + OLED_BATTERY_ICON_SIZE * 2 - 1,
|
OLED_BATTERY_ICON_X1 + OLED_BATTERY_ICON_SIZE * 2 - 1,
|
||||||
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y1);
|
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y1);
|
||||||
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
||||||
|
i2c_stop();
|
||||||
display_set_area(OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE * 2 + 1,
|
display_set_area(OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE * 2 + 1,
|
||||||
OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE,
|
OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE,
|
||||||
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y1);
|
OLED_BATTERY_ICON_Y1, OLED_BATTERY_ICON_Y1);
|
||||||
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
||||||
|
i2c_stop();
|
||||||
|
|
||||||
for (i = 0; i < sizeof(buf); ++i)
|
for (i = 0; i < sizeof(buf); ++i)
|
||||||
{
|
{
|
||||||
@ -1092,10 +1099,12 @@ void print_battery_icon()
|
|||||||
OLED_BATTERY_ICON_X1 + OLED_BATTERY_ICON_SIZE * 2 - 1,
|
OLED_BATTERY_ICON_X1 + OLED_BATTERY_ICON_SIZE * 2 - 1,
|
||||||
OLED_BATTERY_ICON_Y2, OLED_BATTERY_ICON_Y2);
|
OLED_BATTERY_ICON_Y2, OLED_BATTERY_ICON_Y2);
|
||||||
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
||||||
|
i2c_stop();
|
||||||
display_set_area(OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE * 2 + 1,
|
display_set_area(OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE * 2 + 1,
|
||||||
OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE,
|
OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_SIZE,
|
||||||
OLED_BATTERY_ICON_Y2, OLED_BATTERY_ICON_Y2);
|
OLED_BATTERY_ICON_Y2, OLED_BATTERY_ICON_Y2);
|
||||||
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
display_send_data(buf, OLED_BATTERY_ICON_SIZE);
|
||||||
|
i2c_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Calc battery percent
|
// TODO: Calc battery percent
|
||||||
@ -1151,6 +1160,7 @@ void print_battery_icon()
|
|||||||
y, y);
|
y, y);
|
||||||
display_send_data(buf, OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_X1 -
|
display_send_data(buf, OLED_BATTERY_ICON_X2 - OLED_BATTERY_ICON_X1 -
|
||||||
OLED_BATTERY_ICON_SIZE * 4 + 1);
|
OLED_BATTERY_ICON_SIZE * 4 + 1);
|
||||||
|
i2c_stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Buffer safety
|
// Buffer safety
|
||||||
@ -1316,6 +1326,7 @@ int8_t write_eeprom_val(int8_t idx, uint32_t value, uint8_t direction)
|
|||||||
{
|
{
|
||||||
int8_t err;
|
int8_t err;
|
||||||
uint8_t buf[4];
|
uint8_t buf[4];
|
||||||
|
uint32_t write_complete_when;
|
||||||
|
|
||||||
if (idx < 0)
|
if (idx < 0)
|
||||||
{
|
{
|
||||||
@ -1336,6 +1347,10 @@ int8_t write_eeprom_val(int8_t idx, uint32_t value, uint8_t direction)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait for write to complete
|
||||||
|
write_complete_when = ms + 20;
|
||||||
|
while (ms < write_complete_when);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user