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

 
 
> три частоты на АТмегу 128 с использованием таймеров, оределить изменения каждой частоты
sKWO
сообщение Apr 5 2007, 23:21
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



суть дела такова
можно ли с хорошей точностью определить частоты поданные на таймера
АТмеги 128??
изменнения -+ 40 ГЦ (в этих пределах)
частоты 50 КГц, 90 КГц, 170 КГц.
У АТмеги 128 три таймера - один 16-ти разрядный(1). и два 8-ми разрядных.
Как правильно написать прогу на Си???
Нужно ли мне работать по флагам или подсчитывать количества переполнений таймеров
и если да то какое количество переполнений удовлетворит точности определе ления для каждой из частот
+- 2герца?
Нужно ли ставить предделители для восьмиразрядных таймеров на два или на :n?
Тактовая частота контроллера 22.1184 МГц!
Значения думаю передавать по УАРТУ!!

Цитата(sKWO @ Apr 5 2007, 22:44) *
bodja74 у Вас возникли какае нибудь идеи?
а у Резидента?


Сообщение отредактировал sKWO - Apr 5 2007, 23:02


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Apr 7 2007, 01:40
Сообщение #2


Ambidexter
*****

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



Цитата(sKWO @ Apr 5 2007, 20:21) *
изменения -+ 40 ГЦ (в этих пределах) частоты 50 КГц, 90 КГц, 170 КГц.
У АТмеги 128 три таймера - один 16-ти разрядный(1). и два 8-ми разрядных.

Начнём с того, что у атмеги128 четыре таймера. Два - 16-разрядных и два - 8-разрядных. Первые к тому же имеют input capture unit
Цитата(sKWO @ Apr 5 2007, 20:21) *
Нужно ли мне работать по флагам или подсчитывать количества переполнений таймеров
и если да то какое количество переполнений удовлетворит точности определения для каждой из частот +- 2герца?

Ставьте две частоты на два input capture unit, третью (50 кГц) - на прерывание. За одну секунду без всяких ухищрений получите ±1 Гц для всех частот.
Цитата(sKWO @ Apr 5 2007, 20:21) *
Значения думаю передавать по УАРТУ!!

Да хоть по FireWire(:-)!!!


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 7 2007, 05:35
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Apr 7 2007, 00:40) *
Начнём с того, что у атмеги128 четыре таймера. Два - 16-разрядных и два - 8-разрядных. Первые к тому же имеют input capture unit

m168, см comment #2

Во первых. Господа, Capture Unit для таких частот не пригодится. Capture Unit решает обратную задачу - измерение временных интервалов и чем меньше частота тем лучше. На частоте же 170Khz это будет всего ~100 тактов на период, точность будет мягко сказать хреновая при значительных затратах процессорного времени.

А теперь к самой задаче:
таймер T0 использовать в режиме External Clock source с прескейлером 1.
таймер T2 - в asyncronous режиме (тоже External clock) с прескейлером 1.
T1 16-ти разрядный оставить для отмерки секундных интервалов (и возможно каких-то других нужд)
к входу T0 подрубить сигнал 90khz
к входу T2 - 170khz
По прерыванию OVF увеличивать (на 256) значения 32-х разрядных счетчиков.
50khz мерять с помощью Int0 - в обработчике прерывания инкрементировать счетчик.

По прерыванию OC T1 (каждую секунду), прибавлять к счетчикам текущее значение таймеров T0, T2, сбрасывать таймеры T0, T2 и выводить рез-тат.

Точность будет +-1 Hz за секунду для всех 3х частот, плюс останется куча процессорного времени. Тобиш и частоту тактирования можно брать раза в два меньше.

PS: Кварц 22.1184 - фтопку, оверклок - неправильная затея.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 7 2007, 21:54
Сообщение #4


Ambidexter
*****

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



Цитата(defunct @ Apr 7 2007, 02:35) *
Цитата
(=GM= @ Apr 7 2007, 00:40)
Начнём с того, что у атмеги128 четыре таймера. Два - 16-разрядных и два - 8-разрядных. Первые к тому же имеют input capture unit

m168, см comment #2

Что за comment #2? На заголовок темы посмотрите.
Цитата(defunct @ Apr 7 2007, 02:35) *
Во первых. Господа, Capture Unit для таких частот не пригодится. Capture Unit решает обратную задачу - измерение временных интервалов и чем меньше частота тем лучше. На частоте же 170Khz это будет всего ~100 тактов на период, точность будет мягко сказать хреновая при значительных затратах процессорного времени.

Ну тут я полностью с вами не согласен. Именно Capture Unit поможет добиться непревзойдённой точности. Кто нам мешает измерить 170000 периодов в секунду с помощью Capture Unit? Вгрубе так, запустили прерывание Capture Unit, оно сработало, в прерывании записали захваченное время т1 и выключили прерывания Capture Unit. Выждали примерно (!) секунду, включили прерывания Capture Unit опять, сработало, в прерывании записали время т2 и выключили прерывания Capture Unit. Зная количество периодов входной частоты, (т2-т1) и тактовую частоту, вычисляем частоту входного сигнала, точность измерения примерно ±0,02 Гц. Сравните с вашими ±1 Гц. Другим способом на данном железе вы такой точности не добьётесь.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 8 2007, 07:18
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Apr 7 2007, 20:54) *
m168, см comment #2
Что за comment #2? На заголовок темы посмотрите.

Понятно, тобиш вам до лампочки поправка условия задачи автором темы в comment'e #2.
И 22.1184 для m128 совсем не смущает?
Как всегда решаете какую-то свою мега задачу? ;> 20MSPS на AVR c Fosc 20Mhz.


Цитата
Ну тут я полностью с вами не согласен. Именно Capture Unit поможет добиться непревзойдённой точности. Кто нам мешает измерить 170000 периодов в секунду с помощью Capture Unit? Вгрубе так, запустили прерывание Capture Unit, оно сработало, в прерывании записали захваченное время т1 и выключили прерывания Capture Unit. Выждали примерно (!) секунду, включили прерывания Capture Unit опять, сработало, в прерывании записали время т2 и выключили прерывания Capture Unit. Зная количество периодов входной частоты, (т2-т1) и тактовую частоту, вычисляем частоту входного сигнала, точность измерения примерно ±0,02 Гц. Сравните с вашими ±1 Гц. Другим способом на данном железе вы такой точности не добьётесь.

Вы упускаете тот факт, что прерывания будут идти с шагом в 100 тактов лишь только от одного источника, источников 3, ваша система на трех источниках просто захлебнется, а еще ведь надо и UART как-то обслуживать, и вероятно выполнять еще какие-то задачи. Зачем гонка за точностью 0.02Гц, там где по условию задачи достаточно +-2Гц.
Или вы предлагаете все на ассемблере отточить в 300 байт кода. Дык зачем тогда m128 и даже m168 ставить?

resident
Вы говорили где-то, что с AVR'ами работали мало, поэтому я допускаю что, вы не в курсе того, что AVR будет просто пропускать прерывания, которые не будет успевать обработать. И даже мат обработка не поможет устранить эту ошибку, точность будет весьма скверная.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 8 2007, 18:15
Сообщение #6


Ambidexter
*****

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



Цитата(defunct @ Apr 8 2007, 04:18) *
Понятно, то бишь вам до лампочки поправка условия задачи автором темы в comment'e #2. И 22.1184 для m128 совсем не смущает?
Положим, пост #2 - это пост не автора, а rezident'a. Кто частоту применяет, тот пусть и смущается, сам я стараюсь не выходить за пределы технических спецификаций на прибор.
Цитата(defunct @ Apr 8 2007, 04:18) *
Как всегда решаете какую-то свою мега задачу? ;> 20MSPS на AVR c Fosc 20Mhz.
Подумываю(:-). Мне интересно выжать из прибора максимум возможного.
Цитата(defunct @ Apr 8 2007, 04:18) *
Вы упускаете тот факт, что прерывания будут идти с шагом в 100 тактов лишь только от одного источника, источников 3, ваша система на трех источниках просто захлебнется, а еще ведь надо и UART как-то обслуживать, и вероятно выполнять еще какие-то задачи.
А вы упускаете тот весьма значительный факт, что прерываний всего ШЕСТЬ, три в начале измерения, и три в конце измерения, и между ними промежуток в ОДНУ секунду. Ну и кто там захлебнётся, и чем? Да к тому же измерения частот независимы и их можно обрабатывать последовательно, т.е. ОДНО прерывание одномоментно. Что касается количества прерываний, там еще должны быть прерывания от таймеров - обработка переполнения, тоже не вижу никаких проблем.
Цитата(defunct @ Apr 8 2007, 04:18) *
Зачем гонка за точностью 0.02Гц, там где по условию задачи достаточно +-2Гц.
Никакой гонки, просто использование Capture Unit, который вы отметаете за ненадобностью, автоматически даст эту самую точность.
Цитата(defunct @ Apr 8 2007, 04:18) *
Или вы предлагаете все на ассемблере отточить в 300 байт кода. Дык зачем тогда m128 и даже m168 ставить?
Ну почему, данную задачу можно легко реализовать на си, и даже под какой-нибудь осью, всё зависит от постановки задачи. А на ассемблере всё уместится в 150 байт кода, особо не напрягаясь. Один час работы.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 9 2007, 01:49
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Положим, пост #2 - это пост не автора, а rezident'a. Кто частоту применяет, тот пусть и смущается, сам я стараюсь не выходить за пределы технических спецификаций на прибор.

Нет, это не пост резидента. Это пост автора ветки, где автор вероятно случайно не там поставил закрывающий таг цитаты.
Резидент такое не писал. Для того чтобы в этом убедиться, достаточно прочитать (предшествующие коменту #2) коменты 0 и 1. Ну да ладно, не мне вас учить внимательности.

Цитата(=GM= @ Apr 8 2007, 17:15) *
А вы упускаете тот весьма значительный факт, что прерываний всего ШЕСТЬ, три в начале измерения, и три в конце измерения, и между ними промежуток в ОДНУ секунду. Ну и кто там захлебнётся, и чем?

?!
Что это вы собрались так мерять? smile.gif
Однако, хорош метод для генерации случайных чисел! biggrin.gif

Цитата
Ну почему, данную задачу можно легко реализовать на си, и даже под какой-нибудь осью, всё зависит от постановки задачи. А на ассемблере всё уместится в 150 байт кода, особо не напрягаясь. Один час работы.

Ок, в таком случае программа для измерения частоты ОДНОГО входного сигнала 170khz с точностью не хуже 2Гц займет для вас около 20-ти минут (сопоставимо с временем написания одного комента в форуме). Если Вы умеете не только трепаться языком, то с любопытством жду от вас пример программы для измерения частоты ОДНОГО входного сигнала 170khz с точностью не хуже 2Гц с использованием Capture Unit. И когда будет готов пример программы, мы сможем обсудить его преимущества и недостатки. Thanks.

Цитата(=GM= @ Apr 9 2007, 00:19) *
То что я привёл, это максимальная погрешность однократного измерения (с 1 с интервалом измерения и без учета погрешности опорной частоты 16 МГц). Реальная погрешность, вгрубе, будет ниже.

То что вы привели в простонародье называтся "трепом".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sKWO   три частоты на АТмегу 128 с использованием таймеров   Apr 5 2007, 23:21
- - rezident   Во-первых, вы не указали за какой период времени х...   Apr 5 2007, 23:36
|- - sKWO   Цитата(rezident @ Apr 5 2007, 23:36) НЕТ....   Apr 6 2007, 00:01
- - Kuzmi4   2 частоты мерять в принципе реально - а вот 3 - ??...   Apr 6 2007, 09:52
|- - rezident   Цитата(defunct @ Apr 7 2007, 08:35) Во пе...   Apr 8 2007, 03:00
|- - sKWO   Цитата(defunct @ Apr 7 2007, 05:35) m168,...   Apr 16 2007, 20:33
|- - defunct   Цитата(sKWO @ Apr 16 2007, 19:28) Как для...   Apr 16 2007, 20:39
- - bodja74   2=GM= Думаю что вариант с внешним тактом таймеров...   Apr 8 2007, 20:15
|- - =GM=   Цитата(bodja74 @ Apr 8 2007, 17:15) 2=GM=...   Apr 8 2007, 23:35
- - rezident   bodja74, видимо имеет в виду метод "временнЫх...   Apr 9 2007, 00:16
|- - =GM=   Цитата(rezident @ Apr 8 2007, 21:16) bodj...   Apr 9 2007, 01:19
|- - rezident   Цитата(=GM= @ Apr 9 2007, 04:19) Ну, так ...   Apr 9 2007, 02:23
|- - defunct   Цитата(rezident @ Apr 9 2007, 01:23) Изви...   Apr 9 2007, 07:28
- - rezident   defunct, я же указал не один раз, что плохо знаю а...   Apr 9 2007, 12:12
- - bodja74   Теперь я вставлю свои пять копеек. Надеюсь будет ...   Apr 9 2007, 13:12
- - rezident   Цитата(bodja74)Теперь дальше ,а если сигнал не ров...   Apr 9 2007, 14:17
- - bodja74   2resident А с чего Вы взяли что при частоте 16999...   Apr 9 2007, 15:50
- - rezident   Билин, ну да, в спешке я лажанулся Это статистиче...   Apr 9 2007, 17:01
|- - =GM=   Ну вот, стоило ненадолго ответвиться, столько всег...   Apr 9 2007, 20:37
|- - defunct   Цитата(=GM= @ Apr 9 2007, 19:37) 8) После...   Apr 9 2007, 21:00
|- - =GM=   Цитата(defunct @ Apr 9 2007, 18:00) Обяза...   Apr 9 2007, 22:02
- - rezident   Цитата(=GM=)Выберем период измерения Тизм примерно...   Apr 9 2007, 21:50
|- - =GM=   Цитата(rezident @ Apr 9 2007, 18:50) Непо...   Apr 9 2007, 22:36
|- - rezident   Если честно, то я нихрена не понял Если можно, т...   Apr 9 2007, 22:53
- - rezident   Насколько я понял, второй случай это тот же метод ...   Apr 9 2007, 22:27
|- - =GM=   Цитата(rezident @ Apr 9 2007, 19:27) Наск...   Apr 9 2007, 23:02
|- - defunct   Цитата(=GM= @ Apr 9 2007, 22:02) Входная ...   Apr 10 2007, 16:11
|- - =GM=   Цитата(defunct @ Apr 10 2007, 12:11) 1. Ч...   Apr 10 2007, 19:54
|- - defunct   Цитата(=GM= @ Apr 10 2007, 18:54) Читайте...   Apr 10 2007, 22:02
|- - =GM=   Цитата(defunct @ Apr 10 2007, 18:02) К ме...   Apr 11 2007, 00:56
|- - defunct   Цитата(=GM= @ Apr 10 2007, 23:56) То есть...   Apr 11 2007, 01:22
|- - =GM=   Цитата(defunct @ Apr 10 2007, 22:22) Если...   Apr 11 2007, 02:03
- - rezident   Так, хорошо хоть работу схемы захвата я понимаю ве...   Apr 10 2007, 03:41
|- - =GM=   Цитата(rezident @ Apr 10 2007, 00:41) ОК,...   Apr 10 2007, 10:37
- - add   хелп! запутался в конец! Ув.=GM=, поясните...   Apr 10 2007, 09:41
- - add   ЦитатаВгрубе так, запустили прерывание Capture Uni...   Apr 10 2007, 11:48
|- - =GM=   Цитата(add @ Apr 10 2007, 07:48) Как я по...   Apr 10 2007, 12:42
|- - sKWO   Цитата(=GM= @ Apr 10 2007, 12:42) Картинк...   Apr 16 2007, 21:32
|- - =GM=   То sKWO Не знаю, есть ли АВРки с тактом 100 Мгц, ...   Apr 17 2007, 00:57
- - add   ЦитатаСкажу ещё раз, для ясности. Сигнал измеряемо...   Apr 10 2007, 12:58
|- - =GM=   Цитата(add @ Apr 10 2007, 08:58) Этого не...   Apr 10 2007, 13:33
- - rezident   Цитата(=GM=)Как-то не так вы вычисляете. Для часто...   Apr 10 2007, 13:55
|- - =GM=   Цитата(rezident @ Apr 10 2007, 09:55) Еще...   Apr 10 2007, 14:51
- - add   Цитата2. Откуда здесь возьмется точность в +-0.02 ...   Apr 10 2007, 16:31
|- - bodja74   Цитата(add @ Apr 10 2007, 16:31) Разве не...   Apr 10 2007, 19:27
- - rezident   Цитата(=GM=)То есть ничего не делаем, таймер1 подс...   Apr 10 2007, 18:10
|- - =GM=   Цитата(rezident @ Apr 10 2007, 14:10) Нет...   Apr 10 2007, 19:08
- - add   Цитата(bodja74 @ Apr 10 2007, 20:27) не 1...   Apr 11 2007, 09:00
- - =AVR=   Для усугубления - тем же методом, что расписал ува...   Apr 15 2007, 02:45
|- - =GM=   Цитата(=AVR= @ Apr 14 2007, 23:45) Для ус...   Apr 16 2007, 01:42
- - Snaky   Натолкнулся сегодня на эту ветку и вспомнилось, чт...   Apr 16 2007, 07:41
|- - Dog Pawlowa   Справедливости ради стоит отметить, что диапазон и...   Apr 16 2007, 08:20
|- - =GM=   Цитата(Dog Pawlowa @ Apr 16 2007, 04:20) ...   Apr 16 2007, 13:35
|- - defunct   Цитата(=GM= @ Apr 16 2007, 12:35) Какие т...   Apr 16 2007, 14:45
|- - Dog Pawlowa   Цитата(=GM= @ Apr 16 2007, 13:35) Что кас...   Apr 16 2007, 17:15
|- - =GM=   Цитата(Dog Pawlowa @ Apr 16 2007, 13:15) ...   Apr 16 2007, 19:14
- - Rst7   Я, господа, честно говоря не понимаю смысла ломани...   Apr 16 2007, 08:36
|- - mse   Цитата(Rst7 @ Apr 16 2007, 09:36) Я, госп...   Apr 16 2007, 10:24
- - Яrik   То =GM= Очень заинтересовал ваш метод измерения ч...   Aug 19 2007, 18:04
|- - singlskv   Цитата(Яrik @ Aug 19 2007, 22:04) То =GM=...   Aug 19 2007, 18:58
|- - =GM=   Цитата(Яrik @ Aug 19 2007, 18:04) То =GM=...   Aug 19 2007, 20:05
- - Яrik   Спасибо. Всь сыр бор вот в чем, как Вы могли уже з...   Aug 19 2007, 20:24
- - Яrik   ТО GM Для работы частотомера по Вашому методу конт...   Aug 21 2007, 17:56
|- - =GM=   Цитата(Яrik @ Aug 21 2007, 17:56) То GM Д...   Aug 21 2007, 23:40
- - rezident   Умножение на 256 и 65536 имеет смысл заменить сдви...   Aug 21 2007, 23:55
|- - =GM=   Цитата(rezident @ Aug 21 2007, 23:55) Умн...   Aug 22 2007, 00:18
- - Яrik   ТО GM БОООООльшое спасибо. , за ответ. Буду пробыв...   Aug 22 2007, 15:23
|- - =GM=   Цитата(Яrik @ Aug 22 2007, 14:23) ТО GM Б...   Aug 22 2007, 15:43
- - Яrik   ЦитатаcurrenTime-oldTime)<OneSec Это переменные...   Aug 22 2007, 16:52
|- - =GM=   Цитата(Яrik @ Aug 22 2007, 15:52) Это пер...   Aug 23 2007, 08:48
- - Яrik   Цитата(=GM= @ Aug 22 2007, 18:43) На здор...   Aug 23 2007, 15:18
|- - =GM=   Цитата(Яrik @ Aug 23 2007, 14:18) По данн...   Aug 23 2007, 16:27
- - Яrik   Тоесть программа работает правильно, это симулятор...   Aug 23 2007, 16:43
|- - =GM=   Цитата(Яrik @ Aug 23 2007, 16:43) То есть...   Aug 23 2007, 21:56
- - Tomade   Знатоки, подскажите, пожалуйста, как реализовать ч...   Jul 21 2008, 07:04
|- - =GM=   Не только можно, но и нужно. Как сделать - почитай...   Jul 21 2008, 11:24
|- - defunct   Цитата(=GM= @ Jul 21 2008, 14:24) На этом...   Jul 21 2008, 12:59
|- - =GM=   Цитата(defunct @ Jul 21 2008, 11:59) Толь...   Jul 21 2008, 13:31
|- - defunct   Цитата(=GM= @ Jul 21 2008, 16:31) А в кач...   Jul 21 2008, 14:36
|- - =GM=   defunct:Прибор с абсолютной точностью при бесконеч...   Jul 21 2008, 14:56
|- - defunct   Цитата(=GM= @ Jul 21 2008, 17:56) Проще н...   Jul 21 2008, 15:42
|- - =GM=   defunct: Все те же ±0.5Гц на секундном интервале. ...   Jul 21 2008, 16:31
|- - defunct   Цитата(=GM= @ Jul 21 2008, 19:31) defunct...   Jul 21 2008, 18:40
|- - =GM=   Цитата(defunct @ Jul 21 2008, 17:40) допу...   Jul 21 2008, 20:16
|- - defunct   Цитата(=GM= @ Jul 21 2008, 23:16) Ошибает...   Jul 21 2008, 20:56
|- - =GM=   Цитата(defunct @ Jul 21 2008, 19:56) скор...   Jul 21 2008, 21:25
|- - defunct   Цитата(=GM= @ Jul 22 2008, 00:25) Это где...   Jul 22 2008, 00:03
|- - =GM=   Цитата(defunct @ Jul 21 2008, 23:03) Опят...   Jul 22 2008, 09:22
|- - defunct   Цитата(=GM= @ Jul 22 2008, 12:22) Ну, бли...   Jul 22 2008, 10:47
- - Peeoner   Вот я наваял тут вобщем прогу по вашему методу,ост...   Jul 21 2008, 19:43
|- - Tomade   Цитата(Peeoner @ Jul 21 2008, 23:43) Вот ...   Jul 22 2008, 04:04
- - Tomade   Попробовал написать программу по методу GM, за осн...   Jul 22 2008, 09:49
3 страниц V   1 2 3 >


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 00:30
Рейтинг@Mail.ru


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