реклама на сайте
подробности

 
 
> input capture mega8
ReM37
сообщение Nov 28 2006, 23:35
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 3-11-06
Пользователь №: 21 954



Нужно измерить длительность импульса. Но никак не понимаю как это сделать. Datasheet читал. Но все равно непонятно. sad.gif То есть понятно, что для этого надо использовать Timer1, но как настроить так, чтобы счет начался по нарастающему фронту, а заканчивался ро спадающему? Очень нужен пример на C...

Сообщение отредактировал ReM37 - Nov 28 2006, 23:37
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bezobraznic
сообщение Nov 29 2006, 01:06
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-05-05
Пользователь №: 5 441



Цитата(ReM37 @ Nov 29 2006, 00:35) *
Нужно измерить длительность импульса. Но никак не понимаю как это сделать. Datasheet читал. Но все равно непонятно. sad.gif То есть понятно, что для этого надо использовать Timer1, но как настроить так, чтобы счет начался по нарастающему фронту, а заканчивался ро спадающему? Очень нужен пример на C...


Вот держи!!! Длительность=Tf-Tr; Рабочий пример!!

interrupt [TIM1_CAPT] void tim1_capt_isr(){
static register unsigned int temp;

temp = ICR1L; //Read low byte first (important)
temp |= (unsigned int)ICR1H << 8; //Read high byte and shift into top byte

if (CAPTURE_FRONT_F){ //обработка переднего фронта импульса тока
TCCR1B = 0b10000001; //switch to falling edge
CAPTURE_FRONT_F = 0;
Tr=temp+4; //компенсация
} //if
else { //обработка заднего фронта импульса тока
TCCR1B = 0b11000001; //switch to rising edge
CAPTURE_FRONT_F = 1;
Tf=temp-4; //компенсация
} //else
}//tim1_capt_isr()
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016