Atmega8 использование HC-SR05 без прерываний
Использую мегу8, не могу использовать прерывания int0 и int1, как читать длину импульса с датчика?
- Реклама
Захват от таймера и это лучше int.
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3510365#p3510365"]Захват от таймера[/uquote]
Как это реализовать?
Как это реализовать?
Я не очень по-русски выразился
.
Почитайте про режимы таймера, в частности режим захват.
Почитайте про режимы таймера, в частности режим захват.
Не фурычит, вот так инициализирую
Вот так отлавливаю
То есть в pulse должно лежать сколько микро секунд был импульс, но датчик вообще не адекватно работает, хотя на осциллографе всё вроде как хорошо
Код: Выделить всё
DDRB |= (1<<DDRB1);
TCCR1B |= (1<<ICNC1)|(1<<CS11)|(1<<CS10);
TIMSK |= (1<<TICIE1);
sei();Код: Выделить всё
ISR(TIMER1_CAPT_vect)
{
static int tickStart = 0, tickFinish = 0;
if(tickStart == 0)
tickStart = ICR1;
else
{
tickFinish = ICR1;
pulse = (tickFinish-tickStart)*4; // tick = 0.000004s = 0.004ms = 4us
tickFinish = tickStart = 0;
cli();
}
}- Реклама
Код: Выделить всё
#define MAX_PULSE 1000 /* тут надо указать предельно возможную длительность импульса в тиках таймера */
ISR(TIMER1_CAPT_vect){
static unsigned int tickStart, tickFinish;
tickFinish = ICR1;
pulse = tickFinish-tickStart;
if(pulse > MAX_PULSE) pulse = 0x10000-pulse;
pulse *= 4;// tick = 0.000004s = 0.004ms = 4us
tickStart = tickFinish;
}переводить тики таймера в микросекунды - обязательно? все расчеты в тиках таймера вести в программе не разумнее ли?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
daaar
PB0/ICP1- лапа для захвата. Не понимаю в этих кыржиках, но не вижу настройки захвата на фронт в начале импульса и захват спада импульса в конце переключением бита ICES1 регистра TCCR1B
PB0/ICP1- лапа для захвата. Не понимаю в этих кыржиках, но не вижу настройки захвата на фронт в начале импульса и захват спада импульса в конце переключением бита ICES1 регистра TCCR1B
Проще было поставить мегу 328, что и сделал
Там же никаких глобальных отличий в плане архитектуры
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3516515#p3516515"]Там же никаких глобальных отличий в плане архитектуры[/uquote]
Есть общее прерывание для ножек PCINT с ним жить проще
Есть общее прерывание для ножек PCINT с ним жить проще



