AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
02.02.2013, 19:17
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Энкодер + таймер
Здравствуйте, подскажите как с помощью энкодера менять регистры сравнения таймера Т1. мк
|
|
|
|
02.02.2013, 19:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2012
Сообщений: 3,015
Сказал спасибо: 7
Сказали Спасибо 3,494 раз(а) в 1,783 сообщении(ях)
|
Re: энкодер + таймер
|
|
|
|
02.02.2013, 21:05
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: энкодер + таймер
эт я понимаю, у меня проблема несколько в другом: энкодер я обрабатываю по внешнему прерыванию, регистр сравнения таймера 16 ти разрядный. Соответственно нужно создать 16 ти разрядную переменную и в прерывании ее инкрементировать или декрементировать.
Либо второй вариант: содать сетку частот в виде массива и прерывании менять адрес, но тогда как записывать значения массива в регистры.
|
|
|
|
02.02.2013, 22:34
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: энкодер + таймер
Senay76, как я понял, Вам надо энкодером увеличивать и уменьшать значение регистра сравнения для таймера.
Если да, то зачем еще переменную делать? Сразу регистр и изменяйте.
|
|
|
|
02.02.2013, 22:41
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: энкодер + таймер
Вы правильно поняли, но проблема в том что регистр сравнения состоит из двух 8ми разрядных регистров. Если вам не сложно может подскажете как это сделать на asemblere.
|
|
|
|
02.02.2013, 22:44
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: энкодер + таймер
Я не очень помню ассемблер. Но я бы сделал так: при прерывании инкрементировать младший регистр, при установке флага переполнения инкрементировать старший регистр.
А какой у Вас контроллер?
Последний раз редактировалось swat24; 02.02.2013 в 22:52.
|
|
|
|
02.02.2013, 23:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: энкодер + таймер
Регистр сравнения - это регистр ввода/вывода (РВВ). Чтобы его модифицировать нужно сначала его считать в регистры общего назначения (РОН), модифицировать эти РОН, а потом только записать обратно в РВВ.
Или второй вариант держать переменную (2 байта), ее изменять и просто копировать в регистр сравнения.
|
|
|
|
02.02.2013, 23:29
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: энкодер + таймер
Сообщение от alvadep
|
Регистр сравнения - это регистр ввода/вывода (РВВ). Чтобы его модифицировать нужно сначала его считать в регистры общего назначения (РОН), модифицировать эти РОН, а потом только записать обратно в РВВ.
Или второй вариант держать переменную (2 байта), ее изменять и просто копировать в регистр сравнения.
|
я тах и хотел сделать но как изменять двухбайтовую переменную, может есть какие-нибудь специальные операции или команды
|
|
|
|
02.02.2013, 23:35
|
|
Частый гость
Регистрация: 19.10.2010
Сообщений: 35
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: энкодер + таймер
Сообщение от swat24
|
Я не очень помню ассемблер. Но я бы сделал так: при прерывании инкрементировать младший регистр, при установке флага переполнения инкрементировать старший регистр.
А какой у Вас контроллер?
|
контролер уменя at90usb1286
хороший вариант , но почему-то при переполнении младшего регистра флаг не устанавливается.
Может быть проблема с avr studio ибо я два дня пытался запустиь таймер и разрешить прерывания и все бестолку, после переустановил софт итаймер запустился за 5 минут +10 мин на прерывания
|
|
|
|
02.02.2013, 23:35
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: энкодер + таймер
в таком случае так как alvadep сказал. Я просто не очень помню эти регистры, давно уже с ассемблером не работал.
Senay76,
Хорошо, Вы считывали значение регистров в регистры А,В и там сравнивали и прибавляли 1 к младшему, и после переполнения не устанавливался бит?
Последний раз редактировалось swat24; 02.02.2013 в 23:38.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 02:37.
|
|