diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -48,6 +48,7 @@ int main(void) /* Initialize all configured peripherals */ init_gpio(); MX_USB_DEVICE_Init(); +// set.usb_plugged = // USB startup delay HAL_Delay(1000); @@ -164,30 +165,38 @@ void update_temp() { // Assemble data array into one var uint16_t temp_pre = rxdatal[0] | (rxdatah[0]<<8); - - if(temp_pre & 0b0000000000000010) { +/* + if(temp_pre & 0b010) { ssd1306_clearscreen(); - HAL_Delay(100); // FIXME: remove? + HAL_Delay(400); // FIXME: remove? status.tc_errno = 4; status.state = STATE_TC_ERROR; status.temp = 0; status.temp_frac = 0; - } - else if(temp_pre & 0b0000000000000001 && !set.ignore_tc_error) { + } */ + if(temp_pre & 0b001 && !set.ignore_tc_error) { status.tc_errno = 1; - HAL_Delay(100); // FIXME: remove? + HAL_Delay(400); // FIXME: remove? status.state_resume = status.state; status.state = STATE_TC_ERROR; status.temp = 0; status.temp_frac = 0; - } + }/* + else if(temp_pre & 0b100 && !set.ignore_tc_error) { + status.tc_errno = 8; + HAL_Delay(400); // FIXME: remove? + status.state_resume = status.state; + status.state = STATE_TC_ERROR; + status.temp = 0; + status.temp_frac = 0; + }*/ else { - if(status.state == STATE_TC_ERROR) - { - status.state = status.state_resume; - ssd1306_clearscreen(); - } + //if(status.state == STATE_TC_ERROR) + //{ + // status.state = status.state_resume; + // ssd1306_clearscreen(); + //} uint8_t sign = status.temp >> 15;// top bit is sign @@ -282,25 +291,27 @@ int16_t update_pid(uint16_t k_p, uint16_ uint32_t last_ssr_on = 0; uint32_t last_vcp_tx = 0; uint32_t last_led = 0; +uint32_t last_pid = 0; int16_t ssr_output = 0; // Duty cycle of ssr, 0 to SSR_PERIOD // Turn SSR output on/off according to set duty cycle. // TODO: Eventually maybe replace with a very slow timer or something. Double-check this code... void process() { - update_temp(); // Read MAX31855 uint32_t ticks = HAL_GetTick(); if(ticks - last_led > 400) { - HAL_GPIO_TogglePin(LED_POWER); last_led = ticks; } - // Every 200ms, set the SSR on unless output is 0 - if((ticks - last_ssr_on > SSR_PERIOD)) + if((ticks - last_pid > PID_PERIOD)) { + update_temp(); // Read MAX31855 + + HAL_GPIO_TogglePin(LED_POWER); + if(status.pid_enabled) { // Get ssr output for next time @@ -313,6 +324,13 @@ void process() ssr_output = 0; } + last_pid = ticks; + } + + // Every 200ms, set the SSR on unless output is 0 + if((ticks - last_ssr_on > SSR_PERIOD)) + { + // Only support heating (ssr_output > 0) right now if(ssr_output > 0) { @@ -340,7 +358,8 @@ void process() tempstr[numlen] = '\r'; tempstr[numlen+1] = '\n'; - CDC_Transmit_FS(tempstr, numlen+2); +// if(set.usb_plugged) +// CDC_Transmit_FS(tempstr, numlen+2); // while(CDC_Transmit_FS("\r\n", 2) == USBD_BUSY); last_vcp_tx = ticks;