Допомагаємо ЗСУ!

INT0

🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада

RUH

Статус: Offline
Реєстрація: 29.10.2006
Повідом.: 5578
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #1
Граждане, столкнулся с необходимостью использования внешнего прерывания INT0.
Девайс - TINY2313 + AVR Studio + для проверки дебаггер AVR DRAGON..
Так вот, программка маленькая, испытательная..
Прерывания в конце тела программы разрешаю коммандой sei, далее замкнутый цикл для ожидания прерывания. Дракон показывает наличие спада фронта на PD2(INT0), но программа не переходит в обработчик прерывания! :(
Кто подскажет, что за фигня такая?

ЗЫ PD2 управляет ИК приемник, посыл, соответственно с пульта ДУ. В обработке прерывания банально должны зажечься светодиоды на портах РВ (программка набросана просто для понимания INT0).
Может кто подскажет? Я своего добьюсь, но хотелось бы помощи "для ускорения" процесса.. :-)


.include "tn2313def.inc"
.def Const=r16
.def Const1=r17
.def Const2=r18
.def Const3=r19
.cseg
.org 0
rjmp RESET ; Reset Handler
rjmp INT0 ; External Interrupt0 Handler
rjmp INT1 ; External Interrupt1 Handler
rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIM1_COMPA ; Timer1 CompareA Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp USART0_RXC ; USART0 RX Complete Handler
rjmp USART0_DRE ; USART0,UDR Empty Handler
rjmp USART0_TXC ; USART0 TX Complete Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp PCINT ; Pin Change Interrupt
rjmp TIMER1_COMPB ; Timer1 Compare B Handler
rjmp TIMER0_COMPA ; Timer0 Compare A Handler
rjmp TIMER0_COMPB ; Timer0 Compare B Handler
rjmp USI_START ; USI Start Handler
rjmp USI_OVERFLOW ; USI Overflow Handler
rjmp EE_READY ; EEPROM Ready Handler
rjmp WDT_OVERFLOW ; Watchdog Overflow Handler


reset:
ldi const, 0b11111111
out ddrb, const
ldi const, 0b00000000
out ddrd, const
ldi const, 0b11111111
out portd, const

sei
data:
Rjmp data

INT_0:
ldi const,0b11111111
out portb, const

INT_1: ; External Interrupt1 Handler
TIM1_CAPT: ; Timer1 Capture Handler
TIM1_COMPA: ; Timer1 CompareA Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_OVF: ; Timer0 Overflow Handler
USART0_RXC: ; USART0 RX Complete Handler
USART0_DRE: ; USART0,UDR Empty Handler
USART0_TXC: ; USART0 TX Complete Handler
ANA_COMP: ; Analog Comparator Handler
PCINT: ; Pin Change Interrupt
TIMER1_COMPB: ; Timer1 Compare B Handler
TIMER0_COMPA: ; Timer0 Compare A Handler
TIMER0_COMPB: ; Timer0 Compare B Handler
USI_START: ; USI Start Handler
USI_OVERFLOW: ; USI Overflow Handler
EE_READY: ; EEPROM Ready Handler
WDT_OVERFLOW: ; Watchdog Overflow Handlerreti
reti
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #2
Не вижу установки бита INT0 в регистре GIMSK.
sei разрешает прерывания в принципе, а GIMSK маскирует внешние прерывания.

а можно подробнее. ;) Именно про установку бита.. (если можно, то образец "деяния" на том же асм-е)
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #3
в асме не писал для avr

GIMSK |= bit(INT0);

что, скорее всего, равносильно

ori 0x3B, 0b01000000

т.е. в регистре 0x3B (0x5B) установить бит 6

Спасибо, сейчас попробую! :)

C:\AVR - PRJ\IR\ir.asm(36): error: Invalid register
блин.. :(
Но уже теплее, сейчас по форумам полажу, посмотрю, может найду что-то для ASM.. Ведь теперь знаю куда копать! Спасибо в любом случае!!! ;)
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #4
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

вот, нарыл такое...

Исполнил -
ldi const1,0b01000000
out gimsk,const1
не работает... :(
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #5
Слава AVR DRAGON!!! :)) Без него я бы еще сидел над этим и сидел!
Я таки решил проблему! :)
На асме правильно так -
ldi const1,$40
out gimsk,const1
ldi const1,2
out mcucr,const1
:)
Когда прописал GIMSK и продебажил программу, то прерывание обрабатываться начало, и уходило на rjmp INT0 и потом reti.
Фича оказалась в том, что бета версия 4.18 студии не ругалась на синтаксис меток - как INT0 так и INT_0.
Поменял INT0 на INT_0 в начале программы, и все пошло нормально!
Еще раз спасибо за GIMSK ;), тему чуть позже закрою.
Если что, обращайтесь по асму, помогу чем смогу! :)
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #6
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #7
Странно, должно было ругнутся. Попробуйте 4.12 студию. Хотя проверять синтаксис тоже нужно, открыть же tn2313def.inc не сложно :) Кстати, а зачем вы поставили rjmp'ы на векторах прерываний? Я обычно вектора комментирую и ставлю nop вместо них. Или они у вас все задействованы?
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #8
Странно, должно было ругнутся. Попробуйте 4.12 студию. Хотя проверять синтаксис тоже нужно, открыть же tn2313def.inc не сложно :) Кстати, а зачем вы поставили rjmp'ы на векторах прерываний? Я обычно вектора комментирую и ставлю nop вместо них. Или они у вас все задействованы?

4.17 ругалась, помню.. А вот бета 18 не захотела, наверное потому, что она и есть бета.. :)
Насчет векторов, мне так проще ориентироваться (тут уж кому как нравиться :)).. Все равно ненужные не обрабатываются..
Из всех, я потом использовал только внешнее прерывание и компаратор, остальные reti..
Кстати, ИК протокол от NEC весьма интересная штука.. :)

Зы, прикрепляю файл классного AVR калькулятора, который я нашел на одном из форумов. Может кому-то пригодиться.. Расчет таймеров просто великолепный! Про калькулятор и листик бумаги можно забыть! ;)
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #9
Действительно неплохой калькулятор, спасибо!
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #10
А вы откройте tn2313def.inc в версии 4.17 и 4.18 и сравнив их станет понятно почему она не ругалась:-)
А калькулятор очень приличный, спасибо:-)
 
  • 🟠 12:55 Загроза ударних БпЛАЗагроза БпЛА типу «Молнія»#м_Харків_та_Харківська_територіальна_громада
  • #11
В общем все получилось.. :) Реализовал ИК протокол от NEC, и прописал к этому делу небольшой фабричный ИК пульт. Теперь осталось прикрутить 8 8-сегментных светодиодных индикаторов через 74нс595 шифт регистры, блок комутации, и новый "комфортабельный" стенд на работе будет готов! :-)
 
Назад
Зверху Знизу