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

 
 
> Какой таймер лучше для подсчета импульсов
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
 
Start new topic
Ответов
zombi
сообщение Mar 30 2011, 20:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #3


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

Группа: Участник
Сообщений: 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
Сообщение #4


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
Сообщение #5


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

Группа: Участник
Сообщений: 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



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

 


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


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