Untitled
unknown
c_cpp
3 years ago
1.1 kB
5
Indexable
#include <PWM.h>
int PIN_1 = 9;  // Timer 1 is 16-bit, use for 1->1KHz
int PIN_2 = 3;  // Timer 2 is 8-bit, use for 2.5KHz
int config_pin(int p, uint32_t frequency, uint8_t duty)
{
  Serial.print("Pin: "); Serial.print(p); Serial.print(" Freq: "); Serial.print(frequency);
  
  uint8_t timer = digitalPinToTimer(p);
  if(timer == TIMER0B) {
    Serial.print(" Timer: 0");
  } else if(timer == TIMER1A || timer == TIMER1B) {
    Serial.println(" Timer: 1");
  } else if (timer == TIMER2B) {
    Serial.println(" Timer: 2");
  } else{
    Serial.println(" Timer: ???");
  }
  if (!SetPinFrequencySafe(p, frequency)) {
    Serial.print("Failed to initialize Pin ");
    Serial.println(p);
    return false;
  }
  pwmWrite(p, duty);
  return true;
}
void setup()
{
 
  Serial.begin(9600);
  while (!Serial) {
      
  }
  
  // Initialize all timers except for 0, which is used for time keeping functions
  InitTimersSafe(); 
  if (!config_pin(PIN_1, 1, 76)) { //1Hz, 300uS
    while (1) delay(1000);
  }
  if (!config_pin(PIN_2, 2500, 127)) { // 2.5KHz, 200uS
    while (1) delay(1000);
  }
}
void loop()
{ 
  delay(30);      
}Editor is loading...