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



Teraz jest 15 sie 2025, o 05:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 22 gru 2017, o 17:49 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

Witam.
Chciałem ponownie podejść do struktur, ponieważ w niektórych sytuacjach jakoś sobie radzę, ale chciałem przećwiczyć sobie tablice tekstowe w powiązaniu
ze strukturami i mi nie wychodzi. Czasem zmiana tematu na inny i powrót po jakimś czasie pomaga, ale coś nie czaję. Napisałem kawałek kodu do wyświetlania
dowolnych tekstów. Oczywiście w strukturze będą inne zmienne różnych typów, ale chodzi mi o teksty. Programik wygląda następująco i się kompiluje, ale
na lcd nic się nie wyświetla. To jest oczywiste, no bo niby co ma wyświetlać. Pytanie, czy dobrze zacząłem (kompilacja na tym etapie ok), czy tak się robi i jak
dalej postępować. Wiem, że przygotowania do świąt itd..., ale może ktoś przegląda forum i zechce coś dołożyć od siebie.


Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
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: 22 gru 2017, o 19:02 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Jeśli dobrze widzę Twój text ma 20 znaków, więc musisz w tablicy zarezerwować dla niego 21 znaków, bo każdy ciąg znaków w języku C musi mieć na końcu znak terminujący (dołączany zwykle automatycznie przez kompilator np. w przypadku zdefiniowania tablicy znaków char text_1[] = "text1";).

Robert_1967 napisał(a):
To jest oczywiste, no bo niby co ma wyświetlać.


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


No i na koniec, jeśli tablica znaków zawierająca tekst nie zmienia zawartości podczas działania programu, lepiej umieścić ją w pamięci FLASH, bo pamięci RAM w 8-bitowych AVRach nie ma zbyt wiele. Między innymi tutaj masz przykłady, jak to zrobić.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2017, o 19:11 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 183
Lokalizacja: Kraków
Pomógł: 30

Nie zainicjalizowałeś tych tablic w strukturze, to niby co miało by się wyświetlać? Ale tak nawiasem, to nie rozumiem jaki jest cel upychania tablic do struktury. Moim zdaniem lepiej jest zadeklarować tablice z odpowiednimi napisami i to najlepiej w pamięci FLASH a następnie zrobić tablicę wskaźników do tych tablic z tekstami.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2017, o 19:23 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

janusz17 napisał(a):
Ale tak nawiasem, to nie rozumiem jaki jest cel upychania tablic do struktury.

Jeśli tablica znaków jest we FLASH, a struktura w RAM, to nawet nie da się tego inaczej zrobić jak poprzez wskaźnik.

Jeśli jedno i drugie jest w tej samej pamięci, umieszczenie tablicy wewnątrz struktury oszczędza dwa bajty pamięci na wskaźnik (może być szczególnie istotne w przypadku użycia pamięci RAM). Trzeba tylko uważać, żeby takiej struktury nie przekazywać do funkcji poprzez wartość, bo to może spowodować problemy, głównie w mikrokontrolerach z małą pojemnością RAM.

Druga sprawa - jeśli tablica znaków jest w trakcie programu modyfikowana, to nie może być w pamięci FLASH.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2017, o 19:49 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

Wielkie dzięki kolegom za odpowiedź

Tak myślałem, że te teksty wepchane do struktury, to jakaś herezja, dla tego nie mogłem za bardzo nic znaleźć na ten temat, a tak sobie "umyśliłem".
Chciałem pokombinować ze strukturami na przykładzie właśnie tekstów. W takim razie przerobiłem kod. To tak tylko na teraz, ponieważ raczej dane będą
zmieniane i flash się nie nada. Czytałem BB, ale jak bym mógł od kolegów zobaczyć, jak tutaj zastosować wskaźniki do wyświetlania tekstów na lcd np. według
Was. Każdy ma własne spojrzenie na jakiś temat.


Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
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: 22 gru 2017, o 20:02 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Zajrzałeś chociaż tam, gdzie proponowałem wcześniej?
Cytuj:
Między innymi tutaj masz przykłady, jak to zrobić.

Masz tam przykład, jak zdefiniować ciągi znaków we FLASH, a później tablicę wskaźników do tych ciągów (także we FLASH, żeby nie zajmować pamięci RAM).


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2017, o 20:44 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 374
Pomógł: 0

Dziękuję kolegom za pomoc.
Kawał materiału do przestudiowania. Szczerze gratuluję posiadanej wiedzy.
Zdrowych i Wesołych Świąt i Szczęśliwego Nowego Roku dla wszystkich pozytywnie zakręconych w C :D .


Dodam jeszcze, że przejrzałem moje wcześniejsze tematy i znalazłem, że przecież dambo pokazał zastosowanie wskaźników w podobnym przypadku
http://forum.atnel.pl/topic19715.html
Ponad to znalazłem ciekawy opis Mirka http://mirekk36.blogspot.com/2013/11/tablica-wskaznikow-we-flash-progmem.html

Pozdrawiam.



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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