roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 04:44

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Прерывания в AVR на ASM
СообщениеДобавлено: 23 июн 2008, 03:21 
Не в сети

Зарегистрирован: 16 июн 2008, 23:41
Сообщения: 3
Откуда: Питер
Всем снова здрасьте, в общем с прерываниями я примерно разобрался, но опять вопрос возник... Все вроде работает, но по таблице из даташита мое прерывание 8 по счету, но по тексту программы оно 13... что я не так сделал? как надо?

.include "m16def.inc"
.def temp=R16
.def rab=R17
.equ kdel=100

.cseg
.org 0

rjmp init
reti
reti
reti
reti
reti
reti
reti <= должно срабатывать тут
reti
reti
reti
reti
rjmp tc1
reti
reti
reti
reti
reti
reti
reti
reti

init:

ldi temp, 0x80
out ACSR, temp

ldi temp, 0xFF
out SPL, temp

ldi temp, 0xFF
out DDRB, temp

ldi temp, 0x09
out TCCR1B, temp

ldi temp, high(kdel)
out OCR1AH, temp
ldi temp, low(kdel)
out OCR1AL, temp
ldi temp, 0x10
out TIMSK, temp

main:
sei
ldi rab, 0b01000000

m1:
rjmp m1

tc1:
lsr rab
brcc q1
ldi rab, 0b01000000
q1:
out PORTB, rab
reti

Добавлено спустя 2 часа 34 минуты 57 секунд:
Хм оно даже работает... тогда с чем может быть связан данный косяк?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в AVR на ASM
СообщениеДобавлено: 23 июн 2008, 10:49 
Не в сети
Аватара пользователя

Зарегистрирован: 20 сен 2007, 11:44
Сообщения: 491
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич
Дело в том, что у меги16 вектора препываний идут не по порядку, а по четным адресам, это связано с тем, что однословной команды (rjmp) не достаточно для адресации в любую точку памяти программ
В товоем случае нужно сделать где-то так:

Код:
   rjmp reset ;$000 Reset,Ext Pin,POR,BOR,WDR
   nop
   reti      ;$002 INT0
   nop
   reti      ;$004 INT1
   nop
   reti       ;$006 Timer/Counter2 Compare Match
   nop
   reti      ;$008 Timer/Counter2 Overflow
   nop
   reti       ;$00A Timer/Counter1 Capture Event
   nop
   reti      ;$00C Timer/Counter1 Compare Match A
   nop
   rjmp tc1  ;$00E Timer/Counter1 Compare Match B
   nop
   reti       ;$010 Timer/Counter1 Overflow
   nop
   reti      ;$012 Timer/Counter0 Overflow
   nop
   reti      ;$014 Serial Transfer Complete
   nop
   reti       ;$016 USART, Rx Complete
   nop
   reti      ;$018 USART, Data Register Empty
   nop
   reti       ;$01A USART, Tx Complete
   nop   
   reti      ;$01C ADC Conversion Complete
   nop
   reti      ;$01E EEPROM Ready
   nop
   reti      ;$020 Analog Comparator
   nop
   reti      ;$022 Two-Wire Serial Interface
   nop
   reti      ;$024 INT2
   nop
   reti      ;$026 Timer/Counter0 Compare Match
   nop
   reti      ;$028 Store Program Memory Ready
   nop


или
Код:
   rjmp tc1  ;$00E Timer/Counter1 Compare Match B
   nop

поменять на jmp tc1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в AVR на ASM
СообщениеДобавлено: 23 июн 2008, 11:43 
Не в сети

Зарегистрирован: 16 июн 2008, 23:41
Сообщения: 3
Откуда: Питер
Спасибо, получилось :good:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Прерывания в AVR на ASM
СообщениеДобавлено: 20 июл 2008, 09:59 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
чтоб не целиться, имхо проще написать
Код:
.org 0x00E
rjmp tc1

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO