[wip] added amplitude helper

This commit is contained in:
2023-04-01 23:23:14 +02:00
parent 07dd185e7c
commit 45ef68b74d
4 changed files with 66 additions and 61 deletions

View File

@@ -232,6 +232,24 @@ static void _moveToRighttFocusFreqNumber(void)
}
static void _setTo0_01xFocusNumber(void)
{
switch (_app_data->curr_state_lay)
{
case LAY_AMPL:
_app_data->ampl_focus_digit = 0;
break;
case LAY_OFFS:
_app_data->offs_focus_digit = 0;
break;
default:
break;
}
_app_data->timer_blink[last_key] = 2;
_app_data->isButtonBlink |= (1 << last_key);
_app_data->isValueChange = 1;
}
static void _setTo0_1xFocusNumber(void)
{
switch (_app_data->curr_state_lay)
{
@@ -247,39 +265,23 @@ static void _setTo0_01xFocusNumber(void)
_app_data->timer_blink[last_key] = 2;
_app_data->isButtonBlink |= (1 << last_key);
}
static void _setTo0_1xFocusNumber(void)
{
switch (_app_data->curr_state_lay)
{
case LAY_AMPL:
_app_data->ampl_focus_digit = 10;
break;
case LAY_OFFS:
_app_data->offs_focus_digit = 10;
break;
default:
break;
}
_app_data->timer_blink[last_key] = 2;
_app_data->isButtonBlink |= (1 << last_key);
_app_data->isValueChange = 1;
}
static void _setTo1xFocusNumber(void)
{
switch (_app_data->curr_state_lay)
{
case LAY_AMPL:
_app_data->ampl_focus_digit = 10;
_app_data->ampl_focus_digit = 2;
break;
case LAY_OFFS:
_app_data->offs_focus_digit = 10;
_app_data->offs_focus_digit = 2;
break;
case LAY_PHAS:
_app_data->offs_focus_digit = 1;
_app_data->offs_focus_digit = 0;
break;
case LAY_DUTY:
_app_data->offs_focus_digit = 1;
_app_data->offs_focus_digit = 0;
break;
default:
break;
@@ -287,22 +289,23 @@ static void _setTo1xFocusNumber(void)
_app_data->timer_blink[last_key] = 2;
_app_data->isButtonBlink |= (1 << last_key);
_app_data->isValueChange = 1;
}
static void _setTo10xFocusNumber(void)
{
switch (_app_data->curr_state_lay)
{
case LAY_AMPL:
_app_data->ampl_focus_digit = 100;
_app_data->ampl_focus_digit = 3;
break;
case LAY_OFFS:
_app_data->offs_focus_digit = 100;
_app_data->offs_focus_digit = 3;
break;
case LAY_PHAS:
_app_data->offs_focus_digit = 10;
_app_data->offs_focus_digit = 1;
break;
case LAY_DUTY:
_app_data->offs_focus_digit = 10;
_app_data->offs_focus_digit = 1;
break;
default:
break;
@@ -310,6 +313,7 @@ static void _setTo10xFocusNumber(void)
_app_data->timer_blink[last_key] = 2;
_app_data->isButtonBlink |= (1 << last_key);
_app_data->isValueChange = 1;
}
static const CMD_button_t btn_command[BTN_STATE_MAX][DISP_BTN_MAX] = {

View File

@@ -1,6 +1,5 @@
#include "main.h"
#include "hw_button.h"
#include "ctrl_button.h"
#include "ctrl_channel_button.h"
#define DUMMY_GPIO_Port GPIOA
@@ -61,4 +60,9 @@ void CTRL_channelButtonsHandler(void)
{
buttonHandler(&channel_buttons[btn_key]);
}
}
__weak void CTRL_pushedChanBtnEvent(ButtonKey_t *key)
{
UNUSED(key);
}

View File

@@ -12,4 +12,5 @@ typedef enum
} HW_chanBtnName_t;
void CTRL_channelButtonInit(void);
void CTRL_channelButtonsHandler(void);
void CTRL_channelButtonsHandler(void);
void CTRL_pushedChanBtnEvent(ButtonKey_t *key);

View File

@@ -5,8 +5,12 @@
#include "disp_layout.h"
#define FREQ_MAX_DIGIT 7
#define AMPL_MAX_DIGIT 3
const uint8_t btn_pos_x[DISP_BTN_MAX] = {0, 26, 52, 78, 104};
const uint8_t marker_freq_pos_X[7] = {76, 84, 90, 96, 105, 111, 118};
const uint8_t marker_freq_pos_x[FREQ_MAX_DIGIT] = {76, 84, 90, 96, 105, 111, 118};
const uint8_t marker_ampl_pos_x[AMPL_MAX_DIGIT] = {82, 94, 100};
// clang-format off
const GFX_bitmap_t marker = {05, 03, (uint8_t[]){0xF9,0xFB,0xFF,0xFB,0xF9,}};
@@ -23,36 +27,32 @@ static void _drawFreqValue(GFX_display_t *disp, uint32_t freq, uint8_t pos_y)
DISP_writeString(disp, &font5x7Info, (uint8_t[]){data[4], data[5], data[6], 0}, 105, pos_y, BM_NORMAL);
}
static void _drawAmplValue(GFX_display_t *disp, uint16_t ampl)
static void _drawAmplValue(GFX_display_t *disp, uint16_t ampl, uint8_t pos_y)
{
uint8_t data[8];
snprintf((char *)data, 8, "%02d.%02d V", ampl / 100, ampl % 100);
DISP_writeString(disp, &font5x7Info, data, 76, 23, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL);
}
static void _drawOffsValue(GFX_display_t *disp, uint16_t offs)
static void _drawOffsValue(GFX_display_t *disp, uint16_t offs, uint8_t pos_y)
{
// float offs = getOffsetValue();
uint8_t data[8];
// snprintf((char *)data, 8, "%+4.2f V", offs);
snprintf((char *)data, 8, "%+01d.%02d V", offs / 100, offs % 100);
DISP_writeString(disp, &font5x7Info, data, 76, 33, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL);
}
static void _drawPhasValue(GFX_display_t *disp, uint16_t phase)
static void _drawPhasValue(GFX_display_t *disp, uint16_t phase, uint8_t pos_y)
{
// uint32_t phase = getPhaseValue();
uint8_t data[8];
snprintf((char *)data, 8, "%03u'", phase);
DISP_writeString(disp, &font5x7Info, data, 76, 43, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL);
}
static void _drawDutyValue(GFX_display_t *disp, uint8_t duty)
static void _drawDutyValue(GFX_display_t *disp, uint8_t duty, uint8_t pos_y)
{
// uint32_t duty = getDutyValue();
uint8_t data[8];
snprintf((char *)data, 8, "%03u%%", duty);
DISP_writeString(disp, &font5x7Info, data, 76, 43, BM_NORMAL); // zmien pozycje!!!!!!!!
DISP_writeString(disp, &font5x7Info, data, 76, pos_y, BM_NORMAL);
}
static void _blinkButtons(GFX_display_t *disp, APP_data_t *app_data)
@@ -95,6 +95,11 @@ static void _drawButtons(GFX_display_t *disp, APP_data_t *app_data)
app_data->isButtonChange = 0;
}
static uint8_t _calcMarkePos(uint32_t value, uint32_t max)
{
return ((62 * value) + (max / 2)) / max;
}
static void _drawMeterHelper(GFX_display_t *disp, char *min, char *max, uint8_t pos)
{
DISP_drawPixel(disp, 64, 40, GFX_WHITE);
@@ -111,12 +116,15 @@ static void _drawFreqValueHelper(GFX_display_t *disp, uint32_t freq, uint8_t foc
DISP_clearRegion(disp, 64, 13, 66, 40);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"F:", 64, 20, BM_NORMAL);
_drawFreqValue(disp, freq, 20);
DISP_drawBitmap(disp, &marker, marker_freq_pos_X[6 - focus_digit], 15, BM_NORMAL);
DISP_drawBitmap(disp, &marker, marker_freq_pos_x[(FREQ_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL);
}
static uint8_t _calcMarkePos(uint32_t value, uint32_t max)
static void _drawAmplValueHelper(GFX_display_t *disp, uint32_t ampl, uint8_t focus_digit)
{
return ((62 * value) + (max / 2)) / max;
DISP_clearRegion(disp, 64, 13, 66, 40);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"A:", 64, 20, BM_NORMAL);
_drawAmplValue(disp, ampl, 20);
DISP_drawBitmap(disp, &marker, marker_ampl_pos_x[(AMPL_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL);
}
static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
@@ -126,16 +134,15 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
{
case LAY_FREQ:
_drawFreqValueHelper(disp, fun_gen->frequency, app_data->freq_focus_digit);
_drawMeterHelper(disp, "1", "1M", _calcMarkePos(900000, 1000000));
_drawMeterHelper(disp, "1", "1M", _calcMarkePos(990000, 1000000));
break;
case LAY_AMPL:
_drawAmplValue(disp, fun_gen->amplitude);
_drawAmplValueHelper(disp, fun_gen->amplitude, app_data->ampl_focus_digit);
_drawMeterHelper(disp, "0V", "5V", _calcMarkePos(100, 500));
break;
case LAY_OFFS:
_drawOffsValue(disp, fun_gen->offset);
break;
case LAY_PHAS:
_drawPhasValue(disp, fun_gen->phase);
break;
case LAY_MAIN:
DISP_clearRegion(disp, 62, 13, 66, 40);
@@ -145,9 +152,9 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
DISP_writeString(disp, &font5x7Info, (uint8_t *)"P:", 64, 43, BM_NORMAL);
_drawFreqValue(disp, fun_gen->frequency, 13);
_drawAmplValue(disp, fun_gen->amplitude);
_drawOffsValue(disp, fun_gen->offset);
_drawPhasValue(disp, fun_gen->phase);
_drawAmplValue(disp, fun_gen->amplitude, 23);
_drawOffsValue(disp, fun_gen->offset, 33);
_drawPhasValue(disp, fun_gen->phase, 43);
break;
default:
@@ -159,17 +166,6 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
static void _drawPwmGenValues(GFX_display_t *disp, APP_data_t *app_data)
{
GEN_pwm_t *pwm_gen = app_data->generator;
DISP_writeString(disp, &font5x7Info, (uint8_t *)"F:", 64, 13, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"A:", 64, 23, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"O:", 64, 33, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"P:", 64, 43, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"D:", 64, 43, BM_NORMAL);
_drawFreqValue(disp, pwm_gen->frequency, 13);
_drawAmplValue(disp, pwm_gen->amplitude / 100);
_drawOffsValue(disp, pwm_gen->offset / 100);
_drawPhasValue(disp, pwm_gen->phase);
_drawDutyValue(disp, pwm_gen->duty);
}
static void _drawValues(GFX_display_t *disp, APP_data_t *app_data)