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

 
 
> Помогите откомпилировать пример в avr-gcc (GCC) 3.4.6.
ShuraM
сообщение Nov 14 2006, 11:05
Сообщение #1





Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299



Прикрепленный файл  a16e2.zip ( 9.64 килобайт ) Кол-во скачиваний: 174
При попытке окомпилировать пример avr-gcc (GCC) 3.4.6 выдаёт кучу варнингов и ошибки, подкажите плз. как это исправить.

Версия WinAvr 20060421

Цитата
-------- begin --------
avr-gcc (GCC) 3.4.6
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiling: main.c
In file included from main.c:16:
symbol_tbl.h:5: warning: missing braces around initializer
symbol_tbl.h:5: warning: (near initialization for `symbol[0]')
main.c: In function `__vector_9':
main.c:132: warning: implicit declaration of function `sbi'
main.c: In function `spi_init':
main.c:184: warning: implicit declaration of function `cbi'
main.c: In function `adc_init':
main.c:201: error: `ADHSM' undeclared (first use in this function)
main.c:201: error: (Each undeclared identifier is reported only once
main.c:201: error: for each function it appears in.)
main.c: In function `main':
main.c:214: warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type
main.c:215: warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type
main.c:216: warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type
main.c:217: warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type
main.c:218: warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type
main.c:233: warning: assignment discards qualifiers from pointer target type
main.c:242: warning: implicit declaration of function `PRG_RDB'
make: *** [main.o] Error 1
Build failed with 3 errors and 11 warnings...


В проиложении файл проекта.
Пример взят отсюда:
http://www.vga-avr.narod.ru/main_rus.html
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Laksus
сообщение Nov 15 2006, 04:41
Сообщение #2


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

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



Посмотрите в своем файле ..\WinAVR\avr\include\avr\iom16.h
определение битов регистра SFIOR.

Если iom16.h очень древний (WinAVR20040404), то увидите:
/* SFIOR */
#define ADTS2 7
#define ADTS1 6
#define ADTS0 5
#define ADHSM 4
#define ACME 3
#define PUD 2
#define PSR2 1
#define PSR10 0

А если поновее:
/*
The ADHSM bit has been removed from all documentation,
as being not needed at all since the comparator has proven
to be fast enough even without feeding it more power.
*/
#define SFIOR _SFR_IO8(0x30)
#define PSR10 0
#define PSR2 1
#define PUD 2
#define ACME 3
#define ADTS0 5
#define ADTS1 6
#define ADTS2 7

То есть, насколько я понимаю, надо просто закомментировать строку:
// SFIOR = 1<<ADHSM;// High speed conversion mode
_______________
Александр
2006 11 15
Go to the top of the page
 
+Quote Post
ShuraM
сообщение Nov 16 2006, 18:18
Сообщение #3





Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299



Спасибо, попробую. Подскажите плз. с чем связано предупреждение, компилятора.
Цитата
warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 16 2006, 20:19
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(ShuraM @ Nov 16 2006, 20:18) *
Подскажите плз. с чем связано предупреждение, компилятора.
Цитата
warning: passing arg 1 of `strcpy_P' discards qualifiers from pointer target type.


Похоже, не понравился модификатор типа volatile первого аргумента (выборка из str_array, который volatile). Неполное совпадение типов.
Или игнорировать, или, если хочется довести до полного отсутствия предупреждений, поставить явное приведение типа первого аргумента к (char *).


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
lech196
сообщение Apr 26 2007, 14:02
Сообщение #5





Группа: Новичок
Сообщений: 14
Регистрация: 6-02-07
Из: Минск
Пользователь №: 25 110



AVR Studio 4.12 build 460
WinAVR 20070122
ATmega32

В разделе объявления глобальных переменных объявлено:

Код
const char com_readsms[]   = "AT+CMGR=";


Существует следующая функция отправляющая строку по USART:

Код
void USART_sendtext(char *buff)
{
    for(;*buff;)
        {
            while(!(UCSRA & (1<<UDRE)));
            UDR = *buff++;
        }
}


Вызываю её:
Код
USART_sendtext(com_readsms);


При этом компилятор выдаёт warning:
Код
../i2c_master_gsm.c:487: warning: passing argument 1 of 'USART_sendtext' discards qualifiers from pointer target type


В принципе данная конструкция работает, однако таких варнингов набралось уже около 200, что немного напрягает. Подскажите пожалуйста как обыграть данную ситуацию? т.е. сделать всё правильно
Заранее спасибо за ответ!

Сообщение отредактировал lech196 - Apr 26 2007, 14:03
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Apr 26 2007, 14:28
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



gcc весьма придирчив к небрежному написанию, иногда пожалуй чересчур.

Выхода два
1. либо снизить warning level, что не очень хорошо.
2. либо быть педантичным и четко прописывать типы или приводить их к требуемым.
void USART_sendtext(const char *buff)
void USART_sendtext((char*)&buff) // (тут не уверен)


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
forever failure
сообщение Apr 26 2007, 14:44
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Вообще лучшее решение - чётко прописывать типы в аргументах функций.
В даном случае лучше было бы объявить
void USART_sendtext(const char *buff), т.к. функция не меняет данные, адресуемые указателем.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 19:57
Рейтинг@Mail.ru


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