duemilanove + lcd1602+sd не могу писать лог на sd, виснет

fil
Offline
Зарегистрирован: 07.04.2015

Без библиотеки SD, все работает стабильно. Без SD скетч занимает ~16кБ флеш и 250Б ОЗУ. С SD ~24кБ флеш и 1100Б ОЗУ

 

Волшебник
Offline
Зарегистрирован: 22.12.2016

У вашей борды 1к памяти, если не ошибаюсь, вот и виснет

ZIA
ZIA аватар
Offline
Зарегистрирован: 04.02.2017

Волшебник
Offline
Зарегистрирован: 22.12.2016

ОЗУ                                                                         

1 Кб (ATmega168) или 2 Кб (ATmega328)

http://arduino.ru/Hardware/ArduinoBoardDuemilanove

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

и дальше

fil
Offline
Зарегистрирован: 07.04.2015

У меня борда на 328 камне. Неужели  900б под стек не хватает? Как можно в этом точно убедится? Борду заменить пока не могу. Тут во время оптимизации и поиска решений еще вылезли не понятные косяки: Свой код начал писать и компилировать под Ардуино 1.5.4 и когда столкнулся с проблемой SD карты, нашел в сети библиотеку PetitFS, но она работает с Ардуино 1.6 и выше. Скачал 1.6.13 пришлось немного править код под нее т.к. ругалась на типы переменных хотя 1.5.4 молча все проглатывала в итоге с библиотекой PetitFS не смог  даже инициализировать SD пока не знаю почему но один и тот же код обновления дисплея   - версия  1.6.13 и выше(пробовал 1.8) не выводит букву М. Что за хрень???

void lcdUpdate(){
char sym=140;
char pump[3];
lcd.clear();
lcd.print("Tc");
lcd.print(Tdef);
lcd.print("М");
lcd.print(PWR);
lcd.print("P");
sprintf ( pump, "%03i", Pk);
lcd.print(pump);
lcd.setCursor(15,0);
if (KlapanON) {lcd.write(sym);}//печатаем прямоугольник
lcd.print(" ");

lcd.setCursor(0,1);
lcd.print("T");
lcd.print(Tkub);
lcd.setCursor(5,1);
if (RazogrevON) {lcd.print("R");}
if (TeloON) {lcd.print("T");}//
if (GolovyON) {lcd.print("G");}
if (Distilir) {lcd.print("D");}
if (Stab) {lcd.print("S");}
lcd.print("  ");
lcd.setCursor(6,1);
lcd.print(cnt_Klapan);

 if (_hH<10){ 
 lcd.print("0");
 lcd.print(_hH);
 }
 else{
 lcd.print(_hH);
 }
 if (_mM<10){ 
 lcd.print(":0");
 lcd.print(_mM);
 } 
 else{
   lcd.print(":");
   lcd.print(_mM);
 }
 if (_sS<10){ 
 lcd.print(":0");
 lcd.print(_sS);
 }
 else{
   lcd.print(":");
 lcd.print(_sS);
 }
}

 

fil
Offline
Зарегистрирован: 07.04.2015

Нашел решение, добавил ОЗУ.

Волшебник
Offline
Зарегистрирован: 22.12.2016

fil пишет:

Нашел решение, добавил ОЗУ.

Бред сивой кобылы. ОЗУ добавить можно на Меге

fil
Offline
Зарегистрирован: 07.04.2015

добавил через Serial )).