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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
amoralex
сообщение Sep 19 2005, 10:55
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Господа, вопрос такой:

Есть микроконтроллер Silabs 100МГц.
Есть необходимость в высокоточном задании интервалов времени, чтобы точность была 10^-8 - 10^-7, а сами интервалы времени - до 1 секунды.
Причем хотелось бы иметь возможность генерировать до 5-ти событий на этом интервале.
Прямой счет аппаратными счетчиками не годится, слишком большой интервал.

Какие варианты?
Мне приходит в голову написании программы и тупого счета пустой команды в цикле.
Или же счет PCA от переполнения Timer0, а того в свою очередь заставить работать в Auto-Reload.

А как поступают более опытные люди? huh.gif
Go to the top of the page
 
+Quote Post
Виктория
сообщение Sep 19 2005, 11:09
Сообщение #2


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Микроконтроллер, к сожалению, не знаю. Но более стандартный путь - с использованием обработки прерывания по таймеру (точность генерации фактически определяется из времени обработки реакции на прерывание микроконтроллера).
Go to the top of the page
 
+Quote Post
Vic
сообщение Sep 19 2005, 11:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-11-04
Из: Санкт-Петербург
Пользователь №: 1 192



Вне зависимости от контроллера, всегда делают на таймерах и по прерыванию считают. Т.к. пока таймер считает можно, что-нибудь другое поделать или поспать (экономя батарею) smile.gif
Go to the top of the page
 
+Quote Post
amoralex
сообщение Sep 19 2005, 11:23
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Цитата(Vic1 @ Sep 19 2005, 14:09)
Микроконтроллер, к сожалению, не знаю. Но более стандартный путь - с использованием обработки прерывания по таймеру (точность генерации фактически определяется из времени обработки реакции на прерывание микроконтроллера).
*


Считать количество переполнений и на последней итерации с дробной частью - просто запускать счетчик на Compare?
Go to the top of the page
 
+Quote Post
Виктория
сообщение Sep 19 2005, 11:36
Сообщение #5


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



amoralex
Можно и не переполнения считать, а запрограммировать таймер на нужный интервал (дискретность отсчета интервала). Конечно, если у Вас она не совпадает с 10^-7 - 10^-8.

Vic
Приветствую тезку cheers.gif
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 19 2005, 12:31
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Можно воспользоваться внешним генератором импульсов (подавая на вход прерывания) для 'заполнения' Вашего временного интервала. Это будет более прецизионное измерение, т.к. генератор можно сделать с довольно большой точностью и стабильностью.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
vvs157
сообщение Sep 19 2005, 13:20
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(BVU @ Sep 19 2005, 15:31)
Можно воспользоваться внешним генератором импульсов (подавая на вход прерывания) для 'заполнения' Вашего временного интервала. Это будет более прецизионное измерение, т.к. генератор можно сделать с довольно большой точностью и стабильностью.
*


А по другому даже 10E-7 не получится, так как стабильность генератора MK не лучше 10E-5 - 10E-6.
На 10E-8 генератор "на коленке" вряд ли получится
Go to the top of the page
 
+Quote Post
Владимир
сообщение Sep 19 2005, 13:46
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 11 653
Регистрация: 25-03-05
Из: Минск
Пользователь №: 3 671



Только что со стандорта приехал. там в осреднениях(100) для подобных интервалов достигли 50 пс. Я даже сам не ожидал.
Но реализация сложная, и специфичная по условям задания интервала времени.
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 19 2005, 13:53
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(vvs157 @ Sep 19 2005, 17:20)
Цитата(BVU @ Sep 19 2005, 15:31)
Можно воспользоваться внешним генератором импульсов (подавая на вход прерывания) для 'заполнения' Вашего временного интервала. Это будет более прецизионное измерение, т.к. генератор можно сделать с довольно большой точностью и стабильностью.
*


А по другому даже 10E-7 не получится, так как стабильность генератора MK не лучше 10E-5 - 10E-6.
На 10E-8 генератор "на коленке" вряд ли получится
*



Ну это Вы батенька бросте 'сказки' расказывать. Можно сделать кварцевый генератор со стабильностью частоты до 9-го знака. Естественно с условиями его термостабилизации и прочее. Только надо не на 'коленке' делать, а с умом.
Все зависит от обоснованности поставленной задачи.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
amoralex
сообщение Sep 20 2005, 05:35
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Цитата(BVU @ Sep 19 2005, 15:31)
Можно воспользоваться внешним генератором импульсов (подавая на вход прерывания) для 'заполнения' Вашего временного интервала. Это будет более прецизионное измерение, т.к. генератор можно сделать с довольно большой точностью и стабильностью.
*


А чем это будет отличаться от того, что в качестве тактового для микропроцессора я буду использовать внешний высокостабильный?

Так или иначе заполнив мой интервал точными импульсами, я не смогу прямым счетом вывернуться, разрядности не хватит.
Я так себе представляю, что надо временной интервал делить на целую часть (количество переполнений\перезагрузок счетчика) и дробную (по окончании которой генерируется искомый импульс).

И еще вопрос, а какие компании производят высокточные генераторы?
Go to the top of the page
 
+Quote Post
BVU
сообщение Sep 20 2005, 06:09
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(amoralex @ Sep 20 2005, 09:35)
А чем это будет отличаться от того, что в качестве тактового для микропроцессора я буду использовать внешний высокостабильный?
*

А на генераторном узле своего контроллера и не пытайтесь сделать подобный генератор (не добьетесть стабильности...).

Цитата(amoralex @ Sep 20 2005, 09:35)
Так или иначе заполнив мой интервал точными импульсами, я не смогу прямым счетом вывернуться, разрядности не хватит.
*

Регистровая разрядность тут не причем, необходимо в теле прерывания завести счетчик, как переменную типа long double и подсчитывать количество импульсов (длительностью -10^7...-10^8), которые войдут в измеряемый интервал. При тактовой частоте процессора в 100MHz все должно успеваться + другие задачи (конечно при условии выполнения 1 команды процессором за 1-2 такта).


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Alex11
сообщение Sep 20 2005, 06:24
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Мне кажется, что лучше не заморачиваться с контроллером, а поставить FPGA приличную (как вариант - самый маленький Cyclone от Альтеры) и сделать в нем сколько надо счетчиков на 100 МГц - там нодо-то меньше 32 разрядов на каждый. Для удобства управления можно и контроллер сбоку прилепить, а можно и напрямую через RS-232 управлять, там места еще хватит.
Go to the top of the page
 
+Quote Post
amoralex
сообщение Sep 20 2005, 06:53
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Цитата(BVU @ Sep 20 2005, 09:09)
Регистровая разрядность тут не причем, необходимо в теле прерывания завести счетчик, как переменную типа long double и подсчитывать количество импульсов (длительностью -10^7...-10^8), которые войдут в измеряемый интервал.  При тактовой частоте процессора в 100MHz все должно успеваться + другие задачи (конечно при условии выполнения 1 команды процессором за 1-2 такта).


Спасибо. Все вроде бы ясно.
Только вот еще хорошо до 5 событий генерировать во время интервала...
Такими же импульсами как и самый последний по окончанию интервала.
Надо подумать cool.gif
Go to the top of the page
 
+Quote Post
amoralex
сообщение Sep 20 2005, 07:08
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Цитата(Alex11 @ Sep 20 2005, 09:24)
Мне кажется, что лучше не заморачиваться с контроллером, а поставить FPGA приличную (как вариант - самый маленький Cyclone от Альтеры)  и сделать в нем сколько надо счетчиков на 100 МГц - там нодо-то меньше 32 разрядов на каждый. Для удобства управления можно и контроллер сбоку прилепить, а можно и напрямую через RS-232 управлять, там места еще хватит.
*


Спасибо. Это вариант.
Заодно посмотрел - маленькие циклончики стоят приемлимо.
Но у меня интервал времени расчетный, по-любому микропроцессор нужен. Так зачем городить еще микросхему,если есть возможность обойтись всего одной!
Go to the top of the page
 
+Quote Post
mse
сообщение Sep 20 2005, 07:19
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Блин. Да никаких проблем. Если есть ОГ с требуемой стабильностью. Как прально сказали, нужно считать кол-во переполнений таймера, а на последнем этапе работать по СОМ. Ессно, ни в чём себя ограничивать не надо, может выполняться что угодно и МК жыть своёй жызьнью. Для параноиков можно запретить работу на "дробном" этапе. У 51 есть нога разрешения работы таймера, от неё и пляшем. По СОМ аппаратно выставляем другой ногой результат. Фсё.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 06:20
Рейтинг@Mail.ru


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