Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: А справится ли?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
kolyan_olvs
Есть задача:
Надо померить частоту с разреш. способностью не хуже 0.02%
Частота в диапазоне 1кГц - 10кГц...
Справится ли МСПшка, если решать задачу в лоб (то есть захватывать период и заполнять его счетчиком)?
ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл.
jorikdima
Цитата(kolyan_olvs @ Feb 9 2007, 17:09) *
Есть задача:
Надо померить частоту с разреш. способностью не хуже 0.02%
Частота в диапазоне 1кГц - 10кГц...
Справится ли МСПшка, если решать задачу в лоб (то есть захватывать период и заполнять его счетчиком)?
ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл.

Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо?
rezident
Цитата(jorikdima @ Feb 9 2007, 19:37) *
Цитата(kolyan_olvs @ Feb 9 2007, 17:09) *

Есть задача:
Надо померить частоту с разреш. способностью не хуже 0.02%
Частота в диапазоне 1кГц - 10кГц...
Справится ли МСПшка, если решать задачу в лоб (то есть захватывать период и заполнять его счетчиком)?
ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл.

Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо?

Угу. Можно также применить другой принцип. У Хоровца и Хилла описан как "обратный отсчет". См. трехтомник П.Хоровиц, У.Хилл "Искусство схемотехники", Москва "Мир", 1993г. том3, глава 15.10.
rx3apf
Цитата(kolyan_olvs @ Feb 9 2007, 17:09) *
Есть задача:
Надо померить частоту с разреш. способностью не хуже 0.02%
Частота в диапазоне 1кГц - 10кГц...
Справится ли МСПшка, если решать задачу в лоб (то есть захватывать период и заполнять его счетчиком)?
ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл.

0.02% - это 5000 счетных импульсов за период. Для 10 kHz - никак не справится. Но вот если сделать измерительный интервал больше (вряд ли нужно иметь 10 килоизмерений в секунду ?), то легко. Захват, счет импульсов, еще один захват. Знаем время от фронта до фронта (в дискретах заполнения), знаем число входных импульсов. Это не то, что 0.02%, а и 1E-6 десять раз в секунду легко делается. Ну а как конкретно воспользоваться таймерами - это уже зависит от конкретного кристалла. Я такие вещи делал на PIC16 с дополнительной логикой, но для куда больших частот. А для 10 kHz - хватит ресурсов самого кристалла. Но пару таймеров для этого надо. Хотя, в принципе, счет входных можно и программно, по прерываниям - частоты небольшие, а MSP реагирует шустро...
kolyan_olvs
Спасибо всем за ответы..
Цитата
Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо?
- надо обновлять результат с чатотой 10 Гц.
Поразмыслив, решил, что вполне справится )))
Цитата
Но вот если сделать измерительный интервал больше
- можно заюзать делитель частоты... (конечно дополнит. схемота, зато меньше геморроя с обработкой в кристалле).
rx3apf
Цитата(kolyan_olvs @ Feb 14 2007, 14:21) *
Спасибо всем за ответы..
Цитата
Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо?
- надо обновлять результат с чатотой 10 Гц.
Поразмыслив, решил, что вполне справится )))
Цитата
Но вот если сделать измерительный интервал больше
- можно заюзать делитель частоты... (конечно дополнит. схемота, зато меньше геморроя с обработкой в кристалле).

Да тогда все примитивно - обработчик прерывания вешаем на "захват" от таймера, таймер тактируем стабильной частотой заполнения, разрядность таймера расширяем дополнительным программным счетчиком, инкрементируемым по обработке переполнения таймера. При захвате по фронту смотрим, сколько набежало со времени предыдущей фиксации времени, ненужное просто пропускаем, через 100+ mS имеем точное время в дискретах опорника и число входных импульсов. Дальше простая арифметика. MSP430 справится не только для 10 kHz, но, если писать аккуратно, то и с сотнями kHz (реакция на прерывания очень шустрая). А можно даже и без прерываний, тупым поллингом флагов. Единственный необходимый аппаартный ресурс - таймер с захватом.
rezident
Цитата(rx3apf @ Feb 14 2007, 17:02) *
Цитата(kolyan_olvs @ Feb 14 2007, 14:21) *

Спасибо всем за ответы..
Цитата
Все зависит от требуемой частоты выдачи измеряемого параметра я полагаю. Как часто выдавать надо?
- надо обновлять результат с чатотой 10 Гц.
Поразмыслив, решил, что вполне справится )))
Цитата
Но вот если сделать измерительный интервал больше
- можно заюзать делитель частоты... (конечно дополнит. схемота, зато меньше геморроя с обработкой в кристалле).

Да тогда все примитивно - обработчик прерывания вешаем на "захват" от таймера, таймер тактируем стабильной частотой заполнения, разрядность таймера расширяем дополнительным программным счетчиком, инкрементируемым по обработке переполнения таймера. При захвате по фронту смотрим, сколько набежало со времени предыдущей фиксации времени, ненужное просто пропускаем, через 100+ mS имеем точное время в дискретах опорника и число входных импульсов. Дальше простая арифметика. MSP430 справится не только для 10 kHz, но, если писать аккуратно, то и с сотнями kHz (реакция на прерывания очень шустрая). А можно даже и без прерываний, тупым поллингом флагов. Единственный необходимый аппаартный ресурс - таймер с захватом.

При таком способе (определение частоты по измеренному периоду) даже если тактировать TimerA от 10МГц (больше по даташиту нельзя), то относительная погрешность измерения периода получиться не выше одного дискретного отсчета 1/10МГц. Что для периода 1/10кГц составляет ~0.1%. А требуется 0,02%.
Цитата(kolyan_olvs @ Feb 9 2007, 19:09) *
ЗЫ: 0.02% от измер. величины ..сорри, чуть не забыл.

Так что для достижения требуемой точности измерения нужно еще математику применить. ИМХО.
rx3apf
Цитата(rezident @ Feb 14 2007, 17:59) *
При таком способе (определение частоты по измеренному периоду) даже если тактировать TimerA от 10МГц (больше по даташиту нельзя), то относительная погрешность измерения периода получиться не выше одного дискретного отсчета 1/10МГц. Что для периода 1/10кГц составляет ~0.1%. А требуется 0,02%.


Тормозишь. Я ведь не случайно сказал -"за время 100+ mS". Не по одному периоду, а за время счета (в данном случае 10 раз в секунду) набираем (в таймере) точное время в дискретах опорника, и число входных импульсов (а вовсе не по одному периоду). Таким образом, имеем разрешение 1E-6 при опорнике 10 MHz, а точность - соответствующую точности опорника. Более того, точность измерения не зависит от измеряемой частоты и не пострадает, если на входе поставить прескалер (если потребуется считать существенно большие частоты).

Цитата(rezident @ Feb 14 2007, 17:59) *
Так что для достижения требуемой точности измерения нужно еще математику применить. ИМХО.

Всенепременно - как же без математики ?

Мне другое забавно - вот сколько журналах и инете микропроцессорных частотомеров, и все тупо считают импульсы за измерительный интервал. Нужно десятые Hz - делают окно 10 sec. Очевидно же решение, нет, из конструкции в конструкцию все повторяют и повторяют... А у меня частотомер показывает сотые Hz по два раза в секунду (можно было и тысячные, только не нужно) wink.gif
rezident
rx3apf, угу. Я чуть выше уже указал где все это описано.
kolyan_olvs
Цитата
угу. Я чуть выше уже указал где все это описано

да ((. только где б нарыть сей фолиант.. в свои то не geoof.n]// а на фтп наверняка есть ((
rezident
Цитата(kolyan_olvs @ Feb 21 2007, 12:38) *
Цитата
угу. Я чуть выше уже указал где все это описано

да ((. только где б нарыть сей фолиант.. в свои то не geoof.n]// а на фтп наверняка есть ((

Ну только ради книги "Искусство схемотехники" П.Хоровиц, У.Хилл рваться на ФТП неумнО. Ее и наГуглить нетрудно. Например, см. тут
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.