@@ -29,6 +29,16 @@ uint16_t k_p = 1;
uint16_t k_i = 1;
uint16_t k_d = 1;
// ISR ticks var TODO: Double check functionality after volatilazation... needed on ARM?
volatile uint32_t ticks = 0;
// Increase on each press, and increase at a fast rate after duration elapsed of continuously holding down... somehow...
uint32_t change_time_reset = 0;
#define CHANGE_PERIOD_MS 100
#define CHANGE_ELAPSED (ticks - change_time_reset) > CHANGE_PERIOD_MS
#define CHANGE_RESET change_time_reset = ticks
int16_t setpoint_brew = 0;
int16_t setpoint_steam = 0;
@@ -215,7 +225,6 @@ int16_t update_pid(uint16_t k_p, uint16_
uint32_t ticks = 0;
uint32_t last_ssr_on = 0;
uint32_t last_led = 0;
int32_t setpoint = 0;
@@ -365,6 +374,24 @@ void restore_settings()
DATA_EEPROM_Lock();
}
void user_input(uint16_t* to_modify)
{
if(CHANGE_ELAPSED) {
// TODO: Make function that takes reference to a var and increase/decreases it based on buttonpress
if(!GPIO_ReadInputDataBit(SW_UP) ) {
CHANGE_RESET;
(*to_modify)++;
else if(!GPIO_ReadInputDataBit(SW_DOWN) && (*to_modify) > 0) {
(*to_modify)--;
void machine()
uint8_t last_state = state;
@@ -459,11 +486,8 @@ void machine()
if(SW_BTN_PRESSED) {
state = STATE_SETI;
else if(!GPIO_ReadInputDataBit(SW_UP)) {
k_p++;
else if(!GPIO_ReadInputDataBit(SW_DOWN) && k_p > 0) {
k_p--;
else {
user_input(&k_p);
// Event Handler
@@ -491,13 +515,9 @@ void machine()
state = STATE_SETD;
k_i++;
user_input(&k_i);
else if(!GPIO_ReadInputDataBit(SW_DOWN) && k_i > 0) {
k_i--;
// N/A
@@ -524,11 +544,8 @@ void machine()
state = STATE_SETWINDUP;
k_d++;
else if(!GPIO_ReadInputDataBit(SW_DOWN) && k_d > 0) {
k_d--;
user_input(&k_d);
@@ -556,11 +573,8 @@ void machine()
state = STATE_SETBOOTTOBREW;
windup_guard++;
else if(!GPIO_ReadInputDataBit(SW_DOWN) && windup_guard > 0) {
windup_guard--;
user_input(&windup_guard);
@@ -602,9 +616,6 @@ void machine()
} break;
case STATE_PREHEAT_BREW:
// Write text to OLED
@@ -621,13 +632,9 @@ void machine()
save_setpoints(); // TODO: Check for mod
state = STATE_IDLE;
setpoint_brew++;
user_input(&setpoint_brew);
else if(!GPIO_ReadInputDataBit(SW_DOWN) && setpoint_brew > 0) {
setpoint_brew--;
if(temp >= setpoint) {
@@ -652,13 +659,9 @@ void machine()
@@ -681,11 +684,8 @@ void machine()
setpoint_steam++;
else if(!GPIO_ReadInputDataBit(SW_DOWN) && setpoint_steam > 0) {
setpoint_steam--;
user_input(&setpoint_steam);
@@ -711,13 +711,9 @@ void machine()
Status change: