Zobacz pan jak straszliwie DUŻO pamięci RAM po prostu marnujesz - bezpowrotnie marnujesz
a wspominam o tym w książce, że taki zapis:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jest robiony przeze mnie tak na szybko ... i nie ma nic wspólnego z optymalizacją kodu, po prostu krócej się go pisze. Nie pamiętasz ? albo nie doczytałeś skąd funkcja lcd_str() bierze argumenty ? to przypomnę z pamięci RAM.
Zaczynasz już rozumieć zgrozę w twoim kodzie ??? każdy taki napis to wyrzucone w błoto bajty RAM ? a dlaczego wyrzucone w błoto ? no bo i tak chociaż byś nie chciał, muszą one przez kompilator być umieszczone w pamięci FLASH !!! żeby skądś się wzięły w tejże pamięci RAM
prawda ? samo nic się w ramie nie pojawi. Więc bidny kompilator nie dość że i tak musi te twoje napisy umieścić we FLASH to jeszcze co gorsze musi napisać kawałek kodu, który po starcie procka ale jeszcze przed twoją funkcją main() napełni te zmienne w pamięci RAM tymi tekstami .... więc pomyśl ile tracisz na takich zapisach gdy robisz nie mały testowy programik a już gotowy
jak myślisz po co jest w książce opisana funkcja lcd_str_P() ???? (nie obraź się proszę ale wydaje mi się że jakoś ją przeczytałeś bardzo hmmm że tak powiem wyrywkowo i wybiórczo .... i stąd twoje problemy, co widać także po tym że nie budzi twojego zdziwienia fakt że zajętość pamięci RAM po kompilacji u ciebie jest ponad 100% !!!!!!
ale ok w książce jest jedno i drugie dokładnie opisane - ja przypomnę ci jednak tutaj - i może to skłoni cię do kolejnego czytania książki albo jej fragmentów żeby zawsze mieć pod ręką .... że zmień swoje zapisy tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ale już sam doczytaj w książce KONIECZNIE:
1. co to takiego jest to PSTR()
2. na temat stosu, jak nad nim panować i ile pamięci RAM warto utrzymywać po kompilacji
ok?
------------------------ [ Dodano po: 1 minucie ]O! kolega wyżej dobrze zauważył - WYWAL KAŻDY rozkaz goto ! i zapomnij o nim na całe życie programując w C - bo nawet jeśli poprawisz kod i będziesz miał więcej RAM'u to goto załatwi cię tak, że nawet 100% wolnego RAMU ci nie pomoże.
------------------------ [ Dodano po: 5 minutach ]Ledes napisał(a):
Zajętość RAM-u nie powinna być większa niż 80% (podczas kompilacji). Inaczej spodziewaj się problemów ze stosem w trakcie działania programu.
To jest taka moja podpowiedź dla kogoś kto początkuje i jeszcze nie czuje się dobrze z tym jak panować nad stosem, gdy nie zna takich narzędzi do badania stosu jakie opisałem w Zielonej książce. Ale w trakcie praktyki programowania każdy dojdzie sam do tego, że ta zajętość spokojnie może być większa (OCZYWIŚCIE w zależności od własnego indywidualnego kodu) i może np wynosić nawet 90% albo i 95%
ale mówię - to już jak się chociaż troszkę dłużej popraktykuje.
A czasem gdy się mocno i świadomie korzysta ze stosu (gdy np ja bawię się warstwami na LCD), podczas tworzenia ala obiektów, albo przy korzystaniu z dynamicznego alkokowania pamięci RAM - może się okazać że np zajętość tej pamięci nie może przekroczyć nawet 70% .... Jak mówię - troszkę praktyki i każdy sam poczuje stos na własnej skórze
no ale nigdy 100% albo jak w tym przypadku więcej niż 100% !