-
Date: Mon, 30 Jul 2012 10:45:44 +0200
From: max441 <m...@w...pl>
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:14.0) Gecko/20120713 Thunderbird/14.0
MIME-Version: 1.0
Newsgroups: pl.misc.elektronika
Subject: Re: wskaźniki do flash w WinAVR
References: <e...@g...com>
<5...@n...home.net.pl>
<s...@b...pl>
In-Reply-To: <s...@b...pl>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Antivirus: avast! (VPS 120729-1, 2012-07-29), Outbound message
X-Antivirus-Status: Clean
NNTP-Posting-Host: 212.85.112.42
Message-ID: <5...@n...home.net.pl>
X-Trace: news.home.net.pl 1343637959 212.85.112.42 (30 Jul 2012 10:45:59 +0200)
Organization: home.pl news server
Lines: 79
X-Authenticated-User: k...@m...pl
Path: news-archive.icm.edu.pl!news.icm.edu.pl!nf1.ipartners.pl!ipartners.pl!news.home
.net.pl!not-for-mail
Xref: news-archive.icm.edu.pl pl.misc.elektronika:634566
[ ukryj 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
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
Najnowsze wątki
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek
- 2025-07-13 Unia Europejska przygotowuje nowy podatek