реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> траблы с PRG_RDB, warning: implicit declaration of function 'PRG_RDB'
Mad-man
сообщение Mar 23 2010, 12:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



Привет
помогите разобраться откуда взять описание функции '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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 05:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016