mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 11:59:12 +03:00
Добавляем в main подсчет времени выполнения блоков кода
This commit is contained in:
97
src/Main.cpp
97
src/Main.cpp
@@ -30,7 +30,61 @@ void elementsLoop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define SETUPBASE_ERRORMARKER 0
|
||||||
|
#define SETUPCONF_ERRORMARKER 1
|
||||||
|
#define SETUPSCEN_ERRORMARKER 2
|
||||||
|
#define SETUPINET_ERRORMARKER 3
|
||||||
|
#define SETUPLAST_ERRORMARKER 4
|
||||||
|
#define TICKER_ERRORMARKER 5
|
||||||
|
#define HTTP_ERRORMARKER 6
|
||||||
|
#define SOCKETS_ERRORMARKER 7
|
||||||
|
#define MQTT_ERRORMARKER 8
|
||||||
|
#define MODULES_ERRORMARKER 9
|
||||||
|
|
||||||
|
#define COUNTER_ERRORMARKER 9 // количество шагов счетчика
|
||||||
|
#define STEPPER_ERRORMARKER 100000 // размер шага счетчика интервала доверия выполнения блока кода мкс
|
||||||
|
|
||||||
|
int initErrorMarkerId = 0; // ИД маркера
|
||||||
|
int errorMarkerId = 0;
|
||||||
|
unsigned long errorMarkerCounter = 0;
|
||||||
|
|
||||||
|
hw_timer_t *My_timer = NULL;
|
||||||
|
void IRAM_ATTR onTimer(){
|
||||||
|
if (errorMarkerCounter >= 0) {
|
||||||
|
if (errorMarkerCounter >= COUNTER_ERRORMARKER) {
|
||||||
|
errorMarkerId = initErrorMarkerId;
|
||||||
|
errorMarkerCounter = -1;
|
||||||
|
} else
|
||||||
|
errorMarkerCounter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void initErrorMarker(int id) {
|
||||||
|
initErrorMarkerId = id;
|
||||||
|
errorMarkerCounter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void stopErrorMarker(int id) {
|
||||||
|
errorMarkerCounter = -1;
|
||||||
|
if (errorMarkerId)
|
||||||
|
SerialPrint("I", "WARNING!", "A lazy (freezing loop more than " + (String)(COUNTER_ERRORMARKER * STEPPER_ERRORMARKER / 1000) + " ms) section has been found! With ID=" + (String)errorMarkerId);
|
||||||
|
errorMarkerId = 0;
|
||||||
|
initErrorMarkerId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
My_timer = timerBegin(0, 80, true);
|
||||||
|
timerAttachInterrupt(My_timer, &onTimer, true);
|
||||||
|
timerAlarmWrite(My_timer, STEPPER_ERRORMARKER, true);
|
||||||
|
timerAlarmEnable(My_timer);
|
||||||
|
//timerAlarmDisable(My_timer);
|
||||||
|
|
||||||
|
initErrorMarker(SETUPBASE_ERRORMARKER);
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.flush();
|
Serial.flush();
|
||||||
Serial.println();
|
Serial.println();
|
||||||
@@ -53,9 +107,12 @@ void setup() {
|
|||||||
// синхронизация глобальных переменных с flash
|
// синхронизация глобальных переменных с flash
|
||||||
globalVarsSync();
|
globalVarsSync();
|
||||||
|
|
||||||
|
stopErrorMarker(SETUPBASE_ERRORMARKER);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initErrorMarker(SETUPCONF_ERRORMARKER);
|
||||||
|
|
||||||
// настраиваем микроконтроллер
|
// настраиваем микроконтроллер
|
||||||
configure("/config.json");
|
configure("/config.json");
|
||||||
|
|
||||||
@@ -76,17 +133,24 @@ void setup() {
|
|||||||
SerialPrint("i", "i2c", F("i2c pins overriding done"));
|
SerialPrint("i", "i2c", F("i2c pins overriding done"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stopErrorMarker(SETUPCONF_ERRORMARKER);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initErrorMarker(SETUPSCEN_ERRORMARKER);
|
||||||
|
|
||||||
// подготавливаем сценарии
|
// подготавливаем сценарии
|
||||||
iotScen.loadScenario("/scenario.txt");
|
iotScen.loadScenario("/scenario.txt");
|
||||||
|
|
||||||
// создаем событие завершения инициализации основных моментов для возможности выполнения блока кода при загрузке
|
// создаем событие завершения инициализации основных моментов для возможности выполнения блока кода при загрузке
|
||||||
createItemFromNet("onInit", "1", 1);
|
createItemFromNet("onInit", "1", 1);
|
||||||
|
|
||||||
elementsLoop();
|
elementsLoop();
|
||||||
|
|
||||||
|
stopErrorMarker(SETUPSCEN_ERRORMARKER);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initErrorMarker(SETUPINET_ERRORMARKER);
|
||||||
|
|
||||||
// подключаемся к роутеру
|
// подключаемся к роутеру
|
||||||
routerConnect();
|
routerConnect();
|
||||||
|
|
||||||
@@ -106,14 +170,15 @@ void setup() {
|
|||||||
standWebSocketsInit();
|
standWebSocketsInit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
stopErrorMarker(SETUPINET_ERRORMARKER);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initErrorMarker(SETUPLAST_ERRORMARKER);
|
||||||
|
|
||||||
// NTP
|
// NTP
|
||||||
ntpInit();
|
ntpInit();
|
||||||
|
|
||||||
// инициализация mqtt
|
|
||||||
//mqttInit();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// инициализация задач переодического выполнения
|
// инициализация задач переодического выполнения
|
||||||
periodicTasksInit();
|
periodicTasksInit();
|
||||||
|
|
||||||
@@ -149,6 +214,8 @@ void setup() {
|
|||||||
// test
|
// test
|
||||||
Serial.println("-------test start--------");
|
Serial.println("-------test start--------");
|
||||||
Serial.println("--------test end---------");
|
Serial.println("--------test end---------");
|
||||||
|
|
||||||
|
stopErrorMarker(SETUPLAST_ERRORMARKER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -158,21 +225,29 @@ void loop() {
|
|||||||
unsigned long st = millis();
|
unsigned long st = millis();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
initErrorMarker(TICKER_ERRORMARKER);
|
||||||
ts.update();
|
ts.update();
|
||||||
|
stopErrorMarker(TICKER_ERRORMARKER);
|
||||||
|
|
||||||
#ifdef STANDARD_WEB_SERVER
|
#ifdef STANDARD_WEB_SERVER
|
||||||
|
initErrorMarker(HTTP_ERRORMARKER);
|
||||||
HTTP.handleClient();
|
HTTP.handleClient();
|
||||||
|
stopErrorMarker(HTTP_ERRORMARKER);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef STANDARD_WEB_SOCKETS
|
#ifdef STANDARD_WEB_SOCKETS
|
||||||
|
initErrorMarker(SOCKETS_ERRORMARKER);
|
||||||
standWebSocket.loop();
|
standWebSocket.loop();
|
||||||
|
stopErrorMarker(SOCKETS_ERRORMARKER);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
initErrorMarker(MQTT_ERRORMARKER);
|
||||||
mqttLoop();
|
mqttLoop();
|
||||||
|
stopErrorMarker(MQTT_ERRORMARKER);
|
||||||
|
|
||||||
|
initErrorMarker(MODULES_ERRORMARKER);
|
||||||
elementsLoop();
|
elementsLoop();
|
||||||
|
stopErrorMarker(MODULES_ERRORMARKER);
|
||||||
|
|
||||||
// #ifdef LOOP_DEBUG
|
// #ifdef LOOP_DEBUG
|
||||||
// loopPeriod = millis() - st;
|
// loopPeriod = millis() - st;
|
||||||
|
|||||||
Reference in New Issue
Block a user