|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:26 am
|
Страница 1 от 1
|
[ 8 мнения ] |
|
| Автор |
Съобщение |
|
dtmf
Ранг: Ориентиран
Регистриран на: Пет Дек 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 |
|
 |
|
741
Ранг: Форумен бог
Регистриран на: Вто Сеп 15, 2009 10:44 am Мнения: 1034
|
След като не си счел за необходимо да кажеш какъв е контролера, значи със сигурност е пик
Причината е синхронизацията на външния сигнал с вътрешния клок. А "явлението" се нарича aliasing.
Проблемът се решава с четене на спецификацията, по-конкретно в частта с изискванията към тайминга на външния клок.
|
| Пет Яну 07, 2011 10:18 am |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Каква е максималната честота на входа на таймера? Погледни внимателно, има разлика на честотите на делителя и на таймера, на делителя за 16-ки на Microchip мисля беше около 50Mhz.
Може да ползваш един стар трик за увеличаване на четената честота - ползваш делителя, четеш и него 
|
| Пет Яну 07, 2011 10:27 am |
|
 |
|
bkulev
Ранг: Популярен
Регистриран на: Сря Яну 25, 2006 12:47 pm Мнения: 305 Местоположение: Varna
|
Освен това:
- Вероятно включваш TMR0 без за се съобразяваш със състоянието на входния му сигнал, т..е не си го синхронизирал по него. По този начин губиш един период от разделителната способност. Същото се получава и при спирането му. Най- вероятно не отчиташ състоянието на входния сигнал при спирането му.
- А нулираш ли TMR0 преди да го включиш?
- Не какзваш кой и как ти измерва 10-те микросекунди? Нали се сещаш, колко важни са те?
- Не казваш как си извеждаш показанието, може грешката ти да е в показанието, а не толкова в измерването, а може и на двете места.?
Що се отнася за максималната честота на входния сигнал на PIC-те. Пробвал съм с един, на който в спецификацията му пишеше 16MHz. Аз го пробвах до 100MHz и ги отчиташе без проблем. Нямах генератор на повече за да го изпробвам. Питахме хората на Microchip и те казаха: Знаем, че могат повече, но написаното го гарантираме. От там нанатък, може да си го ползваш за свои нужди, но не и да го продаваш на клиенти.
|
| Пет Яну 07, 2011 10:57 am |
|
 |
|
mitkoradev
Ранг: Минаващ
Регистриран на: Чет Сеп 30, 2010 2:37 pm Мнения: 21 Местоположение: Варна
|
Хмм при по-висока честота и едно и също време на измерване влиянието на измерени +- един период би трябвало да намалява относително.
Пробвай да махнеш бита за синхронизиране по тактовата честота T1SYNC може да стигне малко по-високо.
Освен това като гледам стойностите ти явно не ползваш прескалера, пускай го за по-високи честото, ще жертваш малко резолюция но би трябвало да заработи стабилно . Може да пробваш да мериш с най-голям прескалер и после го сваляш и мериш пак докато не се получи огромна разлика ...
|
| Пет Яну 07, 2011 4:15 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Таймер0 няма изключване на синхронизацията - така като му гледам блок схемата е твърдо синхронизиран с Fosc/2. Нормално е да може до около 9. Ако е за това за което си мисля  там го кара на 40MHz с PLL-a. По удачния вариант ще е да ползва таймер1 - той има изключване на сихнронизацията.
И докъде я докараха там програмата ? Че и аз чакам окончателния вариант и да се хващам за поялника.
едит : това дето е оградено в червено е най-вероятно проблема. Като мине 10 MHz и почват да се застъпват импулсите в този синхронизатор. Ама за TMR1 ще трябва да поразбута малко програмата.
|
| Пет Яну 07, 2011 4:57 pm |
|
 |
|
dtmf
Ранг: Ориентиран
Регистриран на: Пет Дек 09, 2005 3:22 am Мнения: 254
|
Микропроцесора е PIC18F2520.
Темата е от един Руски форум където правят едно чудесно многофункционално устройство, автора му прочете темата тук и доколкото е схванал причината е :
" Не отчетох, че при честота над 10 Мхц, вход TMR0 ще се синхронизира с тактовата честота на генератора.От тук и проблема. В даташиита за това не е писано подробно"
И въпроса: Как може да се справи с проблема?
Към последното Цекинз:Ако е това което си мислите ))), програмата е Ок само честотомера иска доизкосуряване.Че и аз чакам няколко прескалера от ибей.
|
| Пет Яну 07, 2011 8:48 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Аз искам да направи в четири байта в еепрома да се задава конфигурацията за честотомера, щото има няколко варианта на комутация и аз лично смятам да направя варианта с мосфетите, където трябва битовете да са инвертирани (варианта на Руслан). И може пак в еепрома да се указва с какво реле (бистабилно или нормално) се работи. Тогава хекса ще е универсален за който както си иска. Аз лично смятам да го правя с бистабилно реле. Ама руския ми е на ниво четене и разбиране - иначе бих му ги написал тези предложение там
Варианта за корекция на проблема е да ползва таймер1 - там сингхронизацията може да се изключи. И без това неговия вход го ползва за бутон. Ако обаче ползва прескалера на т0 ще е проблем за над 1:8 ...
едит 2 : гледам че има предложения да се включва прескалера : и това е вариант - включва на 1:8 и вдига времето на 80uS. Ама това за настройките в еепрома ако може му го преведи - смятам, че това ще е най-удачния вариант и няма да има "дай хекс тъй - дай инак"
|
| Пет Яну 07, 2011 9:46 pm |
|
|
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|