Зависает 2560мега

saverus
Offline
Зарегистрирован: 24.10.2012

 Столкнулся с проблемой зависания ардуины.
суть програмы считывать параметры тепературы и влажности и записывать на сд карту(логер).
раз в 600 цыклов выполнения програмы loop (цыкл длится около 1 сек, 600 - 10минут) включает реле.
запись в файл происходит раз в цыкл.
Отключал реле полностю, не помогло зависало бывало на 340 цыклах, до включения реле есчо 260.

saverus
Offline
Зарегистрирован: 24.10.2012

 2 попытка зависло на 397 цыкле.
такая вот запись в файле
вот пример нормальной строки таких 396
Temperature: 23 *C Humidity: 23 % 

а вот так заканчивается файл ужу второй раз подряд
Temperature: 23 *C Humidity: 23 %
Temperature: 23 *C Humidity: 2
O
Теоретически зависает при записи на карту. Вопрос: при открытии файла на запись весь файл помещается в память контролера??? Файл 14кб. Если да то решить можна меншим количеством записи или пусть после 300 записей создает новий файл?
Весь код проги не выкладываю так как там около 350строк.

saverus
Offline
Зарегистрирован: 24.10.2012

 Вот фрагмент програмы который пишет в файл

File dataFile = SD.open("datalog.txt", FILE_WRITE);

if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
lcd.clear();
lcd.print("ERROR open file"); //
}
взято из примера логера
опять зависло на 397 цыкле
повторно 470 цыклов
размер файла не сыграл значения


saverus
Offline
Зарегистрирован: 24.10.2012

 изменил счетчик.
теперь считает только до 60 польот нормальный 4000 цыклов.
поставил на тест  счетчик 120.
4 суток проработало без проблем.

Кто может знает, если в этом проблема то с чем это связяно с нехваткой ОЗУ? но почему так?? сколько максимум? или меньше значит лучше.