Большое спасибо за разъяснения, ошибку с объявлением char понял.
Поправил, залил скетч, но вопрос еще остался.
Вариант 1. После заливки плата уходит в вечную перезагрузку
#include <EEPROM.h>
byte address_max_temp = 0;
byte value_max_temp;
char system_text[] = "serial:111222\n"
"batch:9\n"
"max_t:";
char stFileName[3] = "";
char ByteToChar(byte byteSt, byte num)
{
const byte offset = 48;
if (num==1) return char(offset+byteSt/100);
if (num==2) return char(offset+byteSt/10-byteSt/100*10);
if (num==3) return char(offset+byteSt-byteSt/10*10);
}
void setup() {
Serial.begin(115200);
EEPROM.begin(5);
value_max_temp = EEPROM.read(address_max_temp);
byte i;
for (i = 0; i < 3; i++) {
stFileName[i] = ByteToChar(value_max_temp, i+1);
}
strcat(system_text, stFileName);
Serial.print("MAX TEMP=");
Serial.println(stFileName);
Serial.println(system_text);
}
void loop() {}
Вариант 2. Все работает корректно
#include <EEPROM.h>
byte address_max_temp = 0;
byte value_max_temp;
char system_text[] = "serial:111222\n"
"batch:9\n"
"max_t:";
char stFileName[] = "000";
char ByteToChar(byte byteSt, byte num)
{
const byte offset = 48;
if (num==1) return char(offset+byteSt/100);
if (num==2) return char(offset+byteSt/10-byteSt/100*10);
if (num==3) return char(offset+byteSt-byteSt/10*10);
}
void setup() {
Serial.begin(115200);
EEPROM.begin(5);
value_max_temp = EEPROM.read(address_max_temp);
byte i;
for (i = 0; i < 3; i++) {
stFileName[i] = ByteToChar(value_max_temp, i+1);
}
strcat(system_text, stFileName);
Serial.print("MAX TEMP=");
Serial.println(stFileName);
Serial.println(system_text);
}
void loop() {}
Вариант 3. Все работает корректно.
#include <EEPROM.h>
byte address_max_temp = 0;
byte value_max_temp;
char system_text[] = "serial:111222\n"
"batch:9\n"
"max_t:";
char ByteToChar(byte byteSt, byte num)
{
const byte offset = 48;
if (num==1) return char(offset+byteSt/100);
if (num==2) return char(offset+byteSt/10-byteSt/100*10);
if (num==3) return char(offset+byteSt-byteSt/10*10);
}
void setup() {
Serial.begin(115200);
EEPROM.begin(5);
char stFileName[] = "000";
value_max_temp = EEPROM.read(address_max_temp);
byte i;
for (i = 0; i < 3; i++) {
stFileName[i] = ByteToChar(value_max_temp, i+1);
}
strcat(system_text, stFileName);
Serial.print("MAX TEMP=");
Serial.println(stFileName);
Serial.println(system_text);
}
void loop() {}
Вариант 4. Плата уходит в вечную перезагрузку.
#include <EEPROM.h>
byte address_max_temp = 0;
byte value_max_temp;
char system_text[] = "serial:111222\n"
"batch:9\n"
"max_t:";
char ByteToChar(byte byteSt, byte num)
{
const byte offset = 48;
if (num==1) return char(offset+byteSt/100);
if (num==2) return char(offset+byteSt/10-byteSt/100*10);
if (num==3) return char(offset+byteSt-byteSt/10*10);
}
void setup() {
Serial.begin(115200);
EEPROM.begin(5);
char stFileName[3] = "";
value_max_temp = EEPROM.read(address_max_temp);
byte i;
for (i = 0; i < 3; i++) {
stFileName[i] = ByteToChar(value_max_temp, i+1);
}
strcat(system_text, stFileName);
Serial.print("MAX TEMP=");
Serial.println(stFileName);
Serial.println(system_text);
}
void loop() {}
Почему-то плата уходит в перезагрузку при объявлении: char stFileName[3] = “” как глобально, так и в setup.