Отговори на тема  [ 20 мнения ]  Отиди на страница Предишна  1, 2
Capture модул при PIC 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Syrius-B, не си разбрал за какво питам.Ситуацията е следната:Пускаш таймера и кепчъра.Кепчъра си генерира прекъсване на всяко събитие.По някое време като ти дотрябва четеш буфера на кепчъра и си вземаш резултат без да те е грижа препълнил ли се е или не.Това е възможно,ако в прекъсването на кепчъра нулираш и таймера - НО се резултата не е верен.Въпроса е :Как може да го реализира човек този вариант-с нулиране на таймера в прекъсването на кепчъра и резултата да е верен - в противен случай има много съпътстващи операции,което ме мързи да правя.


Съб Яну 26, 2008 9:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Все още не разбирам, защо изобщо нулираш таймера.
Така със сигурност вкарваш грешка.
Всеки интервал ти е равен на разликата между показанието на таймера в момента и предишното.
При това точно


Съб Яну 26, 2008 1:30 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Всеки интервал ти е равен на разликата между показанието на таймера в момента и предишното - да в първия момент е така,но не и когато се препълни,т.е трябва да следя и флага на кепчъра,а исках да избегна това.Реших си проблема за момента,т.е на симулатора,ама като го сложа на желязото - ще видим какво се получава.


Съб Яну 26, 2008 1:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
Таймера не участва директно в измерването! Периода се мери по разликата на две последователни стойности от БУФЕРА на Кепчъра (които се вземат от тмр-а в момента на хващането). Така ,че трябва всяка нова стойност да се запазва ,за да не се забърше от следващата. Прекъсването на таймера се ползва само ако има много големи периоди, по-големи от едно превъртане на таймера. Поне при 16-ките е така, но предполагам, че и нагоре се е запазил тоя модел.


Съб Яну 26, 2008 7:49 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Ки4о, голям инат си! Имаш n-битов таймер и n-битов кепчър. Като n==n. Какво сега значи да се препълни кепчъра? При настъпването на еди какво си събитие моментната стойност на таймера се прехвърля в кепчъра, откъдето можеш да я изчетеш когато имаш време, стига само да е преди следващото събитие. То това и му е целия смисъл на кепчъра. Защото в момента на събитието може да отработваш друго прекъсване или кой знае какво реъл-тайм. Разликата от новата и предната стойност ти дава интервала между двете, даже и при препълване на таймера (еднократно естествено!). Как изважда ядрото? Смятай. Колко е 1 - 0xFE?
Така че препълване на таймера не те бърка. А какво разбираш под препълване на кепчъра даже и идея си нямам :?

P.S. А нулирането на таймера в прекъсването на кепчъра е тъпо. Ти приемаш че прекъсването настъпва веднага, но не е така. Най-малкото имаш запазване на разни регистри в стека. Нищо не ти гарантира колко време след събитието ще го обслужиш.


Пон Яну 28, 2008 11:30 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

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


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

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