Отговори на тема  [ 8 мнения ] 
Проблем с честотомер 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Дек 09, 2005 3:22 am
Мнения: 254
Мнение Проблем с честотомер
Ситуацията е следната , до около 9 мХц работи добре, но при по висока честота примерно 20 мХц,честотомера понякога показва около 8 Мхц.

Намерих няколко точни генератора: 11.059Мхц, 25.000 и 66.667 за експерименти и да разбера къде бъркам.Помъчих се час със програмата и за експеримента упростих алгоритъма на работа,но се получи някаква аномалия. Ситуацията е следната:

Настройвам TMR0 като 16 разряден брояч с външен източник на тактов сигнал (T0CKI).Генератора е включен на (T0CKI),включвам TMR0,чакам 10 микросекунди, изключвам TMR0,прочитам значението на таймера, и ето какъв странен резултат:

генератор Мхц.........таймер
11.059 ---------------- 89
25.000-----------------50
66.667-----------------66

Не разбирам какво става,защо при генератора 25 мегахерца,таймера за същото време отброява по-малко отколкото при 11Мхц?

Въпроса е от един приятел,пускам го тук.


Пет Яну 07, 2011 2:46 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение 
След като не си счел за необходимо да кажеш какъв е контролера, значи със сигурност е пик :)

Причината е синхронизацията на външния сигнал с вътрешния клок. А "явлението" се нарича aliasing.
Проблемът се решава с четене на спецификацията, по-конкретно в частта с изискванията към тайминга на външния клок.


Пет Яну 07, 2011 10:18 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Каква е максималната честота на входа на таймера? Погледни внимателно, има разлика на честотите на делителя и на таймера, на делителя за 16-ки на Microchip мисля беше около 50Mhz.
Може да ползваш един стар трик за увеличаване на четената честота - ползваш делителя, четеш и него ;)


Пет Яну 07, 2011 10:27 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Яну 25, 2006 12:47 pm
Мнения: 305
Местоположение: Varna
Мнение 
Освен това:
- Вероятно включваш TMR0 без за се съобразяваш със състоянието на входния му сигнал, т..е не си го синхронизирал по него. По този начин губиш един период от разделителната способност. Същото се получава и при спирането му. Най- вероятно не отчиташ състоянието на входния сигнал при спирането му.
- А нулираш ли TMR0 преди да го включиш?
- Не какзваш кой и как ти измерва 10-те микросекунди? Нали се сещаш, колко важни са те?
- Не казваш как си извеждаш показанието, може грешката ти да е в показанието, а не толкова в измерването, а може и на двете места.?

Що се отнася за максималната честота на входния сигнал на PIC-те. Пробвал съм с един, на който в спецификацията му пишеше 16MHz. Аз го пробвах до 100MHz и ги отчиташе без проблем. Нямах генератор на повече за да го изпробвам. Питахме хората на Microchip и те казаха: Знаем, че могат повече, но написаното го гарантираме. От там нанатък, може да си го ползваш за свои нужди, но не и да го продаваш на клиенти.


Пет Яну 07, 2011 10:57 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Сеп 30, 2010 2:37 pm
Мнения: 21
Местоположение: Варна
Мнение 
Хмм при по-висока честота и едно и също време на измерване влиянието на измерени +- един период би трябвало да намалява относително.
Пробвай да махнеш бита за синхронизиране по тактовата честота T1SYNC може да стигне малко по-високо.
Освен това като гледам стойностите ти явно не ползваш прескалера, пускай го за по-високи честото, ще жертваш малко резолюция но би трябвало да заработи стабилно . Може да пробваш да мериш с най-голям прескалер и после го сваляш и мериш пак докато не се получи огромна разлика ...


Пет Яну 07, 2011 4:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Таймер0 няма изключване на синхронизацията - така като му гледам блок схемата е твърдо синхронизиран с Fosc/2. Нормално е да може до около 9. Ако е за това за което си мисля :) там го кара на 40MHz с PLL-a. По удачния вариант ще е да ползва таймер1 - той има изключване на сихнронизацията.

И докъде я докараха там програмата ? Че и аз чакам окончателния вариант и да се хващам за поялника.

едит : това дето е оградено в червено е най-вероятно проблема. Като мине 10 MHz и почват да се застъпват импулсите в този синхронизатор. Ама за TMR1 ще трябва да поразбута малко програмата.


Прикачени файлове:
tmr0.jpg
tmr0.jpg [ 55.32 KiB | Прегледано 2571 пъти ]
Пет Яну 07, 2011 4:57 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Дек 09, 2005 3:22 am
Мнения: 254
Мнение 
Микропроцесора е PIC18F2520.
Темата е от един Руски форум където правят едно чудесно многофункционално устройство, автора му прочете темата тук и доколкото е схванал причината е :

" Не отчетох, че при честота над 10 Мхц, вход TMR0 ще се синхронизира с тактовата честота на генератора.От тук и проблема. В даташиита за това не е писано подробно"

И въпроса: Как може да се справи с проблема?

Към последното Цекинз:Ако е това което си мислите ))), програмата е Ок само честотомера иска доизкосуряване.Че и аз чакам няколко прескалера от ибей.


Пет Яну 07, 2011 8:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Аз искам да направи в четири байта в еепрома да се задава конфигурацията за честотомера, щото има няколко варианта на комутация и аз лично смятам да направя варианта с мосфетите, където трябва битовете да са инвертирани (варианта на Руслан). И може пак в еепрома да се указва с какво реле (бистабилно или нормално) се работи. Тогава хекса ще е универсален за който както си иска. Аз лично смятам да го правя с бистабилно реле. Ама руския ми е на ниво четене и разбиране - иначе бих му ги написал тези предложение там :)

Варианта за корекция на проблема е да ползва таймер1 - там сингхронизацията може да се изключи. И без това неговия вход го ползва за бутон. Ако обаче ползва прескалера на т0 ще е проблем за над 1:8 ...

едит 2 : гледам че има предложения да се включва прескалера : и това е вариант - включва на 1:8 и вдига времето на 80uS. Ама това за настройките в еепрома ако може му го преведи - смятам, че това ще е най-удачния вариант и няма да има "дай хекс тъй - дай инак"


Пет Яну 07, 2011 9:46 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни