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

 
 
> 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
Ответов
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
Tigrik
сообщение Feb 2 2007, 15:31
Сообщение #3


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

Группа: Свой
Сообщений: 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



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

 


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


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