Отговори на тема  [ 11 мнения ] 
измерване на период? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение измерване на период?
Нещо блокирах :oops: . Как да премеря периода на сигнал постъпващ към RA4 (Pic)? сего го направих ама е много селско - следя състоянието на пина - кога се сменя от нула в 1, стартирам ТМР0 който брой вътрешният такт (1 Mhz - 1 микросекунда), ако препълни - софтуерен брояч ит.н. докато пак намери преход 0-1. Става ама много тромаво ми се вижда нещо а и трябва да ползваш прекъсвания за да излезеш от тук защото ако няма сигнал на RA4 ще си виси до второ пришествие да чака първия преход от 0->1


Пон Мар 20, 2006 9:30 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
На прав път си, но според мен ти трябва още един таймер, затова и висиш да бройш импулсите в прекъсването :wink:
Можеш да опиташ по друг начин, малко труден за реализация....използваш прекъсване от RB4-RB7, по тоя начин ще ти остане свободен TMR0 и няма да се налага да броиш софтуерно :)


Пон Мар 20, 2006 9:46 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Хм ..... RA4 ти е вход на таймера, т.е. може да ти генерира прексване, обслужваш прекъсване пи препълване на TMR0, ти не си казал с какъв PIC си, ще ти трябва втори таймер, сетваш си тймера на 255, в момента в който полчиш импулс, ще ти се генерира прекъсване по препълване, тгава си пускаш другия таймер, сетваш го тоя пак на 255 и излизаш. В прекъсването на другия таймер си инкрементваш софтуерния брояч. Но в случая е много по удачно да позлваш B0 или B4-7, така ще се полва само един таймер.


Пон Мар 20, 2006 10:05 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Прекъсване, ама не по RB4-7, ами по преден фронт на RB0 - така е много по-добре! При първото прекъсване нулира6 таъмера, конфугурираш го отново и вдигаш някакъв флаг в прекъсването по RB0. Като дойде второто прекъсване отчиташ колко показва таймера, нулираш флага... и тва е.


можеш да ползваш и прекъсването на TMR0, за да си инкрементваш брой4а, освен ако ПИК-а няма 16 битов TMR1.

Апропо, кой PIC e тва
:oops:


Пон Мар 20, 2006 10:43 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Вероятно става въпрос за PIC16F84, затова и предложих идеята с RB4-7 , няма как да пуснеш TMR0 да се върти в прекъсването след като източника му е RA4 :lol:


Пон Мар 20, 2006 10:46 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
"Прекъсване, ама не по RB4-7, ами по преден фронт на RB0 " - наистина най елегантното решение, обаче имам само RA4 РА3. Pic-a e 16f872.
Хм ..... RA4 ти е вход на таймера, т.е. може да ти генерира прексване, обслужваш прекъсване пи препълване на TMR0, ти не си казал с какъв PIC си, ще ти трябва втори таймер, сетваш си тймера на 255, в момента в който полчиш импулс, ще ти се генерира прекъсване по препълване, тгава си пускаш другия таймер, сетваш го тоя пак на 255 и излизаш. В прекъсването на другия таймер си инкрементваш софтуерния брояч - как не е сетих за тази хватка, така съм организирал даже и режима в който намирам броя на импулсите постъпващи на РА4 - установявам ТМР0 в 255 и при импулс - прекъсване - увеличаване на софтуервн брояч, зампис на ТМР0 с 255 и.т.н
Благодаря за отговорите, то някой път като запецне човек и очевидното не вижда....


Пон Мар 20, 2006 12:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение 
Абе аз що не мога да се сетя друго освен CCP в режим capture...
При всички изброени методи никога не мож каза дали фронта е пристигнал сега или +/- 2-3 такта, че и по-зле. Щото влизането в прекъсване трае 2-3 такта (според зависи), после ако в началото на прекъсването (за примера с RB0) настъпи препълване на таймера няма как да се отчете, после ако по времето когато се обслужва препълването на таймера постъпи фронта няма как да се отчете, после сетването на таймера изисква време -> има минимална ширина на импулса от няколко такта и т.н. и т.н. Демек граничните ситуации са твърде много и твърде гадни.


Пон Мар 20, 2006 3:04 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Е да де, ама ние тва става предимно в PIC-овете дето си имат CCP :P

А иначе и аз си помислих за '84, той човека не беше казал с какво работи. Иначе аз варианта с ПБ0 съм го ползвал и работи доста стабилно - ако не говорим за някакви 4естоти, съизмерими с клока,разбира се


Пон Мар 20, 2006 3:36 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
CCP.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Мар 20, 2006 3:53 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 30, 2005 2:08 pm
Мнения: 30
Местоположение: Сливен
Мнение 
Използвай CCP ako го имаш в пика.
А ако точноста ти е критична можеш да пробваш това:

http://www.acam-usa.com/Content/English/gp1/gp1_1.html

Не е евтино но пък е чудно и работи добре. тествано 100%


Пон Мар 20, 2006 6:01 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Вярно че точноста постигната по този начин не е от най-високите, но зависи от дължината на изследвания период. Вече го направих с ТМР0 и ТМР1 чрез зареждане на ТМР0 с 255 и понеже ми трябваше за измерване на периоди от 20мс (50Хз) при вътрешен такт 1 мкс точноста е задоволителна... - 0.05%. Съгласен съм че за много малки периоди грешката вече ще бъде значителна, да не кажем съизмерима с резултата, но тогава все пак може да измерим честотата на импулсите и да си сметнем периода....


Пон Мар 20, 2006 7:29 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 11 мнения ] 

Кой е на линия

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


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

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