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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 lip 2025, o 22:51


    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 8 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO