win-avr Řetězce ve FALSH a warning

Ondrej leguanolog@seznam.cz
Sobota Květen 2 17:46:19 CEST 2009


Zkuste tohle (je to podle dokumentace nebo tak a používám to už pár let 
na různé verze WinAVR bez problémů):

#define PRINT(string) (USART_PrintfProgStr(PSTR(string)))

extern void USART_PrintfProgStr  (const prog_char *pBuf );

extern void USART_PrintfProgStr  (const prog_char *pBuf )
{
    register u08 c;
   
    while ((c = pgm_read_byte_near (pBuf++)))
    {
        USART_SendByte(c);
    }
}

Smotné PSTR je definováno v pgmspace. Jinak nějaký speciální makefile 
myslím netřeba.

OH



Petr Stehlik napsal(a):
> Jak správně nadefinovat řetezec do paměti programu, aby tam byl
> a zaroveň to nevyhodilo žádný warning?
> Je to nějakým nastavením, nebo mám použít nějakou konkrétní verzi winavr?
> Prohledal jsem internet a všechny přiklady mi při překladu vyhodí warning.
> Momentálně používám WinAVR 20090313.
> Poraďte mi co s tím. Díky.
> Petr
>
> uartSendStr_P("\r\n\nZadej volbu:");   // rozumím, je to zastaralé
> -warning: deprecated conversion from string constant to 'prog_char*'
>
>  // Potřeboval bych se dopracovat k něčemu takovému.
> // Mám asi 50 textů, které se nikde neopakují a tahat je
> // přes proměné se mi jeví nepřehledné.
> uartSendStr_P(PSTR("\r\n\nZadej volbu:"));  // Todle by prý mělo fungovat, 
> ale..
> -warning: only initialized variables can be placed into program memory area
>
> char text1[] __attribute__ ((progmem)) = "\r\n\nZadej volbu:";
> char text1[] __attribute__ ((__progmem__)) = "\r\n\nZadej volbu:";
> char text1[] PROGMEM = "\r\n\nZadej volbu:";
> -warning: 'progmem' attribute ignored
> -warning: '__progmem__' attribute ignored
> -warning: '__progmem__' attribute ignored
>
> příklad přímo z dokumentace
> const char foo[] PROGMEM = "Foo";
> const char bar[] PROGMEM = "Bar";
> PGM_P array[2] PROGMEM = {foo,bar};
> -warning: '__progmem__' attribute ignored
> -warning: '__progmem__' attribute ignored
> -warning: '__progmem__' attribute ignored 
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>   

-- 
Jabber: Iguaner@jabber.cz
ICQ: 122712466

---------------------------------------------------
|                                                 |
|       IKORAS - My home-made MP3 player          |
|       http://ikoras.iglu.cz                     |
|                                                 |
--------------------------------------------------- 




Další informace o konferenci Hw-list