На данном этапе некритично, но интересно, как можно формировать задержки длительностью в единицы мкс.
На данный момент используется:
Код
#define _delay_us(x) __delay_cycles(x*F_CPU/1000000)
на частоте
Код
#define F_CPU 3686400UL
просто исполняю следующий код и смотрю за сигналом
Код
DDRD |= (1 << PD6);
while (1)
{
PORTD |= ( 1 << PD6 );
_delay_us(5);
PORTD &= ~( 1 << PD6 );
_delay_us(1);
}
на уровне десятков мкс работает нормально, 5 мкс растягиваются до 5,4 мкс а 1 мкс - до 1,85 мкс
Если работать через прерывания таймера - думается мне, обработка не даст большей выгоды. Или я не прав? Как вариант, конечно, увеличивать частоту кварца...