ATNEL tech-forum
https://forum.atnel.pl/

Tablice 2 wymiarowe odczyt "string"
https://forum.atnel.pl/topic22081.html
Strona 1 z 1

Autor:  Kaz K [ 17 mar 2019, o 20:29 ]
Tytuł:  Tablice 2 wymiarowe odczyt "string"

No i poległem na probie wyciagnięcia z pamięci flasz do ram danych typu char "ciagu stringów". Od 2 dni probuje to zrobić, przeczytałem tony porad i mam taki mętlik w głowie, że tego nie pokonam "w tym życiu". Nie będe ukrywał, że w tym przypadku prosiłbym o gotowca z(najlepiej z opisem co i gdzie) gdyż nam obecnym poziomie umiejętności nie jestem w stanie tygo napisać.
Mam w tablicy 2 wymiarowej zapisane ciągi tekstowe które chce wywoływać w menu lub dowolnym miejscu programu - czy to jest wogóle możliwe? Czy muszę mieć to jako tablicę 1 wymiarową ( wtedy tych tablic by trzeba z 20 utworzyć) ?
Przykład:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  Kaz K [ 17 mar 2019, o 22:18 ]
Tytuł:  Re: Tablice 2 wymiarowe odczyt "string"

Dzięki Kolego działa.
Kucze musze chyba zdezynfekować łepetyne i zrobić twardy reset . Ja kombinowałem z kopiowaniem każdego znaku do ram , odwołaniami do adresów itd aż poległem.

Autor:  mirekk36 [ 17 mar 2019, o 23:24 ]
Tytuł:  Re: Tablice 2 wymiarowe odczyt "string"

zubik napisał(a):
Pozwól że pokażę Ci to w sposób w jaki ja to robię:

deklaracja tablicy w pliku .h

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


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


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

...


No niestety ale to jest drastycznie niepoprawny sposób definiowania i zarządzania stringami w C w AVR ... i nie polecam takiego podejścia. Wystarczy sobie chociażby porównać ile niepotrzebnie tracimy pamięci FLASH na taki zapis ... i już wskazuję gdzie jest pułapka. Otóż kolega zubik zdefiniował każdy string o długości 33 bajty a tymczasem większość stringów w tej tablicy ma tylko kilka bajtów. Oczywiście rozumiem że to tylko przykład no ale w życiu też tak będzie ... toż zostanie utworzona tablica gdzie KAŻDY element będzie zawierał 33 bajty !!! masakra trochę co? Nawet jeśli zostanie tam umieszczony tylko string np: "Z=". Krótko mówiąc przy takim podejściu szlag trafi aż 396 bajtów pamięci FLASH! co dla jakiegoś malucha attiny to wręcz zabójstwo ale i dla większych procków i większej ilości tak umieszczonych stringów to też zabójstwo.

polecam sprawdzić co się stanie gdy te same stringi umieścimy we FLASH tak:

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


okaże się, że NAGLE z pamięci FLASH zniknie zajętych bajtów aż 288 !!! czyli napisy z dodatkową tablicą wskaźników zajmą tylko 108 bajtów! dla tego przypadku ... teraz czuć różnicę ?

po prostu każdy napis definiujemy oddzielnie i ew tworzymy tablicę wskaźników w której przechowujemy właśnie wskaźniki do tych napisów, a później też można spokojnie sobie robić z tymi napisami co się żywnie podoba łącznie z wyświetlaniem na LCD, terminalu - gdziekolwiek - jak ?

Polecam jednak zaglądać częściej na mojego bloga bo akurat ten problem opisałem już bardzo dawno temu bo w 2013 roku

http://mirekk36.blogspot.com/2013/11/ta ... ogmem.html

i tam wszystko ładnie krok po kroku wyjaśniam

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/