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

 
 
> версия 3.10. Не работаю прерывания USART в ATmega168pa?
a9d
сообщение Jan 21 2012, 17:42
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Заметил интересный феномен в версии 3.10 на микроконтроллере ATmega168pa.

Код
OS_INTERRUPT void USART_RXC_vect()
{
    OS::TISRW_SS ISRW;
        .....
}


Это прерывание не срабатывает. Тоже самое и с TX.

Заменил на ISR и заработало. Но это походу некорректно.

В 4.0 это еще не проверял.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
a9d
сообщение Jan 21 2012, 19:58
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Код
ISR(USART_RX_vect)
{
  OS::TISRW_SS ISRW;
  ....
}


Это если без обверток ОС.

В четвертой версии тоже не работает.

Пля. Лоханулся.

Нужно использовать USART_RX_vect и USART_TX_vect вектора а не USART_RXC_vect и USART_TXC_vect.


Сообщение отредактировал a9d - Jan 21 2012, 19:26
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 21 2012, 20:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(a9d @ Jan 21 2012, 21:58) *
Пля. Лоханулся.

Нужно использовать USART_RX_vect и USART_TX_vect вектора а не USART_RXC_vect и USART_TXC_vect.


Ясно. Опять Атмел с именами учудил.

И что оно при использовании USART_RXC_vect и USART_TXC_vect компилировалось как ни в чём не бывало? Где тогда IAR нашёл их определение и что подставил?

Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 22 2012, 12:33
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(_Артём_ @ Jan 21 2012, 22:33) *
И что оно при использовании USART_RXC_vect и USART_TXC_vect компилировалось как ни в чём не бывало? Где тогда IAR нашёл их определение и что подставил?
Как уже сказали, avr-gcc. И он обижается на неправильное имя, но ворчит, а не скандал поднимает:
Код
include <avr/interrupt.h>

ISR(FOO_vect) { }

Код
$ avr-gcc -Os -mmcu=atmega8 -S isr.c
isr.c:3: warning: ‘FOO_vect’ appears to be a misspelled signal handler

Но кто же его предупреждения смотрит.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 22 2012, 14:45
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ReAl @ Jan 22 2012, 14:33) *
И он обижается на неправильное имя, но ворчит, а не скандал поднимает:
isr.c:3: warning: ‘FOO_vect’ appears to be a misspelled signal handler[/code]
Но кто же его предупреждения смотрит.

C GCC не работал, вот и удивляюсь.
IAR в таком случае ошибку выдаёт:
Код
Error[Pe020]: identifier "TCE3_OVF_vect" is undefined
Go to the top of the page
 
+Quote Post



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

 


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


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