2015-04-02 1 views
0

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

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 устанавливает частоту до 533Hz, и OCR1A является цикл ; Я меняю это на протяжении всего моего программного обеспечения, поскольку он предназначен для управления двигателем постоянного тока. То, что я хочу сделать дальше, находится на каждом положительном фронте 533 Гц, чтобы запускать и прерывать. Я попытался использовать TIMSK1, но не мог заставить его работать. Кто-нибудь знает, как запрограммировать это? Спасибо

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^