mirror of
https://github.com/skot/ESP-Miner.git
synced 2025-03-18 05:42:16 +01:00
code refactor: prepare room for HEX
This commit is contained in:
parent
c8789269f9
commit
2dff706225
@ -72,6 +72,7 @@ typedef struct
|
||||
{
|
||||
DeviceModel device_model;
|
||||
char * device_model_str;
|
||||
int board_version;
|
||||
AsicModel asic_model;
|
||||
char * asic_model_str;
|
||||
uint16_t asic_count;
|
||||
|
@ -48,6 +48,9 @@ void app_main(void)
|
||||
ESP_LOGE(TAG, "Invalid DEVICE model");
|
||||
// maybe should return here to now execute anything with a faulty device parameter !
|
||||
}
|
||||
GLOBAL_STATE.board_version = atoi(nvs_config_get_string(NVS_CONFIG_BOARD_VERSION, "000"));
|
||||
ESP_LOGI(TAG, "Found Device Model: %s", GLOBAL_STATE.device_model_str);
|
||||
ESP_LOGI(TAG, "Found Board Version: %d", GLOBAL_STATE.board_version);
|
||||
|
||||
GLOBAL_STATE.asic_model_str = nvs_config_get_string(NVS_CONFIG_ASIC_MODEL, "");
|
||||
if (strcmp(GLOBAL_STATE.asic_model_str, "BM1366") == 0) {
|
||||
|
@ -68,35 +68,37 @@ void POWER_MANAGEMENT_task(void * pvParameters)
|
||||
|
||||
power_management->frequency_multiplier = 1;
|
||||
|
||||
char * board_version = nvs_config_get_string(NVS_CONFIG_BOARD_VERSION, "unknown");
|
||||
power_management->HAS_POWER_EN =
|
||||
(strcmp(board_version, "202") == 1 || strcmp(board_version, "203") == 1 || strcmp(board_version, "204") == 1);
|
||||
power_management->HAS_PLUG_SENSE = strcmp(board_version, "204") == 1;
|
||||
free(board_version);
|
||||
power_management->HAS_POWER_EN = GLOBAL_STATE->board_version == 202 || GLOBAL_STATE->board_version == 203 || GLOBAL_STATE->board_version == 204;
|
||||
power_management->HAS_PLUG_SENSE = GLOBAL_STATE->board_version == 204;
|
||||
|
||||
int last_frequency_increase = 0;
|
||||
|
||||
bool read_power = INA260_installed();
|
||||
|
||||
uint16_t frequency_target = nvs_config_get_u16(NVS_CONFIG_ASIC_FREQ, CONFIG_ASIC_FREQUENCY);
|
||||
|
||||
uint16_t auto_fan_speed = nvs_config_get_u16(NVS_CONFIG_AUTO_FAN_SPEED, 1);
|
||||
|
||||
// Configure GPIO12 as input(barrel jack) 1 is plugged in
|
||||
gpio_config_t barrel_jack_conf = {
|
||||
.pin_bit_mask = (1ULL << GPIO_NUM_12),
|
||||
.mode = GPIO_MODE_INPUT,
|
||||
};
|
||||
gpio_config(&barrel_jack_conf);
|
||||
int barrel_jack_plugged_in = gpio_get_level(GPIO_NUM_12);
|
||||
switch (GLOBAL_STATE->device_model) {
|
||||
case DEVICE_MAX:
|
||||
case DEVICE_ULTRA:
|
||||
case DEVICE_SUPRA:
|
||||
// Configure GPIO12 as input(barrel jack) 1 is plugged in
|
||||
gpio_config_t barrel_jack_conf = {
|
||||
.pin_bit_mask = (1ULL << GPIO_NUM_12),
|
||||
.mode = GPIO_MODE_INPUT,
|
||||
};
|
||||
gpio_config(&barrel_jack_conf);
|
||||
int barrel_jack_plugged_in = gpio_get_level(GPIO_NUM_12);
|
||||
|
||||
gpio_set_direction(GPIO_NUM_10, GPIO_MODE_OUTPUT);
|
||||
if (barrel_jack_plugged_in == 1 || !power_management->HAS_PLUG_SENSE) {
|
||||
// turn ASIC on
|
||||
gpio_set_level(GPIO_NUM_10, 0);
|
||||
} else {
|
||||
// turn ASIC off
|
||||
gpio_set_level(GPIO_NUM_10, 1);
|
||||
gpio_set_direction(GPIO_NUM_10, GPIO_MODE_OUTPUT);
|
||||
if (barrel_jack_plugged_in == 1 || !power_management->HAS_PLUG_SENSE) {
|
||||
// turn ASIC on
|
||||
gpio_set_level(GPIO_NUM_10, 0);
|
||||
} else {
|
||||
// turn ASIC off
|
||||
gpio_set_level(GPIO_NUM_10, 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
vTaskDelay(3000 / portTICK_PERIOD_MS);
|
||||
@ -107,7 +109,7 @@ void POWER_MANAGEMENT_task(void * pvParameters)
|
||||
case DEVICE_MAX:
|
||||
case DEVICE_ULTRA:
|
||||
case DEVICE_SUPRA:
|
||||
if (read_power == true) {
|
||||
if (INA260_installed() == true) {
|
||||
power_management->voltage = INA260_read_voltage();
|
||||
power_management->power = INA260_read_power() / 1000;
|
||||
power_management->current = INA260_read_current();
|
||||
@ -185,23 +187,32 @@ void POWER_MANAGEMENT_task(void * pvParameters)
|
||||
}
|
||||
}
|
||||
} else if (GLOBAL_STATE->asic_model == ASIC_BM1366 || GLOBAL_STATE->asic_model == ASIC_BM1368) {
|
||||
power_management->chip_temp_avg = EMC2101_get_internal_temp() + 5;
|
||||
switch (GLOBAL_STATE->device_model) {
|
||||
case DEVICE_MAX:
|
||||
case DEVICE_ULTRA:
|
||||
case DEVICE_SUPRA:
|
||||
power_management->chip_temp_avg = EMC2101_get_internal_temp() + 5;
|
||||
|
||||
if (power_management->chip_temp_avg > THROTTLE_TEMP &&
|
||||
(power_management->frequency_value > 50 || power_management->voltage > 1000)) {
|
||||
ESP_LOGE(TAG, "OVERHEAT");
|
||||
if (power_management->chip_temp_avg > THROTTLE_TEMP &&
|
||||
(power_management->frequency_value > 50 || power_management->voltage > 1000)) {
|
||||
ESP_LOGE(TAG, "OVERHEAT");
|
||||
|
||||
EMC2101_set_fan_speed(1);
|
||||
if (power_management->HAS_POWER_EN) {
|
||||
gpio_set_level(GPIO_NUM_10, 1);
|
||||
} else {
|
||||
nvs_config_set_u16(NVS_CONFIG_ASIC_VOLTAGE, 990);
|
||||
nvs_config_set_u16(NVS_CONFIG_ASIC_FREQ, 50);
|
||||
nvs_config_set_u16(NVS_CONFIG_FAN_SPEED, 100);
|
||||
nvs_config_set_u16(NVS_CONFIG_AUTO_FAN_SPEED, 0);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
EMC2101_set_fan_speed(1);
|
||||
if (power_management->HAS_POWER_EN) {
|
||||
gpio_set_level(GPIO_NUM_10, 1);
|
||||
} else {
|
||||
nvs_config_set_u16(NVS_CONFIG_ASIC_VOLTAGE, 990);
|
||||
nvs_config_set_u16(NVS_CONFIG_ASIC_FREQ, 50);
|
||||
nvs_config_set_u16(NVS_CONFIG_FAN_SPEED, 100);
|
||||
nvs_config_set_u16(NVS_CONFIG_AUTO_FAN_SPEED, 0);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
// ESP_LOGI(TAG, "target %f, Freq %f, Volt %f, Power %f", target_frequency, power_management->frequency_value,
|
||||
// power_management->voltage, power_management->power);
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
@ -217,8 +228,6 @@ void POWER_MANAGEMENT_task(void * pvParameters)
|
||||
default:
|
||||
}
|
||||
}
|
||||
// ESP_LOGI(TAG, "target %f, Freq %f, Volt %f, Power %f", target_frequency, power_management->frequency_value,
|
||||
// power_management->voltage, power_management->power);
|
||||
|
||||
// Read the state of GPIO12
|
||||
if (power_management->HAS_PLUG_SENSE) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user