реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Какой таймер лучше для подсчета импульсов
IF_P
сообщение Mar 30 2011, 20:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Измерение аналоговых сигналов производится с использованием ПНЧ. На выходе Fmax=900 kHz.
CPU - ATmega8535, кварц 7,3728 MHz.
Два варианта.

1. Использовать 16 разр T1 для подсчета импульсов, а 8 разр. T0 для формирования "ворот".
T1 вполне хватает без перезагрузок, а вот для T0 нужно ~576 перезагрузок на цикл измермения (20 mS),
т.е. каждые ~35 uS.

2. T1 для "ворот" управится за три заправки. А вот с T0 есть проблема. Для подсчета 18 тыс. импульсов нужно 70 циклов таймера. При каждом прерывании получим:
4 цикла на запись в стэк
3 цикла на переход по адресу
3 цикла на завершение текущей команды (макс. CALL 4 цикла).

В результате 10 циклов по 135 nS = 1,35 uS. За это время может приидти 1 импульс ( а может и нет).
В итоге на цикл измерения +-70 импульсов.
Многовато получается.

При работе с 8051 таких проблем не возникало. Два 16-разр. таймера без перезагрузок справлялись и со счетом и с воротами, даже при макс. частоте 24 MHz.

Я склоняюсь к варианту 1, т.к. нет потери данных. Но не знаю как повлияет частое прерывание таймера.
Пока на плате стоит ПНЧ с 8 кан. коммутатором, 16-разр. АЦП (SPI) с 8 кан. коммутатором, связь с другим CPU по шине I2C. Но планируется двойное увеличение каналов измерения.
Выполняется измерение, фильтрация, усреднение, передача на другой CPU.
Работы, вроде, не так много для такого CPU. Интерфейсы SPI и I2C аппаратные и на их работу не должно повлиять.
Но. все же, хотелось узнать ваше мнение. Кто и как поступает в таких случаях. Возможны ли подводные камни?

Вот бы еще один 16-разр. таймер. wink.gif

Сообщение отредактировал IF_P - Mar 30 2011, 20:25
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 30 2011, 20:43
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(IF_P @ Mar 30 2011, 20:23) *
Вот бы еще один 16-разр. таймер

Ну так, используйте предделитель на 1024 для таймера0. Таймером доделите на 144, получите свои 20 мс.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Mar 30 2011, 20:52
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(IF_P @ Mar 31 2011, 00:23) *
2. T1 для "ворот" управится за три заправки. А вот с T0 есть проблема. Для подсчета 18 тыс. импульсов нужно 70 циклов таймера. При каждом прерывании получим:
4 цикла на запись в стэк
3 цикла на переход по адресу
3 цикла на завершение текущей команды (макс. CALL 4 цикла).

В результате 10 циклов по 135 nS = 1,35 uS. За это время может приидти 1 импульс ( а может и нет).
В итоге на цикл измерения +-70 импульсов.
......
все же, хотелось узнать ваше мнение. Кто и как поступает в таких случаях. Возможны ли подводные камни?

Я бы использовал T1 для формирования "ворот", причем добавил бы внешнюю логику (триггер и ключик-"И"), чтобы a) с выхода триггера завести на ICP, улучшим тем самым разрешение по частоте; cool.gif триггер + "И" управляют поступлением импульсов на вход T0, который их и считает (прерывания переполнения ~3.5 kHz это совсем немного). Открывание-закрывание "ворот" - по OC1x (а хоть бы и "вручную", все равно, обработав ICP, даже при отклонении длительности "ворот" точность результата не пострадает).

Предполагается считать строго в "воротах", после закрытия потери импульсов допустимы ?
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 30 2011, 20:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(IF_P @ Mar 31 2011, 00:23) *
Вот бы еще один 16-разр. таймер. wink.gif

Ну так и используйте проц с двумя 16-разр. таймерами laughing.gif
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 30 2011, 22:12
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(zombi @ Mar 30 2011, 22:56) *
Ну так и используйте проц с двумя 16-разр. таймерами laughing.gif

Так плата уже спаяна.

Цитата(rx3apf @ Mar 30 2011, 22:52) *
Предполагается считать строго в "воротах", после закрытия потери импульсов допустимы ?

Да, конечно, считать только в воротах. За пределами ворот идет переключение канала, холостой цикл и измерение другого канала. Плата изготовлена и добавить логику уже нельзя. А на выходе ПНЧ уже стоит триггер ТМ2 в режиме деления на 2. Оставил со старой схемы на 8051. Там проц иногда пропускал короткие (по длительности) импульсы от ПНЧ. Приходилось формировать меандр. Но тут, в дальнейшем, я планировал триггер выбросить.

А насчет использования ICP буду сейчас думать. А то я что-то не "въехал".

Цитата(=GM= @ Mar 30 2011, 22:43) *
Ну так, используйте предделитель на 1024 для таймера0. Таймером доделите на 144, получите свои 20 мс.

Да, конечно, можно. Я вначале посмотрел на р-р TCCR, что используется либо предделитель, либо внешний вход. Я рассматривал разные варианты с таймерами и упустил из виду, что счетчик импульсов и таймер ворот это разные устройства и в одном из них можно использовать предделитель.
Так и сделаю. Большое спасибо за подсказку. Опыта работы с AVR мало.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 31 2011, 12:29
Сообщение #6


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(IF_P @ Mar 30 2011, 22:12) *
Большое спасибо за подсказку. Опыта работы с AVR мало

На здоровье.

Не знаю ваших требований к точности, но если использовать метод захвата, получите погрешность 2.5 Гц за 20 мс для 900 кГц входной частоты. Посмотрите здесь, ссылки ведут на электроникс, мне просто лениво было выковыривать их оттуда.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 31 2011, 13:13
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(=GM= @ Mar 31 2011, 15:29) *
На здоровье.

Не знаю ваших требований к точности, но если использовать метод захвата, получите погрешность 2.5 Гц за 20 мс для 900 кГц входной частоты. Посмотрите здесь, ссылки ведут на электроникс, мне просто лениво было выковыривать их оттуда.

Точности никогда не бывает "много". Смотря какой ценой ее получать. Принцип простой - Делай как лучше. Оно все равно получится хуже. А уж если сразу делать кое-как, то получим maniac.gif
Вот сейчас читаю приведенные ссылки. Если есть возможность сделать лучше, будем пробовать.
Если в этом проекте не пригодится, то, возможно. в будущем.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Mar 31 2011, 13:25
Сообщение #8


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Нужна голая аврка, так что в данном случае - бесплатно, мк у вас уже есть.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
IF_P
сообщение Mar 31 2011, 13:51
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Цитата(=GM= @ Mar 31 2011, 16:25) *
Нужна голая аврка, так что в данном случае - бесплатно, мк у вас уже есть.

В этом посте первая ссылка приводит в оглавление форума!? 05.gif

"Вот тут зачатки теории (начиная с поста #23) и наглядное пособие (пост #43)."

P.S.
Кажется нашел теорию:

http://electronix.ru/forum/index.php?showt...29796&st=15

Цитата(=GM= @ Mar 31 2011, 16:25) *
так что в данном случае - бесплатно.

Время - деньги.
С одной стороны потраченое время, это приобретенные знания.
Но с другой стороны. это возможная потеря денег (заказа). У меня такое было.

Сообщение отредактировал IF_P - Mar 31 2011, 14:23
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 08:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01431 секунд с 7
ELECTRONIX ©2004-2016