| Автор |
Съобщение |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
 16F877 и измерване на продължителност на импулс?
Дайте някаква идея за измерване на продължителност на импулс - от качващ до падащ фронт. Кофтито е че порт В е зает и не може да се ползва, там щеше да стане лесно с прекъсване при промяна на състоянието на който и да е пин от порт 
|
| Сря Авг 09, 2006 12:02 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
In Capture mode, CCPR1H:CCPR1L captures the
16-bit value of the TMR1 register when an event occurs
on pin RC2/CCP1. An event is defined as:
• Every falling edge
• Every rising edge
Айде малко да поровиш де или този режим на работа е ТАБУ за теб
|
| Сря Авг 09, 2006 12:46 pm |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Не е табу, така си измервам периода на импулса, сега ми трябва да меря ширината на импулса, не се сещам как и дали може да се стартира кепчара по качващ фрон и да се спре/отчете таймер 1 при падащ фронт. Ако някой знае - да драсне нещо. Благодаря!
|
| Сря Авг 09, 2006 12:57 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
В регистър CCPCON1:
 |  |  |  | Цитат: bit 3-0 CCPxM3:CCPxM0: CCPx Mode Select bits 0000 = Capture/Compare/PWM disabled (resets CCPx module) 0100 = Capture mode, every falling edge 0101 = Capture mode, every rising edge 0110 = Capture mode, every 4th rising edge 0111 = Capture mode, every 16th rising edge 1000 = Compare mode, set output on match (CCPxIF bit is set) 1001 = Compare mode, clear output on match (CCPxIF bit is set) 1010 = Compare mode, generate software interrupt on match (CCPxIF bit is set, CCPx pin is unaffected) 1011 = Compare mode, trigger special event (CCPxIF bit is set, CCPx pin is unaffected); CCP1 resets TMR1; CCP2 resets TMR1 and starts an A/D conversion (if A/D module is enabled) 11xx = PWM mode |  |  |  |  |
Нагласяш си прекъсване при CCP1 capture, нагласяш фронта на положителен (пишеш xxxx0101 в CCPCON1) - при поява на прекъсване, нулираш таймер 1, сменяш фронта на отрицателен (xxxx0100 в CCPCON1), при появата на следващото прекъсване ще имаш дължината на импулса в Timer1.
|
| Сря Авг 09, 2006 1:15 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
даже не е нужно да нулира таймера помни стойноста някаде сменяш режима от нарастващ на падащ фронт на следващото прекъсване четеш новата стойност и вадиш от нея старата
|
| Сря Авг 09, 2006 1:21 pm |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
OK, ще го пробвам ама без прекъсване и ще обадя дали е станало!
|
| Сря Авг 09, 2006 1:42 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
Пример4е на Ц 
|
| Сря Авг 09, 2006 2:05 pm |
|
 |
|
rumen
Ранг: Почетен член
Регистриран на: Чет Ное 25, 2004 3:42 pm Мнения: 913
|
Примерче на протон
Variable = PULSIN Pin , State
|
| Сря Авг 09, 2006 3:38 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Аналогов компаратор нямаш ли свободен?
|
| Сря Авг 09, 2006 3:48 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
За тая цел се ползват кепчъри, щото става автоматично. С компаратор пак ще стане, ама с малко повече играчка  .
И е по добре да нулира таймера, за да не смята после повече, още повече пък на следващия качващ фронт вече му дава и периода. Така с един кепчър - два заека  .
|
| Сря Авг 09, 2006 4:15 pm |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Румене, с Pulsin става най-лесно, но при 4 мхз кварц разделителната му способност е 10us та затова се мъча с CCP
|
| Сря Авг 09, 2006 4:36 pm |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Kой да ти чете внимателно че понякога при запис в CCP1CON си вдига флага за прекъсване и цял час се чудя защо ми дава само 4 мкс  . Сега го коригирах но пък ми отчита 2 пъти повече. Явно пак някое недоглеждане!
|
| Сря Авг 09, 2006 4:49 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
Друг е въпроса че като нулираш таймера вече не е и вярно (времето за влизане в прекъсване) меренето ти . milenjs за това в примерчето чистенето на флага съм го сложил най-накрая
|
| Сря Авг 09, 2006 5:19 pm |
|
 |
|
milenjs
Ранг: Форумен бог
Регистриран на: Сря Мар 08, 2006 2:12 pm Мнения: 2017 Местоположение: Котел
|
Добре де, къде бъркам, не ми измерва дължината на импулса а периода
|
| Сря Авг 09, 2006 5:26 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Еми кепчъра, доколкото разбирам, бачка само по един фронт. Аз за това казвам за компаратора, щото иначе не виждам как ще стане.
|
| Сря Авг 09, 2006 5:35 pm |
|
|