Привет помогите разобраться откуда взять описание функции '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++); } }
Сообщение отредактировал Mad-man - Mar 23 2010, 12:59
|