Ну вот простая программка мигания светодиодом по прерыванию от переполнения T/C1:
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h>
#define Freq 4000000
INTERRUPT(SIG_OVERFLOW1) { TCNT1 = 0x10000 - (Freq / 1024); PORTB ^= 0x01; }
int main (void) { DDRB = 0x01; TCCR1A = 0; TCCR1B = 5; TCNT1 = 0x10000 - (Freq / 1024); TIFR = 0; TIMSK = 0x80; GIMSK = 0; sei(); while(1) ; }
Сейчас ругается так:
Compiling: LEDBlink.c avr-gcc -c -mmcu=at90s8515 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=LEDBlink.lst -std=gnu99 -Wp,-M,-MP,-MT,LEDBlink.o,-MF,.dep/LEDBlink.o.d LEDBlink.c -o LEDBlink.o LEDBlink.c:8: warning: return type defaults to `int' LEDBlink.c:8: warning: function declaration isn't a prototype LEDBlink.c: In function `INTERRUPT': LEDBlink.c:8: warning: type of "__vector_6" defaults to "int" LEDBlink.c:11: warning: control reaches end of non-void function
То есть, что-то не то в подпрограмме прерываний. Ачто??? Не могу понять!
|