| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
Энкодер + таймер
03.02.2013, 14:53
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Энкодер + таймер
Угу.
Значит 2 ошибки и очепятка.
Johnnie Walker не пошёл на пользу мыслительному процессу...
|
|
|
|
Сказали "Спасибо" omercury
|
|
|
03.02.2013, 15:16
|
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Энкодер + таймер
увожаемые форумчане, всем спосибо за помощь, с обработкой энкодера я разобрался, но появилась новая проблема:
при попытке организовать внешне прерывание вылезает ошибка
C:\generator\generator.asm(20): error: Illegal attempt to re-use 'INT5' as label
Подскажите в чем дело.
прилагаю кусак кода:
.include "C:\generator\usb1286def.inc"
.def l=r16
.def h=r17
.cseg
.org 0
;************************************************* ******************
rjmp reset
rjmp INT0 ;External Interrupt Request 0
rjmp INT1 ;External Interrupt Request 1
rjmp INT2 ;External Interrupt Request 2
rjmp INT3 ;External Interrupt Request 3
rjmp INT4 ;External Interrupt Request 4
rjmp INT5 ;External Interrupt Request 5
rjmp INT6 ;External Interrupt Request 6
rjmp INT7
.org $0022
rjmp tIMER1_COMPA
;************************************************* ******************
;îáðàáîòêà ýíêîäåðà, èçìåíåíèå ÷àñòîòû
int5:
in r20, pinb
cpi r16,0
brcs down
;up
|
|
|
|
03.02.2013, 15:35
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Энкодер + таймер
Метка INT5 используется несколько раз. Проверяйте.
Или просто переименуйте и переход и метку.
|
|
|
|
03.02.2013, 15:46
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Энкодер + таймер
Надо быть чуток проще - и использовать метки, переменные, дефайны поскромнее, чем там INPUT, PRINT, OUT, INT.
INT0, ... , INT7 - наверняка где нить как маска прерываний используется в системных файлах.
|
|
|
|
03.02.2013, 15:52
|
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Энкодер + таймер
INT0, ... , INT7 - наверняка где нить как маска прерываний используется в системных файлах.[/QUOTE]
так точно сменил метку и все ОК
|
|
|
|
03.02.2013, 16:09
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Энкодер + таймер
Вектора лучше инициализировать инициалицировать типа так
.cseg
.org 0
jmp StartProgram
.org OVF0addr
jmp Timer0_Interrupt
.org OVF2addr
jmp Timer2_Interrupt
.org OVF1addr
jmp Timer1_Interrupt
.org URXC1addr
jmp RsRx_Interrupt;
.org 0x100
StartProgram:
.....
В этом случае меньше вероятность не попасть на нужный вектор.
|
|
|
|
03.02.2013, 16:20
|
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Энкодер + таймер
подскажите как в avr studio "спровацировать" внешнее прерывание по фронту
|
|
|
|
03.02.2013, 16:47
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Энкодер + таймер
Обычно сразу описываю все векторы, чтоб непонятных глюков не было.
|
PHP код:
|
.CSEG
.org 0
rjmp begin ;Сброс
reti ;rjmp Ext_INT0 ; External Interrupt Request 0
reti ;rjmp PCI ; Pin Change Interrupt
reti ;rjmp Tim1_CompA ; Timer/Counter1 Compare Match A
reti ;rjmp Tim1_OVF ; Timer/Counter1 Overflow
reti ;rjmp Tim0_OVF ; Timer/Counter0 Overflow
reti ;rjmp EERDY ; EEPROM Ready
reti ;rjmp ACE ; Analog Comparator Event
reti ;rjmp ADC_Comp ; ADC Conversion Complete
;************************************************* ********
; INT_VECTORS_SIZE = 9 ; size in words
;************************************************* ********
|
Сообщение от Senay76
|
|
подскажите как в avr studio "спровацировать" внешнее прерывание по фронту
|
Как минимум, настроить прерывание и условия его возникновения, разрешить его и включить все прерывания, а уж его вызвать установив соответствующий флаг во время отладки.
|
|
|
|
03.02.2013, 17:10
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Энкодер + таймер
Сообщение от omercury
|
Обычно сразу описываю все векторы, чтоб непонятных глюков не было.
|
PHP код:
|
.CSEG
.org 0
rjmp begin ;Сброс
reti ;rjmp Ext_INT0 ; External Interrupt Request 0
reti ;rjmp PCI ; Pin Change Interrupt
reti ;rjmp Tim1_CompA ; Timer/Counter1 Compare Match A
reti ;rjmp Tim1_OVF ; Timer/Counter1 Overflow
reti ;rjmp Tim0_OVF ; Timer/Counter0 Overflow
reti ;rjmp EERDY ; EEPROM Ready
reti ;rjmp ACE ; Analog Comparator Event
reti ;rjmp ADC_Comp ; ADC Conversion Complete
;************************************************* ********
; INT_VECTORS_SIZE = 9 ; size in words
;************************************************* ********
|
Как минимум, настроить прерывание и условия его возникновения, разрешить его и включить все прерывания, а уж его вызвать установив соответствующий флаг во время отладки.
|
Все бы ничего, но под каждый вектор отведено по 2 слова.
А reti - односоловная инструкция, поэтому, написав 4 раз подряд reti, Вы "закроете" только 2 ветора подряд, а комменте пишите что 4
|
|
|
|
03.02.2013, 18:06
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Энкодер + таймер
Boba_spb, в AVR команда IJMP и RJMP занимает 16 бит... в младших вектор прерывания занимает 1 слово. Это было оттуда.
Последний раз редактировалось omercury; 03.02.2013 в 18:10.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Энкодер
|
Gladkih |
Производственное оборудование |
14 |
26.09.2011 21:19 |
|
Энкодер брешет
|
7Fantomas7 |
Производственное оборудование |
10 |
03.05.2011 16:18 |
|
Atmega32 и энкодер
|
Pevek80 |
Микроконтроллеры, АЦП, память и т.д |
21 |
06.03.2011 20:46 |
|
Энкодер
|
alberio |
Информация по радиокомпонентам |
18 |
05.08.2010 22:51 |
|
Энкодер ЛИР-458А
|
bobdenis |
Производственное оборудование |
5 |
03.04.2007 14:20 |
Часовой пояс GMT +4, время: 15:20.
|
|