Запитване за Pulse Width

P

Pete

Guest
Поздравления за всички:

Аз съм експериментират по измерване на единичен импулс и измерената стойност показва в двоичен, както показва в portd използват 8 светодиоди.Разбира се, аз бях таймер е 16BIT, но аз не знам още как да го покажете в 16 светодиода използва 2 порта.Също така, на импулса вход аз е цяло число или стойност цяло число от 1usec да 50usec.
Какво става код ми по-долу?Аз очаквам, че ако въведе 1usec пулс, светодиода ще прочетете 00000001, в продължение на 2 usec 00000010, в продължение на 3 usec 00000011, за 4usec
00000100 и др ..Той не се показва по този начин и съм объркан как да го коригира, или ми код не е наред.Нуждаете се от вашата помощ / коментари.Благодаря .../ / Няма прекъсване метод

дълго pulse_width;

Основните ()
(
trisb0 = 1; / / да portb0 входяща
trisd = 0x00; / / да portd изход
portd = 0;
докато (1)
(
setup_timer_1 (T1_DISABLED);
set_timer1 (0); / / до преливане в 51us
докато (! вход (PIN_B0));
setup_timer_1 (T1_INTERNAL);
докато (вход (PIN_B0));
setup_timer_1 (T1_DISABLED);
pulse_width = get_timer1 ();
PORTD = pulse_width;
)
)

 
здрасти

Мисля, че този проблем, поради несъответствие с честотата на използване Ур кристал осцилатор с честота U, използвани в кода или период от време от 1us не се възприема от Ур око, за да видите промените в fractilon секунди
, така увеличаване на забавяне, така че можете да гледате на промените

 
Използвам 20MHZ часовник.С моя обхват на вложените в usecs, светодиодите са осветени, но на двоичната стойност не е правилна, съответстващи на импулса Имам въведена.
Така ми е проблема или ми код е грешен или аз правилния код, но не са разработвани правилно да се покаже правилно четене в двоичен.Аз разбирам, за всеки ред от код, има известно забавяне.

 

Welcome to EDABoard.com

Sponsor

Back
Top