Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 mar 2026, o 22:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 9 wrz 2014, o 19:54 
Offline
Użytkownik

Dołączył(a): 18 kwi 2014
Posty: 25
Pomógł: 0

Witam!
Do wyświetlania napisów na wyświetlaczu tekstowym z popularnym sterownikiem hd44780 korzystam z następującej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wywołuję ją linijką:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


czy dobrze rozumuję: wywołując powyższą linijkę tworzę gdzieś w pamięci taką jakby tablicę ze stringiem do której mam dostęp tylko przez wskaźnik text. Gdy wywołam funkcję kolejny raz tracę jakąkolwiek możliwość dostępu do wcześniejszego stringa a miejsce w pamięci jest przez niego nadal zajmowane. Puszczenie więc
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
w "nieskończoną" pętle celem odświeżania napisu jest receptą na utratę całej pamięci i posypania się programu?
Czy zatem warto dołączyć standardową bibliotekę i dopisać jedną linijkę z funkcją free()? Dodam że rozmiar programu w pamięci flash zwiększa się o około 500 bajtów. Jeśli jednak warto to jak powinna wyglądać owa funkcja?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

czy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2014, o 20:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

#99 napisał(a):
w "nieskończoną" pętle celem odświeżania napisu jest receptą na utratę całej pamięci i posypania się programu?


Kompletnie nie :( te stringi to STAŁE DOSŁOWNE umieszczone w pamięci RAM tak samo jak zmienne globalne, fakt, że jeszcze dodatkowo tracisz przez taki zapis tyle samo miejsca we FLASH bo skądś się ten napis musi wziąć w RAM ;)

ALE NIGDY tego nie zwolnisz free() .... to nie jest w obszarze pamięci RAM służącym do dynamicznej alokacji czyli pomiędzy (w uproszczeniu) zmiennymi globalnymi a stosem ...

Reasumując sam niejako wymyśliłeś sobie nieistniejący problem że każde wywołanie funkcji z takim tekstem powoduje zajmowanie coraz większych obszarów RAM

a tymczasem nie doczytałeś właśnie jeśli chodzi o podstawy na temat

STAŁYCH DOSŁOWNYCH (Literałów)

a warto jednak sięgnąć do tych podstaw bo wtedy się sporo wyjaśni

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2014, o 20:17 
Offline
Użytkownik

Dołączył(a): 18 kwi 2014
Posty: 25
Pomógł: 0

Na pewno doczytam jeszcze co nieco na ten temat a tymczasem dziękuję za wyjaśnienia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 wrz 2014, o 20:40 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Dlatego lepiej korzystać z:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wtedy napis brany jest tylko z FLASH i nie tracisz RAM'u - o ile to mają być "stałe napisy w kodzie"

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO