Guten Abend/Tag zusammen,
hier mal ein "PWM tester" fuer den Arduino Uno und Mega2560.
Hab diesen hier erstellt, da ich für meine kleine Schrittmotoren Bibliothek, genauer gesagt
für Microstepping, Pins mit der selben PWM Frequenz brauchte.
/*PWM tester UNO and MEGA2560 by grillgemuese 08.2018
-http://playground.arduino.cc/Main/TimerPWMCheatsheet
-TCCR0B [timer 0] will change (millis(),delay(),...)
----For Arduino Uno R3----
timer 0x01 0x02 0x03 0x04...
[0 62500 7812 976 244] (pin 5, 6)
1 31250 3906 488 122 (pin 9, 10)
2 31250 3906 976 488 (pin 3, 11)
----For Arduino Mega2560----
timer 0x01 0x02 0x03 0x04...
[0 62500 7812 976 244] (pin 13, 4)
1 31250 3906 488 122 (pin 12, 11)
2 31250 3906 976 488 (pin 10, 9)
3 31250 3906 488 122 (pin 5, 3, 2)
4 31250 3906 488 122 (pin 8, 7, 6)
5 31250 3906 488 122 (pin 44, 45, 46)
----------------------------
31250(to fast for semiconductor), 3906(good but noisy), 488(ok but slow)
*/
const uint8_t PWM_Signal = 127; //0-255
#if defined(ARDUINO_AVR_UNO)
const uint8_t PWM_Pin[6] = {3, 5, 6, 9, 10, 11};
#elif defined(ARDUINO_AVR_MEGA2560)
const uint8_t PWM_Pin[15] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46};
#endif
void setup()
{
//------------timer setting PWM frequency------------
#if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_UNO)
//TCCR0B = (TCCR0B & 0b11111000) | 0x03; //0x03 976.5Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x03; //0x03 490.2Hz
TCCR2B = (TCCR2B & 0b11111000) | 0x04; //0x03 976.5Hz
#endif
#if defined(ARDUINO_AVR_MEGA2560)
//---------------------MEGA 2560---------------------
TCCR3B = (TCCR3B & 0b11111000) | 0x03; //0x03 490.2Hz
TCCR4B = (TCCR4B & 0b11111000) | 0x03; //0x03 490.2Hz
TCCR5B = (TCCR5B & 0b11111000) | 0x03; //0x03 490.2Hz
#endif
//---------------------------------------------------
for (uint8_t o = 0; o < sizeof(PWM_Pin); o++) pinMode(PWM_Pin[o], OUTPUT);
for (uint8_t a = 0; a < sizeof(PWM_Pin); a++) analogWrite(PWM_Pin[a], PWM_Signal);
}
void loop() {}
Gruß
grillgemuese