eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVRSTUDIO › Re: AVRSTUDIO
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Konop <k...@g...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: AVRSTUDIO
    Date: Thu, 14 Jul 2011 17:58:15 +0200
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 59
    Message-ID: <ivn3mo$p4k$1@inews.gazeta.pl>
    References: <ivlukl$3su$1@opal.futuro.pl>
    <4e1e8792$0$3502$65785112@news.neostrada.pl>
    <ivm1vk$b7i$1@opal.futuro.pl>
    NNTP-Posting-Host: hmk227.internetdsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1310659096 25748 79.188.62.227 (14 Jul 2011 15:58:16 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 14 Jul 2011 15:58:16 +0000 (UTC)
    X-User: konoppo
    In-Reply-To: <ivm1vk$b7i$1@opal.futuro.pl>
    User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516
    Thunderbird/3.1.10
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:613678
    [ ukryj nagłówki ]

    W dniu 14.07.2011 08:22, Lelek@ pisze:
    >
    > "Zbych" <a...@o...pl> wrote in message
    > news:4e1e8792$0$3502$65785112@news.neostrada.pl...
    >> W dniu 2011-07-14 07:25, Lelek@ pisze:
    >
    >> Sama struktura w ogólności nie gwarantuje ciągłości (człowiek nawet
    >> nie poczuje jak mu się zrymuje), bo dochodzi jeszcze coś takiego jak
    >> wyrównanie adresów (padding po polsku) dla zmiennych wielobajtowych
    >> (np. int). Na avr nie powinieneś mieć z tym problemu jeśli do opcji
    >> kompilacji jest dodawane -fpack-struct, albo użyjesz atrybutu packed
    >> przy strukturze.
    >
    > A nie można zmusić tych tablic jakimś atrybutem żeby jedna za drugą sie
    > ustawiły w ramie?
    > mam już napisany program i teraz przyszła mi ochota na chwilowy bufor
    > 1kB ale nie mam tego 1kilo, a tablice są niepotrzebne w chwili używania
    > tego obszaru jako bufor.

    unsigned char Bufor[1024];

    //unsigned char A[128];
    unsigned char *A = &Bufor[0]

    //unsigned int B[32];
    unsigned int *B = (unsigned int *) &Bufor[128];

    //unsigned int char C[16];
    unsigned char *C = &Bufor[192];

    i dalej możesz spokojnie używać zapisów:
    A[3] = 5;
    for (i=0;i<32;i++) B[i] = 0;
    if(C[4] >= 10) ...

    ALE!! Uwaga!! Zapisy typu sizeof(A) na pewno Ci nie zwrócą wielkości
    tablicy A, bo kompilator nawet nie wie, ile ona zajmuje!! Pomijając
    fakt, że zmiana rozmiaru pierwszej tablicy pociąga za sobą konieczność
    korekty pozostałych, choć to możesz ominąć odpowiednimi dyrektywami
    #define... Ale z tym powalcz już sam ;)...
    Tak czy siak - ja bym tak napisał program tylko, jeśli chciałbym komuś
    uprzykrzyć życie... w przeciwnym wypadku stosowałbym struktury!! Co do
    tego, czy są ciągłe - w 8-bitowcu właściwie na pewno, poza tym, jeśli
    nie są, to miejsce pomiędzy nimi jest "puste", więc nic nie stoi na
    przeszkodzie, aby je wykorzystać.
    Np.
    struct {
    unsigned char A[130];
    unsigned int B[32];
    unsigned char C[16];
    } _s;

    i możesz spokojnie odwoływać się do:
    _s[140] bez obawy, że wyjedziesz poza obszar struktury _s.


    --
    Pozdrawiam
    Konop

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: