Доброго времени суток. имеются 2 16-ти битных таймера (мега64). Задача - организовать генерацию импульсов с этих таймеров так, чтобы импульсы со 2-го таймера генерировались с задаваемым сдвигом (величина сдвига передается по усарту) относительно импульсов первого. Импульсы могут быть как со скважностью 2 так и с настраиваемой длительностью импульса (соответственно таймеры в режиме по совпадению)
Я сделал так:
Генерацию импульсов описывать не стал, всё работает, однако никакого сдвига по импульсом не наблюдается, в чём тут может быть косяк?
Раздел: AVR
Я сделал так:
volatile int delay=0; //задаваемый сдвиг
volatile int tempdelay=0; // переменная для предыдущего сдвига
ISR (TIMER1_COMPA_vect)
{
...Генерация импульсов...
if (delay!=tempdelay) //если переменная delay изменилась то
{
OCR3A=OCR1A-tempdelay+delay; //отнимаем предыдущий сдвиг и прибавляем новый, т.е. получаем импульс большей формы на требуемый сдвиг
tempdelay=delay;
}
}
ISR (TIMER3_COMPA_vect)
{
...Генерация импульса со сдвигом...
OCR3A=OCR1A; //восстанавливаем значение ширины импульса
}
Генерацию импульсов описывать не стал, всё работает, однако никакого сдвига по импульсом не наблюдается, в чём тут может быть косяк?
Раздел: AVR