Привет
помогите разобраться откуда взять описание функции 'PRG_RDB'
(AVR studio 4.16 проц - atmega32)

ибо при компиляции этого


#include <inttypes.h>
#include <avr/io.h> //#include <avr/iom32.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <avr/pgmspace.h>
prog_char hello_str[]="Hello AVR!";

void puts(char * str)
{
while(PRG_RDB(str) != 0)
{
PORTB=PRG_RDB(str++);
}
}

,,,

int main()
{
while (1) {;;}

}


выдает

Build started 23.3.2010 at 15:17:09
../avr-test.c:976: error: conflicting types for 'puts'
../avr-test.c: In function 'puts':
../avr-test.c:9: warning: implicit declaration of function 'PRG_RDB'
make: *** [avr-test.o] Error 1
Build failed with 1 errors and 1 warnings...





////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



виноват просто нужно было использовать pgm_read_byte_near

у меня еще 2 вопросика извините за ламерские вопросы)))
1. на atmega32 нужно использовать только pgm_read_byte_near? Дальних адресов у нас нет?
2. работа с массивом

char __ATTR_PROGMEM__ test[2][4] =
{
"123",
"456"
};

работать как и с обычным

те будет работать puts(test[1])


void puts(char * str)
{
while(pgm_read_byte_near?(str) != 0)
{
PORTB=pgm_read_byte_near(str++);
}
}