rewrote to use 16bits for overflow events timer. Also set to the calculated 510ms

This commit is contained in:
jakeg00dwin 2024-04-10 13:36:50 -07:00
parent b8839a9b2b
commit 8bbde5260e
1 changed files with 13 additions and 5 deletions

18
main.c
View File

@ -32,6 +32,10 @@
#define UINT8_MAX 256
#endif
#ifndef UINT16_MAX
#define UINT16_MAX 65536
#endif
//This is the bitpattern that should be at address 0x00
#define START_PATTERN 0xAA
#define END_PATTERN 0x55
@ -70,13 +74,17 @@
* OVF_S = (F_CPU / DIV)/ (2^8)
* 61 = (1000000 / 64) / 256
*
* for a 4.8MHz setup.
* OVF_S = (48000000 / 64) / 256 = 2929.6875
*
*so 0.510S = 510ms means we need about 1493 overflows or ticks
*
* This is important because the ATiny13/A only have a single timer built into
* them.
*
* Ticks are used as our way of keep track of long button presses.
* */
//original sent had 60
#define LONG_PRESS_TICKS 66
#define LONG_PRESS_TICKS 1493
/*A structure to hold the button info*/
@ -85,7 +93,7 @@ typedef struct {
uint8_t is_bypassed: 1;
uint8_t is_long_pressed: 1;
uint8_t timer_enabled: 1;
uint8_t pressed_ticks;
uint16_t pressed_ticks;
uint8_t input_pin;
uint8_t output_pin;
}btn_state;
@ -407,11 +415,11 @@ ISR(TIM0_OVF_vect)
debounce_switch();
/*Update the tick_count*/
if(btn1.timer_enabled && btn1.pressed_ticks <= UINT8_MAX){
if(btn1.timer_enabled && btn1.pressed_ticks <= UINT16_MAX){
btn1.pressed_ticks += 1;
}
if(btn2.timer_enabled && btn2.pressed_ticks <= UINT8_MAX){
if(btn2.timer_enabled && btn2.pressed_ticks <= UINT16_MAX){
btn2.pressed_ticks += 1;
}