Таймер 1 Arduino — создаем 2 таймера

Я пытаюсь вывести 2 отдельные частоты, используя 2 выходных контакта от Arduino, используя библиотеку Timer 1. Фрагмент кода показан ниже.

void setup() 
{
 Serial.begin(9600);
 pinMode(button,INPUT_PULLUP);
 pinMode(button2,INPUT_PULLUP);
 pinMode(sig_out, OUTPUT);
 pinMode(sig_out2, OUTPUT);
Timer1.initialize(1000);
Timer1.pwm(sig_out,512,period);
Timer1.pwm(sig_out2,512,period2); 
}

Проблема в том, что то, как я это написал, имеет смысл, поскольку я инициализировал 2 выхода и 2 входа, но «период» перезаписывается, поскольку есть 1 таймер, и я не знаю, как это остановить. Я думал о том, чтобы сохранить их в переменных (например, 'T1=' 'T2='), но все равно будет использовать один и тот же таймер.

Я просто хотел узнать, есть ли способ использовать 2 таймера, чтобы Arduino выдавал частоты отдельно.

, 👍1

Обсуждение

@Jack B Как бы я использовал другие?, @Neamus


1 ответ


Лучший ответ:

1

Библиотека Timer1 поддерживает только... Timer 1! Так что у вас есть только один наличие аппаратного таймера. Если вы используете Arduino Uno или что-то еще аналогично, у вас есть пара других таймеров. Однако, в отличие от Timer 1 — 16-битный таймер, остальные только 8-битные. Этот означает, что они очень ограничены в диапазоне и точности частоты, которые они могут генерировать. Если у вас есть Arduino Mega, то вы есть несколько других доступных 16-битных таймеров. Возможно, вы захотите найти библиотека под названием Timer3, которая должна работать так же, как Timer1, при использовании 16-битный таймер 3.

Если вы не найдете подходящей библиотеки, вы все равно сможете сгенерируйте два сигнала, используя только Timer 1. Вот хитрость:

  • установите для обоих выходов ШИМ значение "включать при сравнении соответствия"
  • включить оба прерывания сравнения совпадений
  • в каждом из этих ISR продвигать регистр совпадения сравнения на полшага. период соответствующего сигнала.

Для этого вам нужно вникнуть в низкоуровневые детали того, как таймер действительно работает. Рекомендую начать с прочтения Учебное пособие по Таймеры и счетчики, автор Ник Гэммон. Найдите время, чтобы прочитать и изучить это. Это не та тема, которую вы сможете освоить всего за пару часов.

,