[an error occurred while processing this directive]
|
Выкачал недавно Iar_310a, но что-то в нем не так - толи я глючу.
Привожу небольшой примерчик на С(Iar_310a) и на ASM(AvrStudio 4.07) - запуск таймера 0 и обработка его прерываний (m128). На асме все работает - в С-шном примере что-то не так - таймер 0 не запускается - TCNT0 всегда равен 0. Почему?
Да и ще почему в библиотеке Iar_310a адреса прерываний "умножены" на 2, а не те которые забиты в даташите на m128?
-------------------------
пример на С
#include void main(int i) #pragma vector= TIMER0_COMP_vect #pragma vector=TIMER0_OVF_vect --------------------------------- .include "m128def.inc" .org $0000 ldi r16,0x3f sei main: TIM0_COMP: TIM0_OVF:
E-mail:
info@telesys.ru
#include
#include
{
TCNT0 = 0x00;
OCR0 = 0x14;
TCCR0 |= 0x01;
TIMSK = 0x03;//|= (1<<0);
_SEI();
DDRA = 0xff;
while (1);
}
__interrupt void my_interrupt_routine()
{
PORTA = 0x10;
}
__interrupt void my_interrupt()
{
PORTA = 0xff;
}
пример на ASM
.cseg
rjmp RESET ;Reset handle
.org $001E
jmp TIM0_COMP ; Timer0 Compare Handler
.org $0020
jmp TIM0_OVF ; Timer0 Overflow Handler
reset:
out spl,r16
ldi r16,0x01
out sph,r16
clr r16 ;, (0<
ldi r16,0x10
out OCR0,r16
ldi r16,(1<<0)
out TCCR0,r16
clr r16
ldi r16,0x03;(1<<0)|(1<<1)
out TIMSK,r16
ldi r16,0xff
out ddra,r16
jmp main
ldi r16,0x10
out porta,r16
reti
ldi r16,0x11
out porta,r16
reti
-------------------------
Ответы