Страница 1 из 2
Частотомер на МЕГА8
Добавлено: Сб июн 28, 2008 22:43:18
Gray64
Живу в селе.Сами понимаете с радиодеталями...А тут чисто случайно в руки попала недоделанная плата какого-то устройства,на которой стоит ATMEGA8,двухстрочный ЖК индикатор и куча светодиодов.Подал 5 вольт,на ЖК выводится куча цифр,но как-то по очереди.У меня вопрос к профи:нельзя ли на базе этих"запчастей" сотворить частотомер?Пусть не очень крутой,до 1 мега устроило бы.Поиск в сети ничего не дал(именно с этими деталями).
Добавлено: Вс июн 29, 2008 18:20:15
Barni
На Мега8 с кварцем 18 МГц можно до 6 МГц измерять. Схемы в инете попадались, но где, уже не помню.
Добавлено: Сб июл 05, 2008 01:30:08
kamikadze
Сейчас как раз занимаюсь этим, только вход осталось сделать и прошивку дописать (что-то как-то затихло все у меня с нехваткой времени).
Тут были мои потуги получить вход

Присоединяйтесь
Добавлено: Вс июл 06, 2008 11:07:21
UkrRadist
Заинтересовала меня тоже эта схема,более того уже достал микросхему-делитель с делением на 64 и 256 с максимальной частотой деления до 1 ГГц - SAB6456.Уже даже схемку нарисовал и развел(схему делал по приведенной ниже).Но вот как только надумал ее собрать, в голову пришла одна мысль о том,что если попробовать измерить сигнал,скажем,с частотой 1000МГц, то длительность импульса на выходе получиться около 1нс.Меня интересует сможет ли счетчик T0(T1) микроконтроллера воспринять эти импульсы,и вообще,какая минимально допустимая длительность импульса нужна для нормального счета микроконтроллера(в моем случае Tiny2313)
Добавлено: Вс июл 06, 2008 12:41:26
Gray64
В програмировании контроллеров мягко говоря не очень... Вот если на делфях бы...На сколько я понимаю,алгоритм приблизительно такой - на некий вход подаём измеряемую частоту.Каждую секунду уходим в прерывание(или 0.1 сек.),выводим ,то,чего насчитали,и так по кругу?При тактовой МЕГИ 16мГц,по идее,замерять 1мег - запросто.А при использовании внешних делителей,просто корректировать (двигать запятую) выводимые данные.

Добавлено: Вс июл 06, 2008 12:43:42
UkrRadist
Мой вопрос как раз не в программе,а в том,сможет ли контроллер воспринять настольоко короткий импульс?
Добавлено: Вс июл 06, 2008 21:14:07
igor727
UkrRadist писал(а):Мой вопрос как раз не в программе,а в том,сможет ли контроллер воспринять настольоко короткий импульс?
Если использовать прерывания по фронту INTO и INТl то один такт,при частоте 16 Мгерц = 62,5 наносекунд, это и есть минимальная длительность сигнала (Это для ATМегa8)
Добавлено: Вс июл 06, 2008 21:17:19
Gray64
Вот тут
http://nest.roboterbastler.de/colibri/index.html наткнулся...Правда на ТИНИ.Но насколько я понимаю МЕГА8 помощней будет и если перекомпилировать под неё,должно работать?
Добавлено: Вс июл 06, 2008 22:12:14
UkrRadist
тоя немного неправильно понял принцип работы,я уже вроде бы понял - указанный делитель на SAB6456 делит частоту,при этом длительность импульса увеличивается в указанное количество раз(спасибо за помощь т.Kentawrik),в следствии чего отпадает вопрос об минимальном периоде счета,так как при частоте 1000МГЦ длительность импульса будет равна около 120нс((1/1000000000)*256) чего вполне достоточно для переключения таймера Тини

Добавлено: Пн июл 07, 2008 10:57:07
Barni
igor727 писал(а):UkrRadist писал(а):Мой вопрос как раз не в программе,а в том,сможет ли контроллер воспринять настольоко короткий импульс?
Если использовать прерывания по фронту INTO и INТl то один такт,при частоте 16 Мгерц = 62,5 наносекунд, это и есть минимальная длительность сигнала (Это для ATМегa8)
А зачем прерывания? Для подсчета импульсов проще использовать вход таймера. Только эти входа стробируемые и макс частота примерно в 2,5-3 раза меньше рабочей частоты АВРки. Мега8 с кварцем 18МГц без проблем меряет 6 МГц(меандр!). 6*256=1536МГц, а SAB6456 на выходе дает меандр. Вот как я сделал
http://vrtp.ru/index.php?showtopic=8883&st=0
Добавлено: Пн июл 07, 2008 18:40:30
igor727
Barni писал(а):А зачем прерывания? Для подсчета импульсов проще использовать вход таймера. Только эти входа стробируемые и макс частота примерно в 2,5-3 раза меньше рабочей частоты АВРки. Мега8 с кварцем 18МГц без проблем меряет 6 МГц(меандр!). 6*256=1536МГц, а SAB6456 на выходе дает меандр. Вот как я сделал
http://vrtp.ru/index.php?showtopic=8883&st=0
Был поставлен вопрос о минимальной длительности импульса который может воспринять контроллер, так вот от прерываний он сможет принять импульс >62,5 nCek, а от счетчиков >125-155 nCek. Насчет подсчета импульсов есть разные схемы, все зависит от необходимой точности измерений, если удовлетворяет 6 знаков то можно и по данному принципу (по указанной ссылке). Ссылка ваша интересная, кое что от туда наверное возьму.
Добавлено: Пн июл 07, 2008 19:35:06
Barni
igor727 писал(а):Был поставлен вопрос о минимальной длительности импульса который может воспринять контроллер, так вот от прерываний он сможет принять импульс >62,5 nCek, а от счетчиков >125-155 nCek. Насчет подсчета импульсов есть разные схемы, все зависит от необходимой точности измерений, если удовлетворяет 6 знаков то можно и по данному принципу (по указанной ссылке). Ссылка ваша интересная, кое что от туда наверное возьму.
А зачем мерять короткие импульсы с большой скважностью? Ведь на обработку прерывания надо несколько тактов, и измеряемая частота будет меньше. Разговор ведь шел о частотомере.
Добавлено: Пн июл 07, 2008 20:31:29
igor727
Barni писал(а):
А зачем мерять короткие импульсы с большой скважностью? Ведь на обработку прерывания надо несколько тактов, и измеряемая частота будет меньше. Разговор ведь шел о частотомере.
Еще раз провторюсь, что есть разные способы измерения частоты, обеспечивающие разную точность, и скорость измерения. Попробуйте измерить вашим прибором частоту генератора с часовым кварцем 32768 Гц или частоту 50 Гц, я думаю что точность измерения будет никудышная, и тут я думаю более приемлемый результат даст измерение периода сигнала и далее пересчет его в частоту, а здесь требуется как раз наиболее быстрая реакция на фронт сигнала, что обеспечивают прерывания. Задержки на обработку прерывания 4 такта, легко учитываются. Очень интересный принцип заложен в частотомере по ссылке
http://www.cqham.ru/fpic01.htm , хорошая точность обеспечивается способом досчета. Так что кто как хочет так и делает, способов тьма.
Добавлено: Пн июл 07, 2008 21:49:03
Gray64
Мужики,тема вроде бы моя,а я как-бы и не при делах...Или у вас так тут принято?Я там ссылку давал,гляньте,можно ли перекомпилировать это для мега8?Я так понимаю что указатель стека у мега8 - двухбайтный.Дайте пример как его инициализировать на АСМе.
Добавлено: Пн июл 07, 2008 22:11:01
igor727
.def rgn = r17
ldi rgn,HIGH(RAMEND) ;начало стека
out SPH, rgn ;RAMEND, SPL, SPH для процессора Mega8
ldi rgn,LOW(RAMEND) ;определены в файле m8def.inc
out SPL,rgn ;
;я использую VMLAB
Добавлено: Пн июл 07, 2008 22:29:06
igor727
Да еще надо подправить таблицу прерываний под Мегу, и отключить сторожевой таймер, а дальше по шагам в VMlabe
1 0x000(1) RESET External Pin, Power-on Reset, Brown-out
Reset, and Watchdog Reset
2 0x001 INT0 External Interrupt Request 0
3 0x002 INT1 External Interrupt Request 1
4 0x003 TIMER2 COMP Timer/Counter2 Compare Match
5 0x004 TIMER2 OVF Timer/Counter2 Overflow
6 0x005 TIMER1 CAPT Timer/Counter1 Capture Event
7 0x006 TIMER1 COMPA Timer/Counter1 Compare Match A
8 0x007 TIMER1 COMPB Timer/Counter1 Compare Match B
9 0x008 TIMER1 OVF Timer/Counter1 Overflow
10 0x009 TIMER0 OVF Timer/Counter0 Overflow
11 0x00A SPI, STC Serial Transfer Complete
12 0x00B USART, RXC USART, Rx Complete
13 0x00C USART, UDRE USART Data Register Empty
14 0x00D USART, TXC USART, Tx Complete
15 0x00E ADC ADC Conversion Complete
16 0x00F EE_RDY EEPROM Ready
17 0x010 ANA_COMP Analog Comparator
18 0x011 TWI Two-wire Serial Interface
19 0x012 SPM_RDY Store Program Memory Ready
Добавлено: Пн июл 07, 2008 23:12:04
Gray64
Огромное спасибо!Ща я его..Или оно меня?
Добавлено: Чт июл 10, 2008 14:29:14
UkrRadist
Только что доделал схему частотомера.На первый взглад работает,...но при отсутствии сигнала на входе на дисплее всивечиваются цифры,как не удивительно,в зависимости от длины подключенного отрезка, от 100 до 1000МГц.Но даже при замыкании входной линии на землю показания практически не меняются.Скажыте это нормально?
Добавлено: Чт июл 10, 2008 17:54:09
Barni
UkrRadist писал(а):Только что доделал схему частотомера.На первый взглад работает,...но при отсутствии сигнала на входе на дисплее всивечиваются цифры,как не удивительно,в зависимости от длины подключенного отрезка, от 100 до 1000МГц.Но даже при замыкании входной линии на землю показания практически не меняются.Скажыте это нормально?
Если на входе стоит SAB6456 или что то похожее, то нормально.Прескалер без сигнала возбуждается.
Добавлено: Чт июл 10, 2008 19:07:13
UkrRadist
а можно как то убрать это возбуждение,что бы показовало ноль при отсутствии сигнала?И ще:что покажет частотомер.если на вход подать частоту ниже 70МГц(по Даташиту - это минимальная вх.частота)?