Increased event queue size. Sleep no longer stops TIM1 clock - bugfix

This commit is contained in:
DWW 2021-10-22 01:36:58 +03:00
parent a7e19b5b8e
commit 73104c90c8

View File

@ -26,7 +26,7 @@
// Rotary Encoder Parameters // Rotary Encoder Parameters
#define ROT_PULSE_COUNT 12 #define ROT_PULSE_COUNT 12
#define ROT_DETENTS 24 #define ROT_DETENTS 24
#define ROT_WHEEL_RAD 13.125 #define ROT_WHEEL_RAD 13
//#define ROT_CW_UP //#define ROT_CW_UP
// Input masks // Input masks
@ -41,7 +41,7 @@
#define INPUT_MASK (BUTTON_M | ENCODER_M) #define INPUT_MASK (BUTTON_M | ENCODER_M)
// Event queue macros // Event queue macros
#define MAX_EVENT_COUNT 16 #define MAX_EVENT_COUNT 64
#define PTR_INC(x) ((x) = events + ((((x) - events) + 1) % MAX_EVENT_COUNT)) #define PTR_INC(x) ((x) = events + ((((x) - events) + 1) % MAX_EVENT_COUNT))
enum event_e enum event_e
@ -311,19 +311,8 @@ int main()
if (rot_value / (ROT_PULSE_COUNT * 4 / ROT_DETENTS) != 0) if (rot_value / (ROT_PULSE_COUNT * 4 / ROT_DETENTS) != 0)
{ {
int8_t rot_abs; count_value_fine += rot_coeff * rot_value;
int8_t adjust; rot_value = 0;
rot_abs = rot_value;
adjust = 1;
if (rot_value < 0)
{
rot_abs = -rot_abs;
adjust = -1;
}
rot_value -= (rot_abs * adjust);
count_value_fine += (rot_coeff * adjust * rot_abs);
if (count_value_fine < 0) if (count_value_fine < 0)
{ {
@ -950,8 +939,8 @@ void write_eeprom_val(uint16_t idx, uint32_t value, uint8_t dir)
void do_sleep() void do_sleep()
{ {
// Disable clock to Timer1, USI, ADC // Disable clock to USI, ADC
PRR |= (1 << PRTIM1) | (1 << PRUSI) | (1 << PRADC); PRR |= (1 << PRUSI) | (1 << PRADC);
// Enable sleep // Enable sleep
MCUCR |= (1 << SE); MCUCR |= (1 << SE);
@ -967,8 +956,8 @@ void do_sleep()
// Disable sleep // Disable sleep
MCUCR &= ~(1 << SE); MCUCR &= ~(1 << SE);
// Enable clock to Timer1, USI, ADC // Enable clock to USI, ADC
PRR &= ~((1 << PRTIM1) | (1 << PRUSI) | (1 << PRADC)); PRR &= ~((1 << PRUSI) | (1 << PRADC));
} }
void update_display(uint32_t value, uint32_t highlight, uint8_t dir, uint8_t dir_highlight) void update_display(uint32_t value, uint32_t highlight, uint8_t dir, uint8_t dir_highlight)