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

 
 
> AVR Studio + WinAVR, совсем глупый вопрос :)
Tigrik
сообщение Feb 2 2007, 01:09
Сообщение #1


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

Группа: Свой
Сообщений: 77
Регистрация: 18-07-05
Из: Питер
Пользователь №: 6 885



Добрый день.
Решил тут, было, сопрягнуть две этих программулины и поморгать светодиодом...

Нашел два почти идентичных примера в сети. Поставил проги, сделал проект в студии, прописал в его свойствах путь до папки с WinAVR'овскими хидерами...

Примеры (привожу только различия, все остальное одинаковое):

1-й:

void main(void)
{
/* enable PD5 as output */
sbi(DDRD,PD5);
while (1) {
/* led on, pin=0 */
cbi(PORTD,PD5);
delay_ms(500);
/* set output to 5V, LED off */
sbi(PORTD,PD5);
delay_ms(500);
}
}

2-й:

void main(void)
{
DDRD |= _BV(PD5); // Установить линию 5 порта D в "1" т.е. на вывод
while(1) { // Бесконечный цикл
PORTD &= ~_BV(PD5); // Сбросить бит PD5 в "0" = 0V, светодиод включен
delay_ms(500); // Ждем 0.5 сек.
PORTD |= _BV(PD5); // Установить бит PD5 в "1" = 5V, светодиод выключен
delay_ms(500); // Ждем 0.5 сек.
}
}


Теперь самое интересное. 2-й и компиляется и билдится и даже моргает в Протеусе. 1-й компиляется, но на билде отваливается с ошибками типа '../test.c:31: undefined reference to 'sbi' '

Т.е. понятно, что он не понимает что такое 'sbi' и 'cbi'... А побороть-та как? smile.gif
Что-то подсказывает, что нужно добавить что-то типа

#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

Но в 1-м примере про это нифига не сказано... более того, в исходнике этого нету, что наводит на мысль, что они сумели как-то обойтись без дефайнов... Так как? smile.gif

Попутно, при попытке отдебажить работающий код в студии та вылетает :// Девайс выставлен AVR Simulator + камень AT90S4433. Что-то не так делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
beer_warrior
сообщение Feb 2 2007, 01:31
Сообщение #2


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

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



Подключить хидер:
#include <avr/io.h>
в нем ссылки на специфические хидеры для каждого кристалла.
В макефайле надо указать:
MCU = atmegaххх

PS Насчет дебага - указать в мэйке формат coff (подробнее надо посмотреть в MFile)


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
aesok
сообщение Feb 2 2007, 01:40
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



'sbi' и 'cbi' - макросы удалены из avr-libc. (если быть совсем точным то сейчас они определены в файле <compat/deprecated.h>). Не используйте эти макросы.

delay_ms(500); // Ждем 0.5 сек. - здесь скорее всего ошибка, читайте внимательнее описание этой функции. Я про это писал в этом форуме около месяца назад, не буду повторятся.

Анатолий.
Go to the top of the page
 
+Quote Post
Tigrik
сообщение Feb 2 2007, 15:31
Сообщение #4


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

Группа: Свой
Сообщений: 77
Регистрация: 18-07-05
Из: Питер
Пользователь №: 6 885



Цитата(beer_warrior @ Feb 2 2007, 01:31) *
Подключить хидер:
#include <avr/io.h>
в нем ссылки на специфические хидеры для каждого кристалла.


Дык подключен в самом начале. Похоже действительно их оттудова убрали.

Цитата(beer_warrior @ Feb 2 2007, 01:31) *
В макефайле надо указать:
MCU = atmegaххх
PS Насчет дебага - указать в мэйке формат coff (подробнее надо посмотреть в MFile)


Я руками в make не копался. Решил положиться на студию в этом вопросе smile.gif Где выбирается кристалл - выбрал, где выбивается coff/не-coff - не нашел smile.gif

Ладно, покапаюсь еще на досуге smile.gif
Спасибо!
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Feb 2 2007, 16:00
Сообщение #5


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

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



Цитата
Похоже действительно их оттудова убрали.

Похоже провтыкал. Сам до сих пор пользуюсь 20050214.
Так что учитывая скорость смены версий надо учитывать под какую сделан код.
В MFile есть пункт меню - Debug Format
"ELF/stabs (GDB/Insight)"
"AVR-COFF (AVR Studio 3.x, VMLAB < 3.10)"
"AVR-ext-COFF (AVR Studio 4.07+, VMLAB 3.10+)"
ELF/DWARF-2 (AVR Studio ELF, GDB [experimental])


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:46
Рейтинг@Mail.ru


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