роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Без описания
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Уже третий день пытаюсь запустить функцию от прерывания по сигналу на USART
Все компиляторы ругаются, в ВинАвр синтаксис один, в CodeVisionAVR Синтаксис, другой... по книге вообще бред получается! нихрена не понимаю. Может кто прояснит!?

МС - Attiny2313
Компилятор - WinAvr
Язык - C

Накидайте плиз кусочек кода в котором по прерыванию (Приём на УСАРТ) функция N вызывается.... Замешательство
 
 Top
бот_м_16 Супермодератор Post Id



Супермодератор


Сообщений всего: 1033
Дата рег-ции: Окт. 2008  



Запусти cvar в мастере кода сделай настройку потом ctrl+c ctrl+v и будет тебе счастье
ЗЫ
А ваабще иди читай курс avr123.nm.ru тебе нужно z5
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Там он использует компилятов Codevision AVR, а это мне не подходит. Куча функций не работает в других компиляторах из-за того, что библиотеки этих функций есть только в CVAVR. Это не позволяет глубоко изучать С AVR.
Например в данном примере - interrupt [USART_RXC], другой кмпилятор будет ругаться на квадратные скобки.....

Короче я так понимаю без ассемблера тут не обойтись.
 
 Top
бот_м_16 Супермодератор Post Id



Супермодератор


Сообщений всего: 1033
Дата рег-ции: Окт. 2008  



зачем асм? рёв в три ручья просто в скобки поставь номер вектора прирывания из дс
ЗЫ
А чем cvavr не угодил ?
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Странно! номер не проходит, компилятор ругается.

Компилятор думае что обьявляю функцию interrupt(vector_nr){}...

(Отредактировано автором: 26 Января, 2009 - 12:53:12)

 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



ПОМОГИИТЕ!

Как Работать с прерыванием в WINAVR!!!
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



В файле WinAVR\avr\include\avr\iotn2313.h есть:

#define SIG_INT0 _VECTOR(1) /* External Interrupt Request 0 */
#define SIG_INT1 _VECTOR(2) /* External Interrupt Request 1 */
#define SIG_TIMER1_CAPT _VECTOR(3) /* TIMER1 CAPT Timer/Counter1 Capture
Event */
#define SIG_TIMER1_COMPA _VECTOR(4) /* TIMER1 COMPA Timer/Counter1 Compare
Match A */
#define SIG_TIMER1_OVF _VECTOR(5) /* TIMER1 OVF Timer/Counter1 Overflow */
#define SIG_TIMER0_OVF _VECTOR(6) /* TIMER0 OVF Timer/Counter0 Overflow */
#define SIG_USART0_RX _VECTOR(7) /* USART0 RX USART0, Rx Complete */
#define SIG_USART0_UDRE _VECTOR(8) /* USART0 UDRE USART0 Data Register
Empty */
#define SIG_USART0_TX _VECTOR(9) /* USART0 TX USART0, Tx Complete */
#define SIG_ANALOG_COMP _VECTOR(10) /* ANALOG COMP Analog Comparator */
#define SIG_PCINT _VECTOR(11) /* Pin Change Interrupt on PORTB */
#define SIG_TIMER1_COMPB _VECTOR(12) /* Timer/Counter1 Compare Match B */
#define SIG_TIMER0_COMPA _VECTOR(13) /* Timer/Counter0 Compare Match A */
#define SIG_TIMER0_COMPB _VECTOR(14) /* Timer/Counter0 Compare Match B */
#define SIG_USI_START _VECTOR(15) /* USI Start Condition */
#define SIG_USI_OVERFLOW _VECTOR(16) /* USI Overflow */
#define SIG_EE_READY _VECTOR(17) /* EEPROM Ready */
#define SIG_WDT_OVERFLOW _VECTOR(18) /* Watchdog Timer Overflow */

Точно работают конструкци вида:
int __vector_3() //прерывание по совпадению таймера с OCR2
{
PORTD |= 1; //Установить младший бит порта D
sei(); //Глобальное разрешение прерываний
return(0);
}
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



ISR(vector)
{
;
}

ВОТ!
Функция interrupt в новой версии отсутствует!
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru