|
И снова частотомер на Atmega8., нужен алгоритм |
|
|
|
Jul 10 2008, 23:45
|
Группа: Новичок
Сообщений: 10
Регистрация: 2-07-08
Пользователь №: 38 711

|
Добрый день всем! На этом форуме я вобщем новичек. Вот уже меня достал этот вопрос,бо я лажу-и везде готовые схемы,без самой идеи как оно работает! Не надо мне готовые варианты нада сама идея!!! Вобщем в чем суть то вопроса Сваял так сказать частотомер на Atmega8+LMXxxxx пределитель,с выводом на МЭЛТ MT10T7-7. Тут запортачка с самим принципом измерения! Пишу на ассемблере,писать на С для таких контролеров,как по мне это полное извращение! И так. Использую 2 таймера-8битный Т0,и 16 битный Т1. Измерительная частота поступает сразу на вход Т1(PD5). После инициализацие портов,дисплея и LMX,инициализирую таймеры-- на Т0 пускаю сигнал с кварца,поделенный на 8, вход T1 подкл к источнику сигнала. А забыл-в Т0 записую константу,что бы прерывание от него наступило после 100 импульсов поступивших на него. Потом запускаю бесконечный цикл. Наступает прирывани через 100имульсов тактируемые частотой 1МГЦ(8МГЦ/8). Останавлваем Т1,изымаем даные с регистров,преобразуем 16бит в 5 десятичных знаков,выводим на экран. запускаем таймеры-счетчики,возвращаемся в бесконечный цикл. Так вот в чем глюк! Когда тестил прогу,тестил ее на частах до 2х Мгц,т е 8 бит 16битного счетчика,потом прикурил LMX,тут чюдеса когда значение в Т1 больше 255,почемуто не корректно просходит преобразование двоичного числа в десятичное...один алгорит нарыл преобразования,а все остальное бред какойто...возникли сомнения -правильно ли у меня преобразование 2х 8битных регистров с T1 в десятичный код? бо в инете токо один пример нарыл,остальное для школы 11 класса! Вопрос. Будет ли работать моя идея??? И какие тут подводные камни,и точность.Вобще работает,но я не уверен чт идея верна И как реализуют алгоритм на одном 8 битном таймере? ведь прерывание,изьятие из регистра и запись,это погрешность ,и приличная! Почитав это http://electronix.ru/forum/index.php?showt...29796&st=75 ,я пришол в УЖАС!!! Мне хватит и 5 разрядов. Сразу скажу частоту мерять до 3 ГГц,точность +-0.5МГЦ не критично! Схема собрана,работает,но вот с алгоритмом измерения походу не то. Посмотрел тут схемы,почемуто народ использует 8 битный таймер-счетчик...да и прошивы все hex,пришлось дизасемблить и смотреть....ну просто бесит..что нигде ни кто подробно не описал по человечиски.... Жду коментарием. За любой ответ буду благодарен.
Сообщение отредактировал Peeoner - Jul 10 2008, 23:59
|
|
|
|
|
 |
Ответов
|
Jul 11 2008, 15:09
|
Группа: Новичок
Сообщений: 10
Регистрация: 2-07-08
Пользователь №: 38 711

|
Цитата Посмотрел вашу ссылку, там моя переписка с Яrik'ом (кстати, он довёл-таки точность измерения частоты 1 МГц программой на си до 1 Гц), никакого ужаса не заметил, зато почитав ваши сообщения, понял, что вы учились в олбанской школе и были там хорошистом или даже отличником. Потом посмотрел вашу программу и тут пришёл в тихий ужас: нет ни одного завершённого фрагмента, просто какие-то куски кода.
По делу. Алгоритм измерения частоты методом ворот достаточно примитивен. Берёте некий счётчик, открываете его на некоторый период времени - счётчик начинает считать приходящие импульсы, закрываете - перестаёт считать. Если окно было открыто на 1 секунду, то искомая частота в герцах равна количеству импульсов в счётчике. Если окно открыто на 0.1с, то частота в десятках герц и т.д. Если окно некратно таких числам, то придётся каждый раз пересчитывать, поэтому все стараются выставить кратное окно. У вас, кстати, длительность окна не кратна, надо пересчитывать. Да и длительность какая-то смехотворная - порядка 40 мс, подойдёт только для оценки величины частоты. Видите ли, частотомер это точный измерительный прибор, и разработчики всегда стараются выжать максимум из разрабатываемого устройства, так они устроены. А уж что выводить на дисплей, 5-6-7-8-9-10 разрядов, это отдельная песня. Ну в албанской школе не учюся,давно уже отучился,грамматика на форуме ,думаю, это не столь критично.Да и коменты в тексте программы чисто для себя,что бы не пришлось думать "а што же я тут делал" кода прога поваляеться пол года на компе,и придеться что то править. Код в програме завершен,я просто привел кусок который относиться к циклу измерения,просто незнаю нужен ли весь код,вроде и так понятно А на диспелй выводить цифры,ни какой песни нету,все достаточно легко,как по мне проще чем число преобразовать))) Я прекрасно понимаю что частотомер точный прибор,но мне не нужно сверх точности. Вот скажем на частоте в 3 000 МГЦ,поделеную на 1280 какую вы точность получите???? Используя обычный китайский КВАРЦ на 8мгц... Я все же подумаю над идеей =GM= ... Устройство для себя разрабатывалось. >Этот алгоритм используют сотни людей, и У ВСЕХ он работает нормально. Тем более, что он очень простой. Просто применять его нужно правильн Ну может конешно и я ошибся,поверю вам наслово. А вы его сами применяли хоть раз??? А по поводу С--напишите 100 строчек кода,откомпильте и посмотрите сколько hex файл у вас бедет весить,а потом напишите на ассемблере и сравните! А всякая оптимизация и прочее не дают особого эффекта
Сообщение отредактировал Peeoner - Jul 11 2008, 15:16
|
|
|
|
|
Jul 11 2008, 16:15
|

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

|
Цитата(Peeoner @ Jul 11 2008, 14:09)  А на диспелй выводить цифры, никакой песни нету, все достаточно легко, как по мне проще чем число преобразовать))) Ну-у-у, я имел в виде верные значащие цифры, а не просто цифры. Цитата(Peeoner @ Jul 11 2008, 14:09)  Я прекрасно понимаю что частотомер точный прибор, но мне не нужно сверхточности. Вот скажем на частоте в 3 000 МГw, поделеную на 1280 какую вы точность получите???? Используя обычный китайский КВАРЦ на 8мгц... На ATtiny24 (20 МГц клок) я бы сказал, что можно получить порядка +-2 Гц, с обработкой можно получить точными все 10 цифр частоты. Например, Fx=2 999 999 998 Гц точно, не слабо, э? Причём, достичь такого на копеечном приборе. Интересно, за сколько такой прибор можно купить? Конечно, кое-над-чем придётся потрудиться, но это не смертельно. Да, и делил бы на 300, а не на 1280, и точнее, и всяко дешевле.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jul 11 2008, 17:29
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(=GM= @ Jul 11 2008, 16:15)  На ATtiny24 (20 МГц клок) я бы сказал, что можно получить порядка +-2 Гц, с обработкой можно получить точными все 10 цифр частоты. Например, Fx=2 999 999 998 Гц точно, не слабо, э? Причём, достичь такого на копеечном приборе. Интересно, за сколько такой прибор можно купить? Точных ? Десять ? На копеечном приборе ? Мне кажется, только термостабилизация будет стоить на пару порядков дороже, чем этот "копеечный прибор" (
|
|
|
|
|
Jul 11 2008, 19:09
|

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

|
Цитата(Огурцов @ Jul 11 2008, 21:29)  Точных ? Десять ? На копеечном приборе ? Мне кажется, только термостабилизация будет стоить на пару порядков дороже, чем этот "копеечный прибор" ( термостабилизация чего? кварца контроллера? Вы о чём? Вы же не генерите образцовый сигнал а кто Вам сказал что сам измеряемый сигнал будет очёнь стабильным? для копеечного прибора термостабилизация не применяется, а указывается температурный диапазон прибора и indоor use only
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Jul 12 2008, 16:59
|

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

|
Цитата(gte @ Jul 12 2008, 11:01)  И сколько значащих цифр при этом будут реальными? Полагаю не менее шести. Проверял стабильность кварца контроллера используя режим CTC таймера. Исспользовал для измерения частоты не китайский частотомер, не помню как называется , год назад было, так вот частота генерируемая так по памяти из кварца фирмы Siward 7.3728 MHz, LP-3.5S, 30ppm и равнялась 230400 Гц - ошибка в один герц накапливалась в течении 15-ти ... 20-ти секунд.
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
Сообщений в этой теме
Peeoner И снова частотомер на Atmega8. Jul 10 2008, 23:45 defunct Цитата(Peeoner @ Jul 11 2008, 02:45) Пишу... Jul 11 2008, 00:10 Peeoner Вот участок кода самого цикла измерения,сильно не ... Jul 11 2008, 00:23 Peeoner Ну вот все проверил,дествительно глюк именно в пре... Jul 11 2008, 03:42 zhevak Цитата(Peeoner @ Jul 11 2008, 09:42) Тепе... Jul 11 2008, 05:45 Nanobyte Цитата(Peeoner @ Jul 11 2008, 07:42) ...В... Jul 11 2008, 10:21 Qwertty Цитата(Peeoner @ Jul 11 2008, 07:42) глюк... Jul 11 2008, 12:59 =GM= Цитата(Peeoner @ Jul 10 2008, 22:45) Почи... Jul 11 2008, 12:33 akl Цитата(Peeoner @ Jul 11 2008, 04:45) ...в... Jul 11 2008, 12:58 Sneg_87 Цитата(akl @ Jul 11 2008, 18:58) Как Вам ... Oct 13 2009, 04:12 zltigo Цитата(Peeoner @ Jul 11 2008, 17:09) Ну в... Jul 11 2008, 15:22  zhevak Цитата(zltigo @ Jul 11 2008, 21:22) Moder... Jul 11 2008, 15:37  Peeoner Цитата(=GM= @ Jul 11 2008, 19:15) Ну-у-у,... Jul 11 2008, 16:22    Огурцов Цитата(sKWO @ Jul 11 2008, 19:09) для коп... Jul 11 2008, 19:41      Огурцов Цитата(sKWO @ Jul 12 2008, 16:59) Полагаю... Jul 12 2008, 20:16       foxit Цитата(Огурцов @ Jul 12 2008, 23:16) Ну В... Jul 13 2008, 09:16        sKWO Цитата(foxit @ Jul 13 2008, 12:16) Кварц ... Jul 13 2008, 13:08 Peeoner Правила читал.Вроде не че такого не сказал,забанит... Jul 11 2008, 15:34 zltigo Цитата(Peeoner @ Jul 11 2008, 17:34) Прав... Jul 11 2008, 15:41 Peeoner Спасибо,понял. Народ почемуто тут везде исходники ... Jul 11 2008, 15:45 zltigo Цитата(Peeoner @ Jul 11 2008, 17:45) Наро... Jul 11 2008, 15:51 Peeoner Ну вобщем решил я реализовать метод =GM=,как бы вр... Jul 12 2008, 09:30 Tiny Такой вопрос.
CodeVision, пример из пакета \c... Jul 13 2008, 07:32 foxit Цитата(Tiny @ Jul 13 2008, 10:32) Есть ли... Jul 13 2008, 09:28  Nanobyte Цитата(foxit @ Jul 13 2008, 13:28) ...смо... Jul 14 2008, 14:47 Tiny Извиняюсь, почему-то я разместил свое сообщение не... Jul 13 2008, 09:20 akl Здравствуйте. Имелась в виду LMX2326 в качестве пр... Oct 14 2009, 03:00
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|