Змінюй хід війни! Допомагай ЗСУ!

Электрофлуд :)

🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7781
2 простых правила:

1. Не объявляй массивы внутри функций
2. Не передавай функциям массив, передавай указатель на него.

Это избавит от переполнения стека.

Я хз как написаны в ардуине либы, но мне кацца, что динамическое выделение памяти там никто не использует и heap можно выставить в ноль.

Ардуина на плюсах. Там, как не странно, есть динамическое выделение памяти. Контроллера в атмеге нет - это да, но созданный в функции массив - будет освобождён по выходу. Он локальный.
Передавать массив - смотря какой. И там ++, там классы вообще.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7782
Вот такая херня. При этом, у меня переменных - с гулькин нос...

Sketch uses 24*110 bytes (74%) of program storage space. Maximum is 32*256 bytes.
Global variables use 1*847 bytes (90%) of dynamic memory, leaving 201 bytes for local variables. Maximum is 2*048 bytes.

Low memory available, stability problems may occur.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7783
Вот такая херня. При этом, у меня переменных - с гулькин нос...

Sketch uses 24*110 bytes (74%) of program storage space. Maximum is 32*256 bytes.
Global variables u*847 bytes (90%) of dynamic memory, leaving 201 bytes for local variables. Maximum is 2*048 bytes.se 1

Low memory available, stability problems may occur.

Так вопрос-то в чём? Где нехватка?
И вообще - какая плата хоть.
P/S Чёт дохуя глобальніх переменніх... откуда атмега8 в ардуине?
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7784
Так вопрос-то в чём? Где нехватка?
И вообще - какая плата хоть.
P/S Чёт дохуя глобальніх переменніх... откуда атмега8 в ардуине?

Вот и мне кажется, что еще и запас есть. Но, по сути, глючит безбожно. При записи на карту SD.
Плата ардуино уно.
Переменные, похоже, в основном в библиотеках. У меня с десяток моих, плюс массив int на 60 значений.
Задача простая как двери. Раз в секунду читаем показание термпары, суммируем за 10 секунд значение, сравниваем максимальное, минимальное, выводим на экран среднее за 10 секунд. Время берем с часов реального времени. Раз в минуту пишем в массив минутное значение. Раз в час сливаем на карту в лог файл массив из 60 значений, вбивая впереди соответствующее время.
В общем, логгер. Мысля в том, что можно взять карту памяти и слить на комп значения. По отдельности - все работает. А вот в куче - куча глюков и памяти нет.
Библиотеки для:
экрана, датчика температуры, часов и карточки. Пара вспомогательных... И все, блин, жопа, аки выше написано....

Код:
//часовой цикл.  
if (time.seconds == 59 || time.seconds == 59 ) // отслеживаем конец каждой минуты каждого часа и записываем на диск данные. 
{
// проверяем карту!  
pinMode(10, OUTPUT);
delay(100);
if (!SD.begin(SDSelect)) {
//lcd.setCursor(0,1);
Serial.print("SD Card failed !!!"); 
//return;
} 
else{
// начинаем запись в файл 
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
  if (dataFile) {
      for ( byte j=0; j < 60; j++){
     dataFile.print(time.Hours);
     dataFile.print(":");
    if (j<10 ) {dataFile.print("0");}
     dataFile.print(j);
     dataFile.print(" ");
     dataFile.print(tempAR[j]);
     dataFile.println(";");
     } // конец цикла for
     dataFile.close();
     Serial.print("File write OK !!!"); 
    // print to the serial port too:
    //    Serial.println(dataString);
   } // конец цикла IF
   // if the file isn't open, pop up an error:
  else {
  dataFile.close();
  Serial.print("File write failed !!!"); 
   }// конец цикла else  
//lcd.clear();   
}
 } // конец часового цикла.

Карта инициализируется, файл создается, иногда, в него даже пишется.
Но, вот те нули которые должны добавиться перед значением массива (до 10), выводятся, с какого-то хрена, после него. Файл не закрывается. Несмотря на то, что я его в любом случае пытаюсь закрыть. Второй проход - карта уже не инициализируется.. Уходит в нирвану.... ;-(
Для отладки пишу на карту раз в минуту...
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7785
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7786
File dataFile = SD.open("datalog.txt", FILE_WRITE);
Объяви ее глобальной.
Проц из стека берет памяти на целый инстанс файла, а там может быть немало.


if (time.seconds == 59 || time.seconds == 59 )
Неясен смысл этой конструкции.

Почему бы не переписать вот так?
if( (time.seconds % 60) == 0 )
{
// код
}
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7787
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7788
Объяви ее глобальной.
Проц из стека берет памяти на целый инстанс файла, а там может быть немало.



Неясен смысл этой конструкции.

Почему бы не переписать вот так?
if( (time.seconds % 60) == 0 )
{
// код
}
Спасибо, попробую. Там, где неясно, условие :59 минут, 59 секунд каждого часа. Раз в час. На момент отладки условие оставлено только 59 секунд
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7789
Спасибо, попробую. Там, где неясно, условие :59 минут, 59 секунд каждого часа. Раз в час. На момент отладки условие оставлено только 59 секунд

time.seconds == 59 || time.seconds == 59

Это баг
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7790
time.seconds == 59 || time.seconds == 59

Это баг
Спасибо, я знаю. Это не баг, это фича! ;)

В коде, в оригинале, будет:
if (time.seconds == 59 && time.minutes== 59 )
"Если секунды=59 и минуты =59" - то отрабатываем условие. Выполняется раз в час, по итогу.

Пока, на время отладки, я убрал условие проверки минут. Код выглядит по дебильному, но мне так удобнее сейчас запоминать
Т.е. сейчас выполняется раз в минуту, на 59 секунде . В этом блоке у меня косяки и дальше есть, их отлаживаю....

Из того, что нашел. Инициализировать карту можно только один раз! При этом, проверка на инициализацию - это и есть ее инициализация. Нельзя два раза проверить - баг. ;-(
Команды деинициализации карты - нет как таковой в библиотеке.
Карту вынимать из слота и вставлять обратно -нельзя.
Итого, работа с СД картой в ардуине реализована уж очень криво и через жопу.... При этом ресурсов жрет немеряно. ;-(
Т.е. вытащить карту из слота, считать и вставить обратно - нельзя! ТОлько с рестартом всей ардуины.

Это все при "условии использования стандартных библиотек".
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7791
В догонку, вот тут проблема описана.
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

И решение. Но я, честно говоря, с этим сам не справлюсь. Пока буду думать и изобретать костыли...
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7792
В догонку, вот тут проблема описана.
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

И решение. Но я, честно говоря, с этим сам не справлюсь. Пока буду думать и изобретать костыли...

Так там не твоя проблема. Там проблема, что в либе нет деструктора - один раз инициализируется карта и потом её данные будут применяться когда ту вынули, а другую всунули, естественно оно потом не работает при замене карты.
У тебя ж проблемы были с памятью, а не с багами в либах.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7793
Так там не твоя проблема. Там проблема, что в либе нет деструктора - один раз инициализируется карта и потом её данные будут применяться когда ту вынули, а другую всунули, естественно оно потом не работает при замене карты.
У тебя ж проблемы были с памятью, а не с багами в либах.
Они, блин,связаны между собой оказались.
Баги в либах дают траблы с памятью.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7794
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7795
Ага, спасибо. Пока - таймаут. Ковыряюсь.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7796
мелкософт - пидоры.
Но есть ньюанс - их защиту от установки Win 7 на новое железо можно обойти и всё работает.

P.S. Да, я не хочу каждый раз перегружать десятку чтобы отучить её искать подписи драйверов, так как из реестра это почему-то не прокатывает.
Ну, и дрова под protoss на десятку ни кто так и не сделал.

P.P.S> Прирост от апгрейда на семёрке намного заметнее, чем на десятке.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7797
Вот что /SystemValidationErrorAsWarning животворящий делает. Оказывается, можно вкатить 7ю студию и на 7ю винду!! Но wufuc тоже по работал :)

Опять мелкомягким поправили корону лопатой.
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7798
Нужен PCB дизайнер, или два.
Есть желающие?
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7799
PCB дизайн - разводка печатных плат?
 
  • 🟢 21:46 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7800
Назад
Зверху Знизу