Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LIN протокол
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
Irmantukas
Добрый вечер.
Нужна помощ перебрасывая код из 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 . Спасибо.
Irmantukas
Как и думал, такой помощи не будет. Может быть кто небудь поможет эти куски кода перенести в студию?

Код
#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)
{
}

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

соответсвующий файлик iomXXX.h вам в помощь.
Irmantukas
Думаю что то не так.
Код
#ifdef ATMEGA88_USED
#pragma vector=USART_RX_vect
#endif

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


Ребята не смотрите на это дело через плечо. Можно сказать в форумах совсем нет инфо про этот протокол. Хоть здесь пусть будет одна тема, где можно помощь найти. Не верю, что здесь нету ни одного, который работает с этим протоколом. Хоть в личку напишите, если здесь нехочется делиться информацией...
Сергей Борщ
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)
{
.....
}
Irmantukas
Спасибо Сергей.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.