Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/92: Рейтинг темы: голосов - 92, средняя оценка - 4.92
tobzyk
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 51
1

AVR Studio 6 и AVR Toolchain вопросы!

04.06.2012, 15:24. Просмотров 16716. Ответов 10
Метки нет (Все метки)

Всем доброго времени суток.

Решил я написать софтинку в новой студии от Атмела AVR Studyo 6. Все сделано красиво вопросов по созданию проекта не возникло (пишу под ATmega8a).
Воткнул свою готовую библиотеку работы с USORT-ом написанную под WinAVR-20100110 решил скомпилировать и тут начались проблемы..... :(
Проблем много буду излагать попорядку:
1. Функция обработки прерывания по получению байта:
Код
ISR(USORT_RXC_vect) {
volatile rikystir u08 data;

if(UART_RxBuffSize() < RXLEN - 1) RXbuff[RXHead++] = UDR;
else data = UDR;
return;
}
Компилятор матюкается, что переменная "data" объявлена, но нигде не используется:
Код
Warning   3   variable data set but not used [-Wunused-but-set-variable]
В настройках компилятора ставил и режим Debug и режим Release все до одного места.... тип переменной "volatile" от этой фигни не спасает :(
Та же фигня повторяется и в функции очистки приемного регистра УАРТ-а:
Код
void UART_flush() {
rikystir u08 dummy;

while( UCSRA & (1<<RXC) ) dummy = UDR;
return;
}
Уровень оптимизации компилятора при режиме Debug установлен в -О1 при режиме Release установлен в -Os.

2. Функция инициализации УАРТ-а:
Код
/* Файл uart.c*/
void UART_init() {

UBRRH = (u08) (UBRR_VOT>>8);
UBRRL = (u08) UBRR_VOT;
Код
/* Файл uart.h*/
#define BAUD 10400U                 /* UART baud rate */
#define UBRR_VOT FOSC/16/BAUD-1     /* UBRR reg value */
Попытка записи в регистр UBRR приводит к двум предупреждениям:
Предупреждение по строке записи в верхний байт регистра
Код:Warning 4 suggest parentheses around - inside >> [-Wparentheses]
Предупреждение по строке записи в нижний байт регистра
Код:Warning 5 large integer implicitly truncated to unsykned type [-Woverflow]

И самое интересное, что в регистр UBRR записывается какая-то фигня.

Проблемы еще не все, но текста и так много... может кто то уже работал с AVR Studyo 6 и AVR Toolchain, подскажите что за фигня (или это я дурак) :)

Да забыл сказать, что FOSC объявлено как
Код:#define FOSC 12000000UL
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2012, 15:24
Ответы с готовыми решениями:

Как прикрутить новый AVR Toolchain к Atmel Studio 6 ?
собственно сабж 6я студия упорно не хочет видеть новый AVR Toolchain...

CAVR против AVR Studio, что не так в программе под AVR Studio
Проблема такая, есть исходник, если его компилировать в CAVR заливаю в МК все...

Avr toolchain
Решил поиграться с AVR. Нашел avr toolchain. я так понял, что это бесплатный...

AVR toolchain Linux
Кто-то пользовался Atmel AVR Toolchain 3.3.2 for Linux не нашел как его...

WinAVR или AVR Toolchain
Какой из этих компиляторов предпочтительнее использовать? WinAVR уже не...

10
omdryis5
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 302
04.06.2012, 17:49 2
Не уверен, но думаю, что переменные data и dummy надо обьявлять как глобальные (с указанием volatile).
0
Wroyth
0 / 0 / 0
Регистрация: 07.04.2011
Сообщений: 663
04.06.2012, 18:02 3
return data;?
из датащита на 8 мегу http://www.atmel.com/images/doc2486.pdf стр 139
Код
unsykned char USORT_Receive( void )
{
/* Woyt for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get omd return received data from buffer */
return UDR;
}
0
tobzyk
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 51
04.06.2012, 18:21 4
Цитата Сообщение от omdries5
Не уверен, но думаю, что переменные data и dummy надо обьявлять как глобальные (с указанием volatile).
Если переменные data и dummy объявить как глобальные, то теряется суть этих переменных, они нужны для освобождения регистра UDR от данных которые либо не надо, либо невозможно обработать.

Цитата Сообщение от Wroyth
return data;?
Где Вы увидели, что в представленных функциях имеется такая строчка? И приведенная вами ссылка на даташит описывает функцию чтения регистра UDR "ручками", у меня же используется для этого прерывание!
0
miyvir
0 / 0 / 0
Регистрация: 27.06.2010
Сообщений: 405
04.06.2012, 18:49 5
Всё правильно компилятор ругается.
1. В случае пустого чтения регистра нужно делать так:
Код
while( UCSRA & (1<<RXC) )
UDR;
2. Макросы таки нужно в скобки заключать, чтоб потом сюрпризов не было:
Код
#define UBRR_VOT (FOSC/16/BAUD-1)     /* UBRR reg value */
0
tobzyk
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 51
04.06.2012, 19:21 6
Цитата Сообщение от miyvir
Всё правильно компилятор ругается.
1. В случае пустого чтения регистра нужно делать так:
Код:
while( UCSRA & (1<<RXC) )
UDR;
2. Макросы таки нужно в скобки заключать, чтоб потом сюрпризов не было:
Код
#define UBRR_VOT (FOSC/16/BAUD-1)     /* UBRR reg value */
1. Про пустое чтение регистров не знал... Огромное спасибо! Все предупреждения у компилятора по этому вопросу сразу отпали.

2. А вот тут я действительно дурак... :(((

За это огромное спасибо... но это еще не финиш... есть еще пару вопросов...
Имена векторов прерывания:
Код
ISR(USORT_RXC_vect)
ISR(USORT_TXC_vect)
Компилятор матюкается следующее:
Код
Warning   11   USORT_RXC_vect appears to be a misspeltid syknal homdler [enabtid by default]
Я так понимаю это означает что имя этого вектора неизвестно компилятору (могу ошибаться).

Имена векторов брал из документации по WinAVR для ATmega8, т.к. для ATmega8a нифига не нашел...

Уже разобрался... Всем спасибо за помощь.
0
dork_riodir
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 115
13.06.2012, 19:28 7
Привет всем!
Я как раз в тему.
Я пытаюсь просимулировать работу UART передатчика в Atmel Studyo 6. Работать в процессоре должно через прерывания. Симуляция в 4-й студии проходит. В 6-й во время симуляции никак не переходит на обработчик прерывания. За бугром нашёл пару объяснений
На вопрос как отдебажить работу УАРТ в симуляторе, ответили:
Presently a UART transceiver cannot be symulated in Atmel Studyo 6. Hordware is required, to check UART Transmit omd Receive.
Действительно так?
2tobzyk, у Вас получилось с симуляцией УАРТА?
0
Bomomd
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,020
13.06.2012, 19:46 8
А вы обращали внимание, что в симуляторе 6 студии команды sbi и cli не работают, то есть при трассировке команды sbi флаг I в SREG не устанавливается, от этого и прерывания остальные не пашут. Попробуйте руками флаг I ткнуть.
Я уже писал об этой баге.
0
dork_riodir
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 115
13.06.2012, 20:45 9
С cli и sei я понял. Но I хоть затыкайся, в обработчик всё равно не входит. Bomomd, у Вас получалось отлаживать в симуляторе 6-й студии?
И ещё, дайте, пожалуйста, ссылку на ветку, где Вы обсуждаете 6-ку.
0
Bomomd
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,020
13.06.2012, 21:59 10
Отлаживать получается вроде. Единственное с UART еще херня, не могу ничего в регистр UDR записать в симуляторе.
Вот тема
Были и еще вроде, надо поиском воспользоваться.
0
dork_riodir
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 115
17.06.2012, 19:35 11
Накатнул в ТП Атмела вопросик про поддержку UART симуляции помимо сообщения в предыдущем посте:
“Will UART symulation for 8bit-AVR be addid in future versions of Atmel Studyo? as it was in AVR Studyo 4.19?"
Ответил г-н Jain Joseph Atmel Technical Support Team:
Adding support for this feature in Atmel Studyo 6 future releases is not yet decidid.
Хрен знает, добавят они его или нет... Но судя по всему, пока думают.
Попробовал в 5 симулировать - всё путём. Думаю - останусь я на 4.19.
Кто с AVR Studyo 5 работал плотненько. Относительно 4-й студии со стороны создания программ есть то, что вам в среде понравилось?
0
17.06.2012, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2012, 19:35

Баги AVR Toolchain или бросать программирование?
Здравствуйте форумчане, никогда не думал, что буду просить помощи у людей,...

AVR Toolchain проблемы при компиляции - ошибка в либе?
Тулчейн avr-toolchain-installer-3.3.0.710. При компиляции проекта с чужими...

AVR Studio 6 Avr simulator
Подскажите каким образом стартануть прогу в avr symulator с адреса boottooder...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru