|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 5:26 pm
|
Страница 1 от 1
|
[ 11 мнения ] |
|
| Автор |
Съобщение |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
 измерване на период?
Нещо блокирах  . Как да премеря периода на сигнал постъпващ към RA4 (Pic)? сего го направих ама е много селско - следя състоянието на пина - кога се сменя от нула в 1, стартирам ТМР0 който брой вътрешният такт (1 Mhz - 1 микросекунда), ако препълни - софтуерен брояч ит.н. докато пак намери преход 0-1. Става ама много тромаво ми се вижда нещо а и трябва да ползваш прекъсвания за да излезеш от тук защото ако няма сигнал на RA4 ще си виси до второ пришествие да чака първия преход от 0->1
|
| Пон Мар 20, 2006 9:30 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
На прав път си, но според мен ти трябва още един таймер, затова и висиш да бройш импулсите в прекъсването
Можеш да опиташ по друг начин, малко труден за реализация....използваш прекъсване от RB4-RB7, по тоя начин ще ти остане свободен TMR0 и няма да се налага да броиш софтуерно 
|
| Пон Мар 20, 2006 9:46 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30685 Местоположение: София
|
Хм ..... RA4 ти е вход на таймера, т.е. може да ти генерира прексване, обслужваш прекъсване пи препълване на TMR0, ти не си казал с какъв PIC си, ще ти трябва втори таймер, сетваш си тймера на 255, в момента в който полчиш импулс, ще ти се генерира прекъсване по препълване, тгава си пускаш другия таймер, сетваш го тоя пак на 255 и излизаш. В прекъсването на другия таймер си инкрементваш софтуерния брояч. Но в случая е много по удачно да позлваш B0 или B4-7, така ще се полва само един таймер.
|
| Пон Мар 20, 2006 10:05 am |
|
 |
|
setoy
Ранг: Почетен член
Регистриран на: Пет Фев 17, 2006 9:17 am Мнения: 765 Местоположение: Стара Загора
|
Прекъсване, ама не по RB4-7, ами по преден фронт на RB0 - така е много по-добре! При първото прекъсване нулира6 таъмера, конфугурираш го отново и вдигаш някакъв флаг в прекъсването по RB0. Като дойде второто прекъсване отчиташ колко показва таймера, нулираш флага... и тва е.
можеш да ползваш и прекъсването на TMR0, за да си инкрементваш брой4а, освен ако ПИК-а няма 16 битов TMR1.
Апропо, кой PIC e тва

|
| Пон Мар 20, 2006 10:43 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Вероятно става въпрос за PIC16F84, затова и предложих идеята с RB4-7 , няма как да пуснеш TMR0 да се върти в прекъсването след като източника му е RA4 
|
| Пон Мар 20, 2006 10:46 am |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 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 |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Абе аз що не мога да се сетя друго освен CCP в режим capture...
При всички изброени методи никога не мож каза дали фронта е пристигнал сега или +/- 2-3 такта, че и по-зле. Щото влизането в прекъсване трае 2-3 такта (според зависи), после ако в началото на прекъсването (за примера с RB0) настъпи препълване на таймера няма как да се отчете, после ако по времето когато се обслужва препълването на таймера постъпи фронта няма как да се отчете, после сетването на таймера изисква време -> има минимална ширина на импулса от няколко такта и т.н. и т.н. Демек граничните ситуации са твърде много и твърде гадни.
|
| Пон Мар 20, 2006 3:04 pm |
|
 |
|
setoy
Ранг: Почетен член
Регистриран на: Пет Фев 17, 2006 9:17 am Мнения: 765 Местоположение: Стара Загора
|
Е да де, ама ние тва става предимно в PIC-овете дето си имат CCP
А иначе и аз си помислих за '84, той човека не беше казал с какво работи. Иначе аз варианта с ПБ0 съм го ползвал и работи доста стабилно - ако не говорим за някакви 4естоти, съизмерими с клока,разбира се
|
| Пон Мар 20, 2006 3:36 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
CCP.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Мар 20, 2006 3:53 pm |
|
 |
|
Живко
Ранг: Минаващ
Регистриран на: Сря Мар 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 |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Вярно че точноста постигната по този начин не е от най-високите, но зависи от дължината на изследвания период. Вече го направих с ТМР0 и ТМР1 чрез зареждане на ТМР0 с 255 и понеже ми трябваше за измерване на периоди от 20мс (50Хз) при вътрешен такт 1 мкс точноста е задоволителна... - 0.05%. Съгласен съм че за много малки периоди грешката вече ще бъде значителна, да не кажем съизмерима с резултата, но тогава все пак може да измерим честотата на импулсите и да си сметнем периода....
|
| Пон Мар 20, 2006 7:29 pm |
|
|
|
Страница 1 от 1
|
[ 11 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|