ШИМ-выхода нет

pwm

Недавно я сделал проект, в котором выходные данные исходят из разницы между чтением данных и эталонным значением. Он работает в моей симуляции Proteus, но на моем реальном устройстве нет выхода PWM.

Вот мой листинг кода

for (z = 0; z <= output2; z++)
  if (output2 >= 30) {
   toggle == HIGH; 
   en = !en;
  }
if (en == true) {
  OCR1A = map(z, 0, 255, 0, ICR1); ;
  OCR1B = 0;
} else {
  OCR1A=0; 
  OCR1B = map(z, 0, 255, 0, ICR1);
}
if (output2 < 30) {
  en = !en;
  analogWrite(9, 0);
  analogWrite(10, 0);
}

, 👍-1

Обсуждение

Чего вы хотите добиться, вызвав map()? Вы знаете, что такое OCR1A/B и как работает функция analogWrite()?, @Sim Son

я видел из другой программы, которая предназначена для настройки несущей частоты, поэтому, если icr1 = 1600, 0-255 = 0-10 кГц, cmiiw,, @john caren


1 ответ


1

Я не знаю, чего вы пытаетесь добиться, но вы записываете константу 0 в аналоговый выход.

if (output2 < 30) {
  en = !en;
  analogWrite(9, 0);
  analogWrite(10, 0);
}

Процитировать документ analogWrite()

.

Синтаксис

аналоговая запись(вывод, значение)

Параметры

пин: пин для записи. Допустимые типы данных: int.

значение: рабочий цикл: от 0 (всегда выключен) до 255 (всегда включен). Допустимые типы данных: int

Если вы хотите увидеть вывод, вам нужно указать значение от 0 до 255.

,

да, это намеренно дает 0 циклов, когда выход меньше 30, @john caren