[an error occurred while processing this directive]
Не судите строго - но есть дурной вопрос ....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Amid 18 февраля 2005 г. 11:51

Выкачал недавно Iar_310a, но что-то в нем не так - толи я глючу.
Привожу небольшой примерчик на С(Iar_310a) и на ASM(AvrStudio 4.07) - запуск таймера 0 и обработка его прерываний (m128). На асме все работает - в С-шном примере что-то не так - таймер 0 не запускается - TCNT0 всегда равен 0. Почему?
Да и ще почему в библиотеке Iar_310a адреса прерываний "умножены" на 2, а не те которые забиты в даташите на m128?

-------------------------
пример на С

#include
#include
#include

void main(int i)
{
TCNT0 = 0x00;
OCR0 = 0x14;
TCCR0 |= 0x01;
TIMSK = 0x03;//|= (1<<0);
_SEI();
DDRA = 0xff;
while (1);
}

#pragma vector= TIMER0_COMP_vect
__interrupt void my_interrupt_routine()
{
PORTA = 0x10;
}

#pragma vector=TIMER0_OVF_vect
__interrupt void my_interrupt()
{
PORTA = 0xff;
}

---------------------------------
пример на ASM

.include "m128def.inc"


.cseg

.org $0000
rjmp RESET ;Reset handle
.org $001E
jmp TIM0_COMP ; Timer0 Compare Handler
.org $0020
jmp TIM0_OVF ; Timer0 Overflow Handler


reset:

ldi r16,0x3f
out spl,r16
ldi r16,0x01
out sph,r16


clr r16 ;, (0< out TCNT0,r16
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

sei


ldi r16,0xff
out ddra,r16

main:
jmp main

TIM0_COMP:
ldi r16,0x10
out porta,r16
reti

TIM0_OVF:
ldi r16,0x11
out porta,r16
reti
-------------------------

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru