Atmega2560 настраивает ШИМ и прерывает на положительном фронте

Я пытаюсь сделать 2 операции на одном таймере: ШИМ и прерывание на положительном фронте. Я могу заставить оба работать индивидуально, но не могу заставить их работать вместе. Я использую чип atmega2560 на плате Arduino и пытаюсь сделать это на Timer1, и это код, который выполняет ШИМ:

TCCR1A = 0;
TCCR1B = 0;
TCCR1A |= (1<<WGM11)|(1<<COM1A1)|(1<<COM1B1);
TCCR1B |= (1<<WGM12)|(1<<WGM13)|(1<<CS10);
ICR1 = 29999;
OCR1A = 0;
OCR1B = 0;

ICR1 устанавливает частоту около 533 Гц, а OCR1A является рабочим циклом; Я изменяю это в остальной части моего программного обеспечения, так как оно предназначено для управления двигателем постоянного тока. Что я хочу сделать дальше, так это на каждом положительном фронте 533 Гц, это запуск и прерывание. Я пытался использовать TIMSK1, но не смог заставить его работать. Кто-нибудь знает, как запрограммировать это? Спасибо

0

Решение

Вы должны предоставить индивидуальный код для обнаружения положительного фронта и pwm, поскольку вы сказали, что можете заставить их работать по отдельности. Было бы легче увидеть, что вы делаете, и почему они не работают вместе, а не дают нам работать. Реализация ШИМ и прерываний зависит от среды и вашего ic, но общие алгоритмы те же. Скорее всего, что-то незначительное, что вы упускаете из виду в своем коде, поэтому я бы добавил это, чтобы получить больше ответов.

0

Другие решения