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

 
 
> atmega88pa в AVRstudio 6, Ошибка
max_mart
сообщение May 2 2012, 16:58
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Всем привет.
Народ, подскажите, пожалуйста, что за ошибка все время вылазит, когда подключаю внешнюю библиотеку? И как с ней бороться?


Error 7 multiple definition of `SPI_Write_Reg' G:\JETTER_project\radio_module\hope_rf\transmitter\transmitter\transmitter\Debug/.././RFM70_init.c 108 1 transmitter

Error 8 multiple definition of `SPI_Read_Reg' G:\JETTER_project\radio_module\hope_rf\transmitter\transmitter\transmitter\Debug/.././RFM70_init.c 125 1 transmitter

и так далее!!!
Просто кошмар каой-то!!! maniac.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение May 2 2012, 17:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



А вы библиотеку как подключаете?
Код
#include "RFM70_init.c"

Не так случайно?

Сообщение отредактировал IgorKossak - May 3 2012, 07:07
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
max_mart
сообщение May 2 2012, 17:34
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



да

Сообщение отредактировал IgorKossak - May 3 2012, 07:07
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 2 2012, 17:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(max_mart @ May 2 2012, 20:34) *
да

И что вы тогда хотите?
Всё верно говорит компилятор.
Нужно так:
Код
#include "RFM70_init.h"
Go to the top of the page
 
+Quote Post
max_mart
сообщение May 2 2012, 18:50
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



А почему так, интересно???!!! Ведь в 4 версии можно было так делать и в кодвизионе тоже!!!??? wacko.gif

Сделал. Все заработало. Спасибо Но все равно вопрос написанный выше актуален!!! Почуму????

И раз уж мы про авр студио 6, то подскажите пожалуйста как мне дать ему понять, что я исп. 8000000 МГ, Поскольку применяю задержки?

ВСЕ Решил проблему, как Вы и сказали!!! biggrin.gif

Но вопрос написанный выше все равно актуален!!!

И раз уж мы в АВР студио 6, то как мне задать частоту,например 8000000 Гц, компилятору для работу со своими задержками и поменять ,например метод компилирования(пл размеру, по скорости)?

Сообщение отредактировал IgorKossak - May 3 2012, 07:08
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 2 2012, 19:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(max_mart @ May 2 2012, 21:50) *
Ведь в 4 версии можно было так делать и в кодвизионе тоже!!!??? wacko.gif

И здесь тоже можно так делать.
Но не нужно и вредно.

Цитата(max_mart @ May 2 2012, 21:50) *
И раз уж мы про авр студио 6, то подскажите пожалуйста как мне дать ему понять, что я исп. 8000000 МГ, Поскольку применяю задержки?

Возможны варианты:
Используется makefile:
Код
CFLAGS    += -DFREQUENCY=8000000

Могу ошибаться, но как-то так.
Используется свойства проекта (меню Project\Properties).
Тогда выбрать Toolchain\AVR GNU C compiler\Symbols
добавить что-то вроде
Код
FREQUENCY=8000000

Использовать глобальную константу можно так:
Код
uint32_t freq=FREQUENCY;


Цитата(max_mart @ May 2 2012, 21:50) *
поменять ,например метод компилирования(пл размеру, по скорости)?

Тип оптимизации можно выбрать там же Toolchain\AVR GNU C compiler\Optimization


Цитата(max_mart @ May 2 2012, 21:50) *
А почему так, интересно???!!! Ведь в 4 версии можно было так делать и в кодвизионе тоже!!!??? wacko.gif

Попробую объяснить.
пусть есть файл file.c в нём определена функция Myfunc:
Код
void Myfunc(void)
{
// ....
}

#include "file.c" - это, по простому говоря, просто вставка текста.
К примеру, в проекте два файла src1.с и src2.c, оба содержат #include "file.c".
в итоге получается что функция Myfunc определена в двух файлах. Это есть ошибка: непонятно какую из них линковать. Как-то так.

Чтобы ошибки не было создаётся файл file.h:
Код
#ifndef FILE1_H_
#define FILE1_H_

void Myfunc(void);

#endif /* FILE1_H_*/


и в src1.с и src2.c добавляется #include "file.h".
Либо можно просто перед использованием Myfunc написать в src1.с и src2.c:
Код
void Myfunc(void);

Go to the top of the page
 
+Quote Post



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

 


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


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