• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Brak pamięci w UNO, przejście na Mega i dalej program świruje.
#1
Witam wszystkich.
Doszedłem w UNO do poziomu ok 14kB programu i ok 60% zmiennych. Ponieważ stosując wszystkie znane tricki zmniejszające zajętość pamięci, doszedłem do momentu, gdy dopisanie kilku linijek "na sztukę" powoduje świrowanie programu, zamieniłem płytke na Mega 2560. Teraz mam zajęte pojedyncze procenty a problem jest taki sam. Problem powoduje np. dopisanie Serial.print. 


Może to problem bibliotek ?

Używam

#include <LiquidCrystal_I2C.h>

#include <EEPROM.h>
#include <Timers.h>
#include <OneWire.h>
#include <DS18B20.h>
#include <Wire.h>



Może IDE źle kompiluje dla Mega? 

Pozdrawiam
Darek
 
Odpowiedź
#2
Bez kodu nie pomożemy... Chyba, że któryś z kolegów odpali szklaną kulę.

Należy sprawdzić przede wszystkim, czy poszczególne części kodu nie wykorzystują tych samych zasobów (główny podejrzany to timer/timery).
 
Odpowiedź
#3
Wszystko zależy od programu, ale 14kb flash i 60% RAM to wcale nie jest dużo, a że o to nie chodzi to sam sobie odpowiedziałeś używając MEGA z 4x więcej RAM.
Jak masz wątpliwości co do IDE to sobie odinstaluj i wgraj inną wersję. Jak się skompilowało to powinno działać tak jak program jest napisany.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#4
Dzięki za podpowiedzi. Wyrzucę timery, zrobię ręcznie na millis-ach. Zobaczymy.
Problem nie leży w kodzie. Dla przykładu układ sprawdza małą klawiatrurę i po naciśnieciu zaczyna odliczać np. od 15 (stała wartość) do zera co sekundę (odliczaną timerem). Po dodaniu linijki typu Serial.print, petla zaczyna "chodzić" sama, bez nacisniecia klawiatury i zaczyna liczyć od np. 65. Potem, żeby było śmieszniej, cały czas rozpoczyna co sekundę ponownie od 65 i nie zmniejsza licznika ( zwykłe zmniejszanie zmienna--).
 
Odpowiedź
#5
Dej kod - ogarniem.
 
Odpowiedź
#6
Ogarnąłem. Głupi błąd. float tablica[3] ma tylko 3 elementy, a nie 4. Dlatego nie lubię C, wolę Delphi, jako stary dziadek.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości