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



Teraz jest 12 lis 2024, o 11:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 17 mar 2019, o 20:29 
Offline
Użytkownik

Dołączył(a): 21 gru 2018
Posty: 74
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2019, o 22:18 
Offline
Użytkownik

Dołączył(a): 21 gru 2018
Posty: 74
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2019, o 23:24 
Offline
Moderator
Avatar użytkownika

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

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

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

Strefa czasowa: UTC + 1


Kto przegląda forum

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