Недостаточно памяти, программа может работать нестабильно.

Тема в разделе "Arduino & Shields", создана пользователем Vovka, 12 фев 2019.

  1. AlexU

    AlexU Гуру

    Для строки:
    Код (C++):
    printLN( (const char *)(string_table[2]) );
    оптимизатор сразу вычисляет правильный адрес во флеш и вышивает его в бинарник.
    А для строки:
    Код (C++):
    printLN( (const char *)(string_table[a]) );
    адрес вычисляется во время работы программы. Адрес хранится во флеш, а читается из RAM. Вот тут-то "собака и порылась"...
    Нужно сначала адрес строки прочитать из флеша, а потом уже передавать в функцию printLN.

    PS: а 'disp' -- это что за тип? Случаем не Ардуиновский LiquidCrystal, который умеет работать напрямую с флешем?
     
  2. AlexU

    AlexU Гуру

    И ещё, все строки имеют завершающий символ -- '\0'. Поэтому указывать размер строки в первом символе не обязательно. Хотя это и более безопасно в плане обработки строк...