eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikas->tab[i]Re: s->tab[i]
  • Data: 2013-05-17 09:42:18
    Temat: Re: s->tab[i]
    Od: Marcin <m...@o...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    > No właśnie. Co do panowania nad strukturą to nad nią panuję, bo mam ją po to
    > żeby była to taka swoista "lookup table". Le to jedno miejsce nie działa i
    > już wczoraj się dziwiłem co jest nie tak, robiłem podwójne inicjowaie
    > wskaźników, dla pewności.
    > Czy znaczy mam nie przyjmować do wiadomości, że adres struktury to początek
    > pierwszego elementu? To jest wtgodne, bo raz rozmawiam ze struktuą, albo
    > przez strukturę po elementach
    >
    > s->tab1[]
    > s->tab2[]....
    >
    > a raz traktuję ją jako ciągły obszar jak kawałek ramu liczony od wskaśnika
    > ustawionego na początek. Wszędzie mi działa tylko to kopiowanie nie działa.
    >
    > Ale jak wpiszę:
    >
    > s->tab[i] = ptr[0x98]; czy inny 0x to dane w tab[i] są dobre :-) Te co
    > siedzą tam względem ptr. Tak jakby zmiennej nie brał pod uwagę. Zupełnie
    > irracjonalna sprawa.

    Czy w strukturze oprocz tablic sa jeszcze jakies inne dane ?
    najlepiej podaj tu definicje calej struktury, bedzie wiadomo co w niej
    siedzi.
    Takie moje gdybanie bez znajomosci kodu. Na AVRy dosc dawno nie
    pisalem, ze moze kompilator cos optymalizuje ( struct packed ??? ale
    zastanawiam sie, czy packed dla 8 bitowej platformy ma znaczenie ??) .

    Tablice zawarte w strukturze sa typu uint8_t ??

    Sprobowalem taki kawalek kodu ale __UWAGA__ nie w AvrStudio !!
    /*********************************/
    typedef struct tdAvrStruct {
    UINT8 i;
    UINT8 tablica[10];
    UINT16 tablica16 [10];
    UINT16 licznik;

    } AVR_STRUCT;


    AVR_STRUCT myStruct, *pmyStruct;
    UINT16 j;


    pmyStruct = &myStruct;

    for (j=0; j < 10; j++)
    pmyStruct->tablica[j] = j;

    for (j=0; j y 10; j++)
    pmyStruct->tablica16[j] = 3 * pmyStruct->tablica[j];
    /*********************************/

    i po wykonaniu mam w tablica16 trzykrotnie zwiekszone wartosci
    wczesniej zainicjalizowane w tablica.

    mozesz tez sprobowac zamiast :

    while (i--) {
    s->tab[i] = ptr[i];

    czegos takiego:
    while (i--){
    s->tab[i] = * (ptr + i );
    }
    teoretycznie to samo jak ptr[i], ale moze faktycznie kompilator cos
    miesza?
    Marcin


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: