Отказ работы ESP32

Тема в разделе "ESP8266, ESP32", создана пользователем Pahanovskill, 6 ноя 2017.

  1. Pahanovskill

    Pahanovskill Нуб

    Доброго всем дня.
    Отладочная плата nodeMCU 32.
    Программирую через Arduino IDE.
    Контроллер уходит в бесконечный reboot, причем это происходит исключительно в следствии определенного куска кода.
    Код (C++):

    totMin = 120;
    .
    .
    .
    for(short int r=0; r<99; r++ ){
      if((onlTOTAL[r])<totMin) totMin=(onlTOTAL[r]);
      }
    Когда его удаляешь, то контроллер запускается начинает нормально работать, да и пробовал подключать питание разной мощности.
    По сути я пытаюсь вытащить из массива минимальное число.

    Переменная totMin глобальная, ее тип short int.
    onlTOTAL является массивом и имеет тот же тип.

    Подскажите в чем может быть причина, такого поседения контроллера
     
  2. rkit

    rkit Гуру

    код отрывками не работает
     
  3. Pahanovskill

    Pahanovskill Нуб

    Не совсем понял.
    Нужен весь код? Вот.
    Это тестовый образец. В нем уже есть некоторые изменения, но все же он вводит контроллер в то же состояние постоянного перезапуска
     

    Вложения:

    • Test.ino
      Размер файла:
      1,4 КБ
      Просмотров:
      561
    • font.h
      Размер файла:
      30 КБ
      Просмотров:
      568
  4. rkit

    rkit Гуру

    Того же отрывка нет
    Есть это, где -10 совершенно не в тему
    totMin=(onlTOTAL[r])-10;
     
  5. Airbus

    Airbus Радиохулиган Модератор

    А цель всего этого?
     
  6. Pahanovskill

    Pahanovskill Нуб

    Я и написал, что программу немного изменил, для поиска проблем. Данные (-10) никак не влияют на работу кода.

    Пришел к выводу, что причиной всех без является функция "map"
    В ней похоже происходят деления на 0.
    В интернете нашел ее и исходную версию функции "map"

    Код (C++):
    long map(long x, long in_min, long in_max, long out_min, long out_max)
    {
      return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
     

    Я хочу получить динамический график, то есть, чтоб изменялась верхняя и нижняя границы поля, отображая это на Oled дисплее.
     
  7. Pahanovskill

    Pahanovskill Нуб

    В общем проблема найдена, причина действительно в функции "map". Когда число in_max и in_min равны, то контроллер перестает работать, для этого я просто перед этой функцией к in_Max добавляю 10.
    В любом случае спасибо за помощь, долго не мог понять причины (видимо нужно было посмотреть со стороны).