Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.01.2012, 07:31
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Подсчёт импульсов
Необходимо отреагировать сначала на 58-ой импульс, а затем на 74-ый.
Использовать в основном блоке программы цикл состояния входного пина и таким образом осуществлять подсчёт не представляется возможным, так как контроллер всё время занят другими задачами.
В общем нужны прерывания #int_58 #int_74
Пока я придумал поставить другой контроллер, который именно этим делом и будет заниматься, а как только число равно, отправлять сигнал на RB0 основному контроллеру. Но что-то как-то это всё мне кажется не верным.
И вот я вспомнил, что есть модуль ССР, с которым никогда раньше не работал. У него есть режим сравнения. Почитав мануал ничего не понял. Смущает смысл сравнения: значение TMR сравнивается с значением в CCPR1 и генерируется прерывание.
А я думал, что он сравнивает значение в регистре CCPR1 с числом импульсов на входе ССР1.
Так как же мне решить эту задачу?
|
|
|
|
26.01.2012, 09:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: подсчёт импульсов
Если на счётный вход таймера подавать импульсы, они как раз считаются в регистре(рах) TMR.
|
|
|
|
26.01.2012, 09:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: подсчёт импульсов
Какая частота следования импульсов и чем таким занят процессор, что нельзя выделить несколько тактов для обработки? А может, стоит приостановить выполнения всего остального?
Я, например, в одном проекте (упаковочная машина, в которой протяжка работала по энкодеру) на момент протяжки отслеживал только импульсы с энкодера, а все остальное выполнялось в момент простоя протяжки. Правда протяжка занимала примерно треть всего цикла упаковки (аппаратная реализация по счетному входу с использованием модуля ССР была просто не возможна).
Последний раз редактировалось alvadep; 26.01.2012 в 11:33.
|
|
|
|
26.01.2012, 11:18
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Подсчёт импульсов
сейчас 10-200Гц, завтра возможно будет 10-200кГц
И решение я хочу иметь под любую частоту
А процессор занят другими, более важными процессами.
--------------------
Если подавать импульсы на вход TMR, то становится понятнее.
Только в мануале написано, что TMR в случае взаимодействия с ССР не должен работать в асинхронном режиме.
Я не могу понять, что это значит. Ведь сравниваемые импульсы ни с чем не синхронизированы. Значит не будет работать?
|
|
|
|
26.01.2012, 11:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Подсчёт импульсов
Еще можно обойтись без ССР. Работать по переполнению таймера.
В таймер записывать значение равное "переполнение" минус 58 и т.д.
|
|
|
|
26.01.2012, 13:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Подсчёт импульсов
Сообщение от alvadep
|
Еще можно обойтись без ССР
|
...и перезагружать таймер по 58-му импульсу?
Не, ЛУТше с ним
в TMR записать TOP-74, а в компаратор TOP-74+58...(74 и 58 можно сделать переменной и рассчитывать в процессе работы, если надо).
|
|
|
|
26.01.2012, 18:01
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Подсчёт импульсов
omercury, а что такое ТОР ?
|
|
|
|
26.01.2012, 19:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Подсчёт импульсов
Сообщение от yellow87
|
omercury, а что такое ТОР ?
|
Верхний предел счета, порог переполнения, английский язык. TOP - верх, верхний...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
26.01.2012, 20:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Подсчёт импульсов
Есть режим работы таймера - СТС (Clear Timer/сounter on Compare match).
В этом режиме переполнение счётчика таймера происходит не по его физическому переполнению (в случае с 8-ми битным ›255), а по значению одного из компараторов. Так вот это значение и будет "верхней границей" (ТОР - англ. "вершина") для таймера.
|
|
|
|
26.01.2012, 22:11
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Подсчёт импульсов
Не ясно:
1.
Цитата:
|
(ТОР - англ. "вершина") для таймера.
|
но мне ведь нужен режим счётчика, а не таймера.
2.
Цитата:
|
а по значению одного из компараторов
|
то есть компаратор - это модуль ССР ?
3.
Если ТОР=100
тогда в таймере 100-74=26
а в компараторе 100-74+58=84
разница составляет 58 импульсов, а не 74
то есть я не понял логику такой арифметики
4.
В прерывании от ССР мне снова нужно предустанавливать TMR и CCP ?
5.
И что значит в мануале "В асинхронном режиме ССР не работает" ?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:00.
|
|