eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAvr: PROGMEM, PSTR i strukturaRe: Avr: PROGMEM, PSTR i struktura
  • Data: 2011-08-08 06:00:30
    Temat: Re: Avr: PROGMEM, PSTR i struktura
    Od: Zbych <a...@o...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2011-08-08 00:38, Sebastian Biały pisze:
    > Witam.
    >
    > Chce zrobić coś takiego:
    >
    > struct Data {
    > const char *foo;
    > unsigned char a;
    > };
    >
    > Data PROGMEM data = { PSTR("Coś"), 4 };
    >
    > Oczywiscie nie mogę, bo PSTR to jest "__extension__" i można tego używać
    > chyba tylko jako argumentu funkcji: " statement-expressions are not
    > allowed outside functions nor in template-argument lists"

    I jest to nawet opisane w FAQ:

    http://www.nongnu.org/avr-libc/user-manual/FAQ.html#
    faq_rom_array

    > W kazdym razie padłem na tym że nie mam jak zainicjować statycznej const
    > struktury. Chciałbym ja inicjować dokladnie tak jak to widać, tzn w
    > miejscu.
    >
    > Tak też się nie da:
    >
    > const char PROGMEM *z = "Inne";
    > Data PROGMEM data2 = { z, 8 };
    >
    > Wylatuje z: "error: data2 causes a section type conflict"
    >
    > Zamiana z const char* na PGM_P tez nic nie pomaga. Co jeszcze powinienem
    > sprawdzić?


    U siebie stosuję coś takiego:

    static const prog_char cmd_sin_rgb_fast[] = "$sin_rgb_fast#";
    [...]

    struct{
    const prog_char * cmd;
    uint8_t len;
    uint8_t mode;
    }static const PROGMEM cmd_tab[] = {
    {cmd_sin_rgb_fast, sizeof(cmd_sin_rgb_fast) - 1, mode_sin_rgb_fast},
    [...]
    };

    i działa.

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: