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

Местный
  
Группа: Участник
Сообщений: 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
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
 |
Ответов
|
Apr 10 2007, 11:48
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Цитата Вгрубе так, запустили прерывание Capture Unit, оно сработало, в прерывании записали захваченное время т1 и выключили прерывания Capture Unit. Выждали примерно (!) секунду, включили прерывания Capture Unit опять, сработало, в прерывании записали время т2 и выключили прерывания Capture Unit. Зная количество периодов входной частоты, (т2-т1) и тактовую частоту, вычисляем частоту входного сигнала, точность измерения примерно ±0,02 Гц. Сравните с вашими ±1 Гц. Другим способом на данном железе вы такой точности не добьётесь. Как я понял измерения проходят так:
Как тут можно определить частоту?
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Apr 10 2007, 12:42
|

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

|
Цитата(add @ Apr 10 2007, 07:48)  Как я понял измерения проходят так:
Как тут можно определить частоту? Картинки хорошие, но неполные. Внизу под меандром надо нарисовать много-много импульсов опорной частоты, это будет наше время, заполнение, как угодно назовите. Вот вы написали "Оно сработало" в конце периода Т1 (ваши обозначения на рис.1). Что это означает? Это означает, что содержимое таймера1 от "мелкого" опорного меандра (который вы не нарисовали) переписалось в регистр ICR1, его надо запомнить, а прерывание запретить (в принципе, можно не запрещать, просто не обращать внимания, если время и вычислительная обстановка позволяет, важно, что нужно только первое, которое даёт время начала вашего окна). Отмечу, что таймер1 продолжает работать, отсчитывает длительность окна. В начале времени Т2 на вашем рисунке надо разрешить прерывание опять, всё так, дождаться когда оно сработает (конец периода Т2 на вашем рисунке), и запомнить время, сохранённое в ICR1. Затем нужно вычислить разность этих времен. Что нам даст эта разность? Эта разность N нам даст время (в тиках таймера1) между первым фронтом входной частоты и последним фронтом. Причём это время будет не приблизительным, а ТОЧНЫМ, с точностью ±1 такт. В то же самое время, таймер0 подсчитает количество импульсов входной частоты М. Теперь вы имеете на руках М, N и Fo и по формуле можете посчитать Fx. Скажу ещё раз, для ясности. Сигнал измеряемой частоты надо подать на вход ICP1 и вход timer0/counter0, который работает как счётчик, в то же время timer1 работает как таймер, считает импульсы опорной частоты.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Apr 16 2007, 21:32
|

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

|
Цитата(=GM= @ Apr 10 2007, 12:42)  Картинки хорошие, но неполные. Внизу под меандром надо нарисовать много-много импульсов опорной частоты, это будет наше время, заполнение, как угодно назовите.
Вот вы написали "Оно сработало" в конце периода Т1 (ваши обозначения на рис.1). Что это означает? Это означает, что содержимое таймера1 от "мелкого" опорного меандра (который вы не нарисовали) переписалось в регистр ICR1, его надо запомнить, а прерывание запретить (в принципе, можно не запрещать, просто не обращать внимания, если время и вычислительная обстановка позволяет, важно, что нужно только первое, которое даёт время начала вашего окна).
Отмечу, что таймер1 продолжает работать, отсчитывает длительность окна. В начале времени Т2 на вашем рисунке надо разрешить прерывание опять, всё так, дождаться когда оно сработает (конец периода Т2 на вашем рисунке), и запомнить время, сохранённое в ICR1.
Затем нужно вычислить разность этих времен. Что нам даст эта разность? Эта разность N нам даст время (в тиках таймера1) между первым фронтом входной частоты и последним фронтом. Причём это время будет не приблизительным, а ТОЧНЫМ, с точностью ±1 такт. В то же самое время, таймер0 подсчитает количество импульсов входной частоты М. Теперь вы имеете на руках М, N и Fo и по формуле можете посчитать Fx.
Скажу ещё раз, для ясности. Сигнал измеряемой частоты надо подать на вход ICP1 и вход timer0/counter0, который работает как счётчик, в то же время timer1 работает как таймер, считает импульсы опорной частоты. Спасиб за классное обяснение, учитывая частоты Ваш метод меня устроил и для моего случая он отимален. И ещё, мне кажется что Вы немножко спешите Всех критиковать за невнимательность а сами тоже невнимательны. Я извинился за неправильную постановку вопроса в названии контроллера, defunct , правильно это заметил! это мой ответ резиденту в самом начале!! m168, см comment #2 Что за comment #2? На заголовок темы посмотрите. Да и приятно провести время в отпуске!!! Цитата(defunct @ Apr 16 2007, 20:39)  это ограничение действует на всю синхронную периферию. Но для асинхронного таймера поидее не важна частота процессора, собсно я и хочу испытать его возможности. Вприцыпе, идея интересна потому только что я не знаю как работать с асинхронным таймером и его возможностями. С внешним счётчиком видел где-то схему частотомера на 2313том до 40МГц. Желаю удачи! Цитата(defunct @ Apr 16 2007, 20:39)  это ограничение действует на всю синхронную периферию. Но для асинхронного таймера поидее не важна частота процессора, собсно я и хочу испытать его возможности. Взял описсание злостной АТмеги 168 таймер 2 и выделил два момента: - The CPU main clock frequency must be more than four times the Oscillator
During asynchronous operation, the synchronization of the Interrupt Flags for the asynchronous timer takes 3 processor cycles plus one timer cycle. The timer is therefore advanced by at least one before the processor can read the timer value causing the setting of the Interrupt Flag. The Output Compare pin is changed on the timer clock and is not synchronized to the processor clock. Вашу идею не совсем понимаю.
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
Сообщений в этой теме
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 =GM= Цитата(sKWO @ Apr 5 2007, 20:21) изменени... Apr 7 2007, 01:40 defunct Цитата(=GM= @ Apr 7 2007, 00:40) Начнём с... Apr 7 2007, 05:35  =GM= Цитата(defunct @ Apr 7 2007, 02:35) Цитат... Apr 7 2007, 21:54   defunct Цитата(=GM= @ Apr 7 2007, 20:54) m168, см... Apr 8 2007, 07:18    =GM= Цитата(defunct @ Apr 8 2007, 04:18) Понят... Apr 8 2007, 18:15     defunct ЦитатаПоложим, пост #2 - это пост не автора, а rez... Apr 9 2007, 01:49  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   =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 страниц
1 2 3 >
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|