-
Data: 2012-07-30 10:45:44
Temat: Re: wskaźniki do flash w WinAVR
Od: max441 <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2012-07-27 11:18, Artur M. Piwko pisze:
> In the darkest hour on Fri, 27 Jul 2012 07:45:33 +0200,
> max441 <m...@w...pl> screamed:
>>> 2. Czy tab powinna mieć dwie deklaracje umieszczające łańcuch we Flash? czy albo
używa się prog_char czy albo PROGMEM?
>>
>> Można tak:
>> prog_char tab[] = {"inny tekst"};
>> albo tak:
>> char PROGMEM tab[] = {"inny tekst"};
>>
>
> Nie można ani tak ani tak. W GCC atrybuty dotyczą tylko elementu, przy
> którym występują. Dzięki powyższym deklaracjom umieścisz tab w program
> space, ale "inny tekst" nadal będzie w data space. Trzeba to zrobić
> dwuetapowo:
>
> char string[] PROGMEM = "inny tekst";
> PGM_P tab[] PROGMEM = { string };
Bardzo ciekawe, a niby dlaczego przytoczone przeze mnie przykłady mają
umieszczać "inny tekst" w data space a przytoczone przez kolegę:
char string[] PROGMEM = "inny tekst";
już nie, skoro to jest dokładnie to samo co moje:
prog_char tab[] = {"inny tekst"};
lub
char PROGMEM tab[] = {"inny tekst"};
Nie rozumiem po co dodatkowo tworzyć jednoelementową tablicę wskaźników
do program space, skoro już takim wskaźnikiem jest samo string. Czyli w
przytoczonym przez kolegę przykładzie tab[0]=string i możemy skopiować
tekst do zmiennej w data space na 2 sposoby:
char buffer[20];
strcpy_P(buffer, (PGM_P)pgm_read_word(&(tab[0]))); //lub zamiast
&(tab[0]) w tym przypadku można użyć samo tab
lub dużo prościej bez używania tab
char buffer[20];
strcpy_P(buffer, string);
Przytoczony przez kolegę przykład ma sens jeśli chcemy zadeklarować
tablicę wskaźników do kilku stringów w program space. Wtedy taka
konstrukcja:
char *string_table[] PROGMEM =
{
"String 1",
"String 2",
"String 3",
"String 4",
"String 5"
};
faktycznie umieści "String 1", "String 2" itd. w data space i w tym
przypadku trzeba zrobić to dwuetapowo:
char string_1[] PROGMEM = "String 1";
char string_2[] PROGMEM = "String 2";
char string_3[] PROGMEM = "String 3";
char string_4[] PROGMEM = "String 4";
char string_5[] PROGMEM = "String 5";
PGM_P string_table[] PROGMEM =
{
string_1,
string_2,
string_3,
string_4,
string_5
};
Jednak pytanie w wątku dotyczyło umieszczania jednego stringa w program
space.
Następne wpisy z tego wątku
- 31.07.12 09:04 Artur M. Piwko
Najnowsze wątki z tej grupy
- 2,5 x więcej niż Li-Ion
- Tfu! Przeklety prostokąt (czyli UPS i "sinus modyfikowany")
- Dalekopis T100 - problem z powrotem karetki
- Diody LED - oświetlenie na choinkę
- ale wiesz, że są gotowce?
- jak wykryć zapalenie żarówki?
- Cyna dylemat
- Mierniki poziomu glukozy (CGM, FGM)
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Kontrola nad prądem - sprawdź jak działa [apka - przyp. JMJ] eLicznik
- NETIA i hasło logowania
- Modulacja FM
- Najgorszy język programowania
- Kol. sukces po polsku: firma Szumisie sp. z o.o.
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
Najnowsze wątki
- 2025-12-25 Finlandia przywraca swastykę
- 2025-12-25 Skuteczność wymiaru sprawiedliwości
- 2025-12-24 Felgi
- 2025-12-24 2,5 x więcej niż Li-Ion
- 2025-12-24 No i kolejny ograniczony
- 2025-12-24 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-12-24 New York Times zagrożeniem bezpieczeństwa narodowego USA - POTUS D. Trump
- 2025-12-24 Podżeganie?
- 2025-12-24 => Senior Algorithm Developer (Java/Kotlin) <=
- 2025-12-24 otwarcie drugiej obwodnicy Trójmiasta
- 2025-12-24 Tfu! Przeklety prostokąt (czyli UPS i "sinus modyfikowany")
- 2025-12-23 Prezent dla kierowców od prezydenta Nawrockiego
- 2025-12-23 Warszawa => Asystent ds. Sprzedaży i Rozwoju Klienta <=
- 2025-12-23 Warszawa => Senior IT Recruitment Consultant <=
- 2025-12-22 czy wiedziałeś że?




7 pułapek i okazji - zobacz co cię czeka podczas kupna mieszkania na wynajem