Уважаемые ЗНАЮЩИЕ подскажите плиз что за хрень: Работаю в связке WinAVR-20070525 и AVR studio version 4.13 build 528. Написал программку :
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> unsigned char i; unsigned char mas[100];
interrupt(SIG_INPUT_CAPTURE1) { TCNT1H=0x00; TCNT1L=0x00; mas[i+1]=ICR1L; mas[i]=ICR1H; mas[i+2]=((TCCR1B>>6)&1); i=i+3; TCCR1B^=0x40; } INTERRUPT(SIG_OVERFLOW1) { if ((i<100) && (i!=0)) { mas[i]=0xFF; mas[i+1]=0xFF; i=i+2; } }
void main (void) { DDRD=0x00; PORTD=0x00; TCCR1A=0x00; TIMSK=0b00100100; TCCR1B=0b01000001; sei(); while(1){ }; }
Компилируется вроде все ОК. При загрузке ее в AVRStudio выполнение начинается с строки находящейся выше на одну чем void main (void) , а в цикл while(1); вообще не входит – это первое. Второе – если INTERRUPT написать в двух функциях заглавными буквами возникает ошибка при компиляции. Мои предположения – глючные WinAVR или AVRStudio, но не факт. Что ВЫ посоветуете мне по этому поводу.
|