Отговори на тема  [ 30 мнения ]  Отиди на страница 1, 2  Следваща
16F877 и измерване на продължителност на импулс? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 16F877 и измерване на продължителност на импулс?
Дайте някаква идея за измерване на продължителност на импулс - от качващ до падащ фронт. Кофтито е че порт В е зает и не може да се ползва, там щеше да стане лесно с прекъсване при промяна на състоянието на който и да е пин от порт :(


Сря Авг 09, 2006 12:02 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Не е табу, така си измервам периода на импулса, сега ми трябва да меря ширината на импулса, не се сещам как и дали може да се стартира кепчара по качващ фрон и да се спре/отчете таймер 1 при падащ фронт. Ако някой знае - да драсне нещо. Благодаря!


Сря Авг 09, 2006 12:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 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
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
даже не е нужно да нулира таймера помни стойноста някаде сменяш режима от нарастващ на падащ фронт на следващото прекъсване четеш новата стойност и вадиш от нея старата


Сря Авг 09, 2006 1:21 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
OK, ще го пробвам ама без прекъсване и ще обадя дали е станало!


Сря Авг 09, 2006 1:42 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Пример4е на Ц :)


Прикачени файлове:
ccp.c [716 Байта]
271 пъти
Сря Авг 09, 2006 2:05 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Чет Ное 25, 2004 3:42 pm
Мнения: 913
Мнение 
Примерче на протон 8)
Variable = PULSIN Pin , State


Сря Авг 09, 2006 3:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Аналогов компаратор нямаш ли свободен?


Сря Авг 09, 2006 3:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Реконструктор написа:
Аналогов компаратор нямаш ли свободен?

За тая цел се ползват кепчъри, щото става автоматично. С компаратор пак ще стане, ама с малко повече играчка :) .
И е по добре да нулира таймера, за да не смята после повече, още повече пък на следващия качващ фронт вече му дава и периода. Така с един кепчър - два заека 8) .


Сря Авг 09, 2006 4:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Румене, с Pulsin става най-лесно, но при 4 мхз кварц разделителната му способност е 10us та затова се мъча с CCP


Сря Авг 09, 2006 4:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Kой да ти чете внимателно че понякога при запис в CCP1CON си вдига флага за прекъсване и цял час се чудя защо ми дава само 4 мкс :( . Сега го коригирах но пък ми отчита 2 пъти повече. Явно пак някое недоглеждане!


Сря Авг 09, 2006 4:49 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Друг е въпроса че като нулираш таймера вече не е и вярно (времето за влизане в прекъсване) меренето ти . milenjs за това в примерчето чистенето на флага съм го сложил най-накрая


Сря Авг 09, 2006 5:19 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Добре де, къде бъркам, не ми измерва дължината на импулса а периода :?

Код:
      CCP1CON = %00000101               ' Enable the CCP1 capture, falling edge
       T1CON = %00000001               ' TMR1 prescale=1, and turn it on (1uS per count)     
       PIR1.2 = 0                           ' Clear capture flag
       PIR1.0 = 0
       While PIR1.2 = 0 : Wend                                 ' Wait here until captured         
            TMR1H=0
            TMR1L=0                              
            PIR1.0 = 0
            CCP1CON = %00000100
            PIR1.2 = 0                                                       ' Clear capture flag
        While PIR1.2 = 0 : Wend
         TimerL = CCPR1L               ' Store the captured value in period variable
         TimerM = CCPR1H


Сря Авг 09, 2006 5:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Еми кепчъра, доколкото разбирам, бачка само по един фронт. Аз за това казвам за компаратора, щото иначе не виждам как ще стане.


Сря Авг 09, 2006 5:35 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 30 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

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


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

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