logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AT8] [C] [flash] -rozmiar tablicy

ssl69 05 Cze 2011 16:42 1486 5
REKLAMA
  • #1 9579228
    ssl69
    Poziom 13  
    Cześć Mądrzy Ludzie,

    podpowiedzcie jak sprawdzić długość stringa w pamięcie flash atmegi. Myślałem że "sizeof" zadziała, a tu zonk.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    a potem:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i gdzieś dalej:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    powyższe nie zwracają poprawnych wartości :(

    pozdawiam
    ssl69

    Kod proszę umeścić w znacznikach.
    Robak
  • REKLAMA
  • #2 9579269
    GSM
    Poziom 25  
    Witam,

    zmartwię cię:
    1. to nie są stringi
    2. sizeof() podaje poprawnie rozmiar :wink:

    Pozdrawiam,
    GSM
  • REKLAMA
  • #3 9579426
    ssl69
    Poziom 13  
    Mea culpa, "przestrzeliłem" z określeniem "string". Chodzi o różne tablice we flashu złożone z kilku, kilkunastu bajtów. Wiem, że mógłbym wpisać ich długości na sztywno, ale to nieeleganckie, bo jak się później gdzieś dopisze jakiś bajt, to ... (dopowiedzcie sobie sami}

    (...)
    2. sizeof() podaje poprawnie rozmiar
    (...)
    no chyba nie bardzo, bo jak te same tablice siedzą w RAMie to wszystko działa.


    pozdrawiam
    ssl69
  • REKLAMA
  • #4 9583138
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #5 9583932
    Andrzej__S
    Poziom 28  
    Trochę dziwna ta deklaracja:
    ssl69 napisał:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Ja __attribute__((progmem)) używam raczej po nazwie zmiennej:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i u mnie sizeof tablicy dosyć rozbudowanych struktur (menu) umieszczonej w pamięci FLASH działa prawidłowo.

    ssl69 napisał:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    powyższe nie zwracają poprawnych wartości

    Czyli konkretnie jakie wartości zwracają?
  • #6 9583960
    ssl69
    Poziom 13  
    No nie bardzo z tymi stringami, bo jak zauważył GSM to nie jest string,. Wydawało mi się, że wielkość takiej tablicy jest znana już podczas kompilacji, a co za tym idzie, nie ważne jest jej umiejsowienie (flash, eprom, ram).

    pozdrawiam

    Dodano po 28 [minuty]:

    Cytat:

    Czyli konkretnie jakie wartości zwracają?


    hmm, wyciągnąłem je na LCD i okazało się że poprawne :( :)Znakiem tego spipczyłem coś w czytaniu danych z flash'a, bo to samo osadzone w ramie działało.

    dzięki za pomoc

    pozdrawiam
REKLAMA