Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

измерване на период?
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2038
Страница 1 от 1

Автор:  milenjs [ Пон Мар 20, 2006 9:30 am ]
Заглавие:  измерване на период?

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

Автор:  Predator_MF [ Пон Мар 20, 2006 9:46 am ]
Заглавие: 

На прав път си, но според мен ти трябва още един таймер, затова и висиш да бройш импулсите в прекъсването :wink:
Можеш да опиташ по друг начин, малко труден за реализация....използваш прекъсване от RB4-RB7, по тоя начин ще ти остане свободен TMR0 и няма да се налага да броиш софтуерно :)

Автор:  ToHu [ Пон Мар 20, 2006 10:05 am ]
Заглавие: 

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

Автор:  setoy [ Пон Мар 20, 2006 10:43 am ]
Заглавие: 

Прекъсване, ама не по RB4-7, ами по преден фронт на RB0 - така е много по-добре! При първото прекъсване нулира6 таъмера, конфугурираш го отново и вдигаш някакъв флаг в прекъсването по RB0. Като дойде второто прекъсване отчиташ колко показва таймера, нулираш флага... и тва е.


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

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

Автор:  Predator_MF [ Пон Мар 20, 2006 10:46 am ]
Заглавие: 

Вероятно става въпрос за PIC16F84, затова и предложих идеята с RB4-7 , няма как да пуснеш TMR0 да се върти в прекъсването след като източника му е RA4 :lol:

Автор:  milenjs [ Пон Мар 20, 2006 12:41 pm ]
Заглавие: 

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

Автор:  velio [ Пон Мар 20, 2006 3:04 pm ]
Заглавие: 

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

Автор:  setoy [ Пон Мар 20, 2006 3:36 pm ]
Заглавие: 

Е да де, ама ние тва става предимно в PIC-овете дето си имат CCP :P

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

Автор:  Цецо [ Пон Мар 20, 2006 3:53 pm ]
Заглавие: 

CCP.

Автор:  Живко [ Пон Мар 20, 2006 6:01 pm ]
Заглавие: 

Използвай CCP ako го имаш в пика.
А ако точноста ти е критична можеш да пробваш това:

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

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

Автор:  milenjs [ Пон Мар 20, 2006 7:29 pm ]
Заглавие: 

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

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/