| AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
Энкодер + таймер
02.02.2013, 23:36
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: энкодер + таймер
Senay76, Вы не обозначили МК. Для меги, например, есть команды ADIW и SBIW, которые прибавляют/вычитают константу к/из регистровой пары.
О! Пока писал, уже обозначили. Команды инкремента и декремента не влияют на флаг переполнения. Или проверяйте флаг Z, или делайте арифметические операции (сложение с константой, вычитание константы), которые влияют на флаг переполнения.
Последний раз редактировалось alvadep; 02.02.2013 в 23:44.
|
|
|
|
02.02.2013, 23:45
|
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: энкодер + таймер
Сообщение от swat24
|
в таком случае так как alvadep сказал. Я просто не очень помню эти регистры, давно уже с ассемблером не работал.
Senay76,
Хорошо, Вы считывали значение регистров в регистры А,В и там сравнивали и прибавляли 1 к младшему, и после переполнения не устанавливался бит?
|
не совсем так , я завел переменную состоящую из регистров А и Б, прибавлял к младшему регистру 1 и флаг не устанавливался
|
|
|
|
02.02.2013, 23:49
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Энкодер + таймер
alvadep, ну значит тут я не советчик, этого я не знал. Вопрос к Вам, а какие команды влияют на флаг переполнения?
Senay76 значит как alvadep написал сделайте.
Последний раз редактировалось swat24; 02.02.2013 в 23:52.
|
|
|
|
02.02.2013, 23:50
|
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: энкодер + таймер
[QUOTE=alvadep;594001]Senay76, Вы не обозначили МК. Для меги, например, есть команды ADIW и SBIW, которые прибавляют/вычитают константу к/из регистровой пары.
надо проверить есть ли у моего мк такие операции
Команды инкремента и декремента не влияют на флаг переполнения.
не знал, попробую сделать как вы сказали
|
|
|
|
02.02.2013, 23:59
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Энкодер + таймер
Сообщение от swat24
|
|
Вопрос к Вам, а какие команды влияют на флаг переполнения?
|
Все остальные арифметические команды влияют на флаг переполнения.
|
|
|
|
03.02.2013, 00:01
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,440
Сказал спасибо: 375
Сказали Спасибо 1,052 раз(а) в 621 сообщении(ях)
|
Re: Энкодер + таймер
Пробуйте как написано тут.
__________________
Мелочи не решают главного. Они решают всё!
|
|
|
|
03.02.2013, 01:59
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Энкодер + таймер
|
PHP код:
|
;************************************************* ****
PWMup: ;Точка входа на увеличения
in r16,OCR1AH
inc r16 ;Инкремент и проверка переполнения младшего байта
brne skip2
in r17,OCR1AL
inc r17 ;То же для старшего байта
brne skip1 ;Если переполнения счётчика нет, уходим на выполнение изменения
;Если произошло переполнение счётчика
dec r17 ;Здесь возвращаем максимальное значение компаратора
dec r16 ;чтоб не было зацикливания регулировки
rjmp skip1 ;Переход на выполнение
;************************************************* ********
PWMdown: ;Точка входа на уменьшение
in r16,OCR1AH
dec r16
cpi r17,255 ;Проверка переполнения младшего байта
brne skip2
in r17,OCR1AL
dec r17
cpi r17,255 ;То же для старшего байта
brne skip1 ;Если переполнения счётчика нет, уходим на выполнение изменения
;Если произошло переполнение счётчика
clr r17 ;Здесь возвращаем минимальное значение компаратора
clr r16 ;чтоб не было зацикливания регулировки
skip1: ;Собственно запись счётчика в компаратор таймера 0
out OCR1AH,r17
skip2:
out OCR1AL,r16
ret
;************************************************* ***
|
|
|
|
|
03.02.2013, 12:08
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Энкодер + таймер
Еще раз убеждаюсь, что утро вечера мудреней.
omercury, поправьте в PWMdown кое-что.
|
|
|
|
03.02.2013, 12:54
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Энкодер + таймер
Сообщение от alvadep
|
Еще раз убеждаюсь, что утро вечера мудреней.
omercury, поправьте в PWMdown кое-что.
|
Почему только в PWMdown?
В PWMup то же самое.
[PHP]PWMup: ;Точка входа на увеличения
in r16, OCR1AL
inc r16 ;Инкремент и проверка переполнения младшего байта
brne skip2
in r17, OCR1AH
...........
PWMdown: ;Точка входа на уменьшение
in r16, OCR1AL
dec r16
cpi r16,255 ;Проверка переполнения младшего байта
brne skip2
in r17, OCR1AH[/PHP]
Последний раз редактировалось omercury; 03.02.2013 в 14:52.
|
|
|
|
03.02.2013, 13:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,042
Сказал спасибо: 589
Сказали Спасибо 3,967 раз(а) в 1,825 сообщении(ях)
|
Re: Энкодер + таймер
Я имел в виду то, что в PWMdown Вы декрементируете R16, а проверку делаете по R17.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 10:08.
|
|