Untitled
unknown
c_cpp
3 years ago
1.1 kB
7
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...