Привет
помогите разобраться откуда взять описание функции '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++);
}
}