-
15.03.2005, 19:24 #1Low Power
- Регистрация
- 15.07.2004
- Адрес
- Харьков
- Сообщений
- 89
- Поблагодарили
- 0
- Поблагодарил
- 0
Вопросы частотомеростроения.
Доброго времени суток!
Тут такой вопрос возник: смотрю на http://kazus.ru/modules/Content/shemes/19.html, вижу что собранный на PIC16F84 частотомер измеряет частоту до 40 МГц. Далее начинаю искать конструкции на AVR, и вижу что большинство конструкций меряет частоту до 0,5 частоты тактового кварца, что вполне логично.
И вот никак мне не ясно, как первая конструкция на PIC16F84 может мерять такие высокие частоты, при частоте собственного кварца 4 МГц?!
Заранее благодарен за ответ.У кошки четыре ноги: вход, выход, земля и питание.
73! UR3LTG.
-
15.03.2005, 20:32 #2
А какая разница в данном случае какая тактовая частота у контроллера? Важно какие узлы он содержит! У этого есть весьма быстродействующий 8-ми разрядный модуль таймера. Вот он и накапливает входную частоту. А считать ее - быстродействие не нужно...
-
16.03.2005, 10:19 #3Без позывного
- Регистрация
- 09.07.2003
- Адрес
- Москва
- Возраст
- 56
- Сообщений
- 375
- Поблагодарили
- 13
- Поблагодарил
- 2
Модуль таймера там не особо быстродействующий. С большой скоростью может работать только предварительный делитель, включенный на входе собственно восьмиразрядного таймера. Причем программно этот самый предделитель недоступен и, чтобы прочитать его состояние, приходится прибегать к всевозможным хитростям. Хитрости эти описаны с десяток лет назад в одном из руководств по применению PIC-ов и все частотомеры на них растут оттуда.
Последний раз редактировалось DMJ; 16.03.2005 в 10:21.
-
16.03.2005, 11:25 #4Standart Power
- Регистрация
- 18.06.2004
- Адрес
- Запорожье
- Сообщений
- 166
- Поблагодарили
- 12
- Поблагодарил
- 0
В принципе верно. Небольшое дополнение. Для частотомера, с диапазоном до 40 МГЦ и разрядностью 10 гц ( у меня по схеме Денисова считает до 45,0 МГЦ), необходимы, как минимум три восьмиразрядных счетчика. Младший разряд - предделитель, средний - именно таймер и старший - регистр контроллера. В старший разряд после каждого цикла, записывается бит переполнения таймера, если переполнение было. Таким образом, за время измерения, в старшем разряде записано число переполнений таймера, состояние таймера читается программно, это будет средний разряд счетчика. Для чтения предделителя, на его вход подаются импульсы до тех пор, пока не появится бит его переполнения. Таким образом определяется состояние предделителя.Первоначальное сообщение от Robert
А какая разница в данном случае какая тактовая частота у контроллера? Важно какие узлы он содержит! У этого есть весьма быстродействующий 8-ми разрядный модуль таймера. Вот он и накапливает входную частоту. А считать ее - быстродействие не нужно...
Для частотомера, с точностью до 1 гц уже нужны 4 регистра счетчика, т.е. в памяти надо организовывать еще один регистр.
Для более высоких частот можно использовать внешний счетчик.
Так организован частотомер Денисова, да и многие другие. Конечно есть более продвинутые контроллеры, имеющие несколько таймеров.
-
16.03.2005, 12:29 #5Low Power
- Регистрация
- 15.07.2004
- Адрес
- Харьков
- Сообщений
- 89
- Поблагодарили
- 0
- Поблагодарил
- 0
Большое спасибо всем ответившим!
Скажите пожалуйста, возможна ли реализация частотомера на частоту этак 50 МГц на базе какого либо контроллера фирмы Atmel, без использования внешнего делителя? Или даже не стоит браться за эту тему?
Владимир_К
Владимир, я вот тут чуть не понял принципа действия:
Вот есть у нас первый регистр - он делит входную частоту на столько то.
А таймер - он каким образом отмеряет время? В смысле, он считает число "тиков", и по достижении определенного числа инкрементирует старший (третьий) регистр?
И еще, насколько я понял, тут нужен еще и "часовой" таймер, который по пошестивии времени, выделенного на счет, дернет процедуру считывания счетчиков и визуализации данных.
Или я жестоко заблуждаюсь?
-
16.03.2005, 12:58 #6Alex007Гость
Есть прескалер (инкрементирующий счетчик), он считает непосредственно входной сигнал, при его переполнении (например 256) синхронизированный тактовой частотой контроллера импульс идет на таймер (читай тот же счетчик) контроллера. При переполнении регистра таймера (8 бит) выставляется флаг прерывания (но само прерывание обычно маскируют) по которому инкрементируестя "обычный" регистр итд. Все это дело происходит за период измерения, организованный (обычно) простой подпрограммой задержки на циклах.
В более современных (чем PIC16F84) контроллерах действительно можно организовать "часовой таймер" из имеющихся свободных таймеров (у ПИК-ов это Timer1 и Timer2).
-
16.03.2005, 13:22 #7Standart Power
- Регистрация
- 18.06.2004
- Адрес
- Запорожье
- Сообщений
- 166
- Поблагодарили
- 12
- Поблагодарил
- 0
"Часовой" таймер, то есть время в течение которого контроллер считает число поступивших импульсов, жестко определен временем работы цикла программы. Для частотомера с точностью до 10 гц, это время составляет 0,1 сек. В течение этого времени программа делает много чего, выводит информацию на дисплей, преобразовывает числа из двоичной системы в другую и пр. А счетчики считают независимо. Причем, в течение этого одного большого цикла, программа много раз проверяет, нет ли переполнения таймера. Время, через которое программа должна это делать, должно быть таким, чтобы при максимальной частоте поступающих на вход импульсов, таймер успевал переполниться не более одного раза. При частоте 50 мгц, например, счетчик (с учетом предделителя 1:256), заполнится за время: 0,02 мкс х 256 х 256 = 1310 мкс. Реально время берется меньше, кажется у Денисова =1000 мкс.Первоначальное сообщение от Homich
..........я вот тут чуть не понял принципа действия:
Вот есть у нас первый регистр - он делит входную частоту на столько то.
А таймер - он каким образом отмеряет время? В смысле, он считает число "тиков", и по достижении определенного числа инкрементирует старший (третьий) регистр?
И еще, насколько я понял, тут нужен еще и "часовой" таймер, который по пошестивии времени, выделенного на счет, дернет процедуру считывания счетчиков и визуализации данных.
Или я жестоко заблуждаюсь?
То есть через каждые 1000 мксек поисходит проверка переполнения и если в регистре (кажется Status), есть бит (признак переполнения), то добавляется единица в старший регистр счетчика, т.е. в память контроллера. Сделать программу такой, чтобы она выполнялась именно за 0,1 сек и есть основная сложность. Если получается меньше, можно добавлять холостые команды (NOP). Но когда в программе есть ветвления, получается все равно довольно кропотливо.
-
05.04.2005, 19:24 #8Low Power
- Регистрация
- 15.07.2004
- Адрес
- Харьков
- Сообщений
- 89
- Поблагодарили
- 0
- Поблагодарил
- 0
Большое спасибо всем ответившим!!! Распечатал эту ветку и курю до просветления.

Только вот на горизонте появилась новая проблема:
Насколько я понял из даташита на ATMega8, счетчики у AVR-ов работают с максимальной частотой, равной половине тактовой. Так ли это? Если да, то становится понятным облилие частотомеров на PIC-ах, и практически полное отсутствие на AVR-ах. А как раз на AVR-е я хотел сделать этот проект.
((
В общем, что скажете?
Заранее благодарен за ответ.
-
05.04.2005, 23:25 #9Alex007Гость
Если почитаете доки на ПИК-и, то нигде не увидите максимальной частоты работы встроенного прескалера, а только при внимательном чтении можно заметить, что сам таймер после прескалера синхронизируется частотой Fosc/8. Но если учесть, что прескалер делит на 128 то этого хватает за глаза. Возможно (про АВР я не читал) там тоже самое.
-
08.04.2005, 18:03 #10Low Power
- Регистрация
- 15.07.2004
- Адрес
- Харьков
- Сообщений
- 89
- Поблагодарили
- 0
- Поблагодарил
- 0
К сожалению, фраза "An external clock source can not be prescaled." из даташита на ATmega8 намертво перекрыла перспективу построения частотомера на этом кристалле без внешнего делителя. Посмотрел даташиты на микрочип и расстроился.
Там есть встроенный делитель.
Короче говоря, у меня возник вопрос: есть ли смысл городить частотомер на Атмеле, или бросить эту затею и изучать Microchip? Если смысл есть, то какой внешний делитель порекомендуете использовать?
Заранее благодарен за ответ.У кошки четыре ноги: вход, выход, земля и питание.
73! UR3LTG.
-
08.04.2005, 18:31 #11Standart Power
- Регистрация
- 18.06.2004
- Адрес
- Запорожье
- Сообщений
- 166
- Поблагодарили
- 12
- Поблагодарил
- 0
Если Вам нужен только частотомер, то можно без изучения PICов собрать по имеющимся схемам. Есть опробованные неоднократно схемы. Сам я собрал несколько по схеме Денисова, с индикаторами на светодиодных индикаторах, на ЖКИ. Все работает как надо. Для этого частотомера есть также усовершенствованная прошивка (автор Корабельников Е.А.). Расширен диапазон, улучшена индикация (устранено некоторое мерцание индикаторов). Хотя для частотомера на ЖКИ его и не было.Первоначальное сообщение от Homich
Короче говоря, у меня возник вопрос: есть ли смысл городить частотомер на Атмеле, или бросить эту затею и изучать Microchip?
Заранее благодарен за ответ.
Кроме того, на РICах уже есть разработки FLC измерителей, все в одном.
Успехов!
-
08.04.2005, 19:27 #12Low Power
- Регистрация
- 15.07.2004
- Адрес
- Харьков
- Сообщений
- 89
- Поблагодарили
- 0
- Поблагодарил
- 0
Спасибо за пожелания!
Дело в том, что я замыслил частотомер как первый проект в области освоения AVR-ов. А тут такой облом...
Ну что же, буду думать в другую сторону. 
Успехов Вам и всем ответившим!!!У кошки четыре ноги: вход, выход, земля и питание.
73! UR3LTG.
-
08.04.2005, 23:11 #13Alex007Гость
Да почему же облом. Вот вариант использования внешнего делителя на НС393 для такого случая. Проверял - все ок. По такой схеме можно и для АВР. http://homepage.tinet.ie/~ei9gq/stab.html
PS. Я за изучение ПИКов. По-моему и инфы больше, отладочные есть, и проще. Круче ПИКа только PIC!!Последний раз редактировалось Alex007; 08.04.2005 в 23:14.
-
10.04.2005, 11:09 #14QRP
- Регистрация
- 07.06.2003
- Адрес
- Питер
- Сообщений
- 38
- Поблагодарили
- 1
- Поблагодарил
- 8
« Если Вам нужен только частотомер, то можно без изучения PICов собрать по имеющимся схемам. Есть опробованные неоднократно схемы. Сам я собрал несколько по схеме Денисова, с индикаторами на светодиодных индикаторах, на ЖКИ. Все работает как надо. Для этого частотомера есть также усовершенствованная прошивка (автор Корабельников Е.А.). Расширен диапазон, улучшена индикация (устранено некоторое мерцание индикаторов). Хотя для частотомера на ЖКИ его и не было. »
Я тоже неоднократно собиал этот частотомер на светодиодных индикаторах, все
ОК, но раздражает мерцание индикаторов. Может подскажете где взять новую прошивку?
-
11.04.2005, 10:33 #15Standart Power
- Регистрация
- 18.06.2004
- Адрес
- Запорожье
- Сообщений
- 166
- Поблагодарили
- 12
- Поблагодарил
- 0
Прошивка здесь: http://ikarab.narod.ru/index.htmlПервоначальное сообщение от PVK
« раздражает мерцание индикаторов. Может подскажете где взять новую прошивку?
Свой пока не перепрошивал, поэтому оценку дать не могу.
Хотя, в прошлом году пробовал демонстрационную версию. Все было нормально. Рабочая тогда была платной. Сейчас автор выложил бесплатно и рабочую.
Успехов.
|
|

URL обратной ссылки
Подробнее про обратные ссылки












Ответить с цитированием
Социальные закладки