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

 
 
> LIN протокол, Перемещение кода IAR -> WINAVR (AVR Студия)
Irmantukas
сообщение Jan 7 2011, 17:45
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 18-03-09
Из: Шяуляй, Литва
Пользователь №: 46 234



Добрый вечер.
Нужна помощ перебрасывая код из IAR в AVRStudio аппнота AVR322: LIN v1.3 Protocol Implementation on Atmel AVR Microcontrollers.
Хочу попробовать этот протокол, но не нашел что то по проще. Так вот сам пробовал перенести код, но студия все ругается smile3046.gif . Насколько понимаю как то не так переношу код с прагмой в файле lin_drv_usart.c?
Можно в студие прерывания таймеров держать в отдельных файлах (в IAR'е timer1ovf_isr.c и timer2ovf_isr.c)?
Сколько смотрел в pdf'е можно обойтись с двумя таймерами в slave режиме или что то не так понял? Мне один таймер нужен измерять интервалы между прерываниями. В меге88 их три.
Тоже если не трудно посмотрите может быть есть ненужные файлы для слейва? Что связано с мастером - я выбросил.
Для начало как и все laughing.gif . Спасибо.

Прикрепленные файлы
Прикрепленный файл  avr322.rar ( 279.15 килобайт ) Кол-во скачиваний: 15
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Irmantukas
сообщение Jan 9 2011, 05:17
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 18-03-09
Из: Шяуляй, Литва
Пользователь №: 46 234



Как и думал, такой помощи не будет. Может быть кто небудь поможет эти куски кода перенести в студию?

Код
#ifdef USE_UART2
#pragma vector=USART0_RX_vect
__interrupt void _lin_it_uart_rx_not_used (void){
;
}
#pragma vector=USART1_RX_vect
#endif


Код
#ifdef ATMEGA88_USED
#pragma vector=USART_RX_vect
#endif


Это прерывание
Код
__interrupt void _lin_it_uart_rx (void)
{
}

правильно переписал?
Код
ISR(_lin_it_uart_rx)
{
}

Go to the top of the page
 
+Quote Post
Bass
сообщение Jan 9 2011, 07:43
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 66
Регистрация: 5-08-10
Из: Томск
Пользователь №: 58 761



скорее
Код
ISR( USART_RXC_vect )

соответсвующий файлик iomXXX.h вам в помощь.
Go to the top of the page
 
+Quote Post
Irmantukas
сообщение Jan 10 2011, 05:26
Сообщение #4





Группа: Новичок
Сообщений: 6
Регистрация: 18-03-09
Из: Шяуляй, Литва
Пользователь №: 46 234



Думаю что то не так.
Код
#ifdef ATMEGA88_USED
#pragma vector=USART_RX_vect
#endif

Получитьса
Код
#ifdef ATMEGA88_USED
ISR(USART_RX)
#endif


Ребята не смотрите на это дело через плечо. Можно сказать в форумах совсем нет инфо про этот протокол. Хоть здесь пусть будет одна тема, где можно помощь найти. Не верю, что здесь нету ни одного, который работает с этим протоколом. Хоть в личку напишите, если здесь нехочется делиться информацией...

Сообщение отредактировал Irmantukas - Jan 10 2011, 05:27
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 10 2011, 06:18
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Irmantukas @ Jan 10 2011, 10:26) *
Ребята не смотрите на это дело через плечо. Можно сказать в форумах совсем нет инфо про этот протокол.
При чем здесь протокол? Вопрос портирования с протоколом не связан никоим образом.
ISR(USART_RX) - неправильно. Посмотрите в документации avr-libc (WinAVR\doc\avr-libc\avr-libc-user-manual\interrupr_8h.html) описание макроса ISR. Сомневаюсь, что кто-то из участников форума захочет перевести его для вас. Вы должны передать этому макросу имя вектора. Об этом вам написал Bass. В WinAVR нельзя использовать произвольное имя для обработчика прерывания - имя генерируется автоматически из названия вектора. Поэтому "в лоб" перенести эти конструкции не получится. Можно сделать что-то вроде такого:
CODE
#ifdef ATMEGA88_USED
#define LIN_RX_VECTOR USART_RX_vect
#endif

...

ISR(LIN_RX_VECTOR)
{
.....
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Irmantukas
сообщение Jan 10 2011, 16:15
Сообщение #6





Группа: Новичок
Сообщений: 6
Регистрация: 18-03-09
Из: Шяуляй, Литва
Пользователь №: 46 234



Спасибо Сергей.
Go to the top of the page
 
+Quote Post

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

 


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


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