diff --git a/examples/PWM_Basic/PWM_Basic.ino b/examples/PWM_Basic/PWM_Basic.ino index c9f3256..a02ca08 100644 --- a/examples/PWM_Basic/PWM_Basic.ino +++ b/examples/PWM_Basic/PWM_Basic.ino @@ -1,6 +1,6 @@ /**************************************************************************************************************************** PWM_Basic.ino - + For AVR-based boards (UNO, Nano, Mega, 32U4, 16U4, etc. ) Written by Khoi Hoang @@ -24,20 +24,20 @@ //////////////////////////////////////////// // For Mega (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46) - Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 - Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 - Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 - Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 - Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 - Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 - Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 - Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 - Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 - Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 - Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 - Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 - Pin 44 => TIMER5C // PL 5 ** 44 ** D44 - Pin 45 => TIMER5B // PL 4 ** 45 ** D45 + Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 + Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 + Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 + Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 + Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 + Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 + Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 + Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 + Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 + Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 + Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 + Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 + Pin 44 => TIMER5C // PL 5 ** 44 ** D44 + Pin 45 => TIMER5B // PL 4 ** 45 ** D45 Pin 46 => TIMER5A // PL 3 ** 46 ** D46 //////////////////////////////////////////// // For 32u4 (3, 5, 6, 9, 10, 11, 13) @@ -76,13 +76,13 @@ //#define pinToUse 46 // Timer5A on Mega //#define pinToUse 45 // Timer5B on Mega //#define pinToUse 44 // Timer5C on Mega - -#elif ( PWM_USING_ATMEGA_32U4 ) + +#elif ( PWM_USING_ATMEGA_32U4 ) // Pins tested OK on 32u4 //#define pinToUse 5 // Timer3A on 32u4 #define pinToUse 9 // Timer1A on 32u4 //#define pinToUse 10 // Timer1B on 32u4 - + #else // Pins tested OK on Nano / UNO @@ -103,21 +103,21 @@ void setup() Serial.print(F("\nStarting PWM_Basic on ")); Serial.println(BOARD_NAME); Serial.println(AVR_PWM_VERSION); - - //assigns PWM frequency of 20 KHz and a duty cycle of 0% - PWM_Instance = new AVR_PWM(pinToUse, 20000, 0); + + //assigns PWM frequency of 20 KHz and a duty cycle of 0% + PWM_Instance = new AVR_PWM(pinToUse, 20000, 0); } void loop() { - delay(10000); - frequency = 20000; - dutyCycle = 90; + delay(10000); + frequency = 20000; + dutyCycle = 90; - PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); + PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); - delay(10000); - dutyCycle = 10; + delay(10000); + dutyCycle = 10; - PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); + PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); } diff --git a/examples/PWM_DynamicDutyCycle/PWM_DynamicDutyCycle.ino b/examples/PWM_DynamicDutyCycle/PWM_DynamicDutyCycle.ino index 27422a7..25d0156 100644 --- a/examples/PWM_DynamicDutyCycle/PWM_DynamicDutyCycle.ino +++ b/examples/PWM_DynamicDutyCycle/PWM_DynamicDutyCycle.ino @@ -23,20 +23,20 @@ //////////////////////////////////////////// // For Mega (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46) - Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 - Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 - Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 - Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 - Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 - Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 - Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 - Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 - Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 - Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 - Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 - Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 - Pin 44 => TIMER5C // PL 5 ** 44 ** D44 - Pin 45 => TIMER5B // PL 4 ** 45 ** D45 + Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 + Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 + Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 + Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 + Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 + Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 + Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 + Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 + Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 + Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 + Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 + Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 + Pin 44 => TIMER5C // PL 5 ** 44 ** D44 + Pin 45 => TIMER5B // PL 4 ** 45 ** D45 Pin 46 => TIMER5A // PL 3 ** 46 ** D46 //////////////////////////////////////////// // For 32u4 (3, 5, 6, 9, 10, 11, 13) @@ -78,14 +78,14 @@ //#define pinToUse 46 // Timer5A on Mega //#define pinToUse 45 // Timer5B on Mega //#define pinToUse 44 // Timer5C on Mega - -#elif ( PWM_USING_ATMEGA_32U4 ) + +#elif ( PWM_USING_ATMEGA_32U4 ) // Pins tested OK on 32u4 ////#define pinToUse 3 // Timer0B on 32u4 //#define pinToUse 5 // Timer3A on 32u4 #define pinToUse 9 // Timer1A on 32u4 //#define pinToUse 10 // Timer1B on 32u4 - + #else // Pins tested OK on Nano / UNO @@ -118,56 +118,56 @@ void printPWMInfo(AVR_PWM* PWM_Instance) void setup() { - Serial.begin(115200); + Serial.begin(115200); - while (!Serial); + while (!Serial); - delay(100); + delay(100); - Serial.print(F("\nStarting PWM_DynamicDutyCycle on ")); - Serial.println(BOARD_NAME); - Serial.println(AVR_PWM_VERSION); + Serial.print(F("\nStarting PWM_DynamicDutyCycle on ")); + Serial.println(BOARD_NAME); + Serial.println(AVR_PWM_VERSION); - frequency = 5000; + frequency = 5000; //frequency = 70.0f; - - PWM_Instance = new AVR_PWM(pinToUse, frequency, 50); - if (PWM_Instance) - { - if (!PWM_Instance->setPWM()) + PWM_Instance = new AVR_PWM(pinToUse, frequency, 50); + + if (PWM_Instance) + { + if (!PWM_Instance->setPWM()) { Serial.println(F("Stop here")); - + // stop here while (true) delay(1000); } - } + } - Serial.println(dashLine); + Serial.println(dashLine); } void loop() -{ - //frequency = 10000.0f; +{ + //frequency = 10000.0f; frequency = 1000.0f; - - dutyCycle = 90.0f; - Serial.print(F("Change PWM DutyCycle to ")); - Serial.println(dutyCycle); - PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); + dutyCycle = 90.0f; - printPWMInfo(PWM_Instance); + Serial.print(F("Change PWM DutyCycle to ")); + Serial.println(dutyCycle); + PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); - delay(5000); - dutyCycle = 10.0f; + printPWMInfo(PWM_Instance); + + delay(5000); + dutyCycle = 10.0f; - Serial.print(F("Change PWM DutyCycle to ")); - Serial.println(dutyCycle); - PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); - printPWMInfo(PWM_Instance); + Serial.print(F("Change PWM DutyCycle to ")); + Serial.println(dutyCycle); + PWM_Instance->setPWM(pinToUse, frequency, dutyCycle); + printPWMInfo(PWM_Instance); delay(5000); } diff --git a/examples/PWM_DynamicDutyCycle_Int/PWM_DynamicDutyCycle_Int.ino b/examples/PWM_DynamicDutyCycle_Int/PWM_DynamicDutyCycle_Int.ino index a0118eb..d11d465 100644 --- a/examples/PWM_DynamicDutyCycle_Int/PWM_DynamicDutyCycle_Int.ino +++ b/examples/PWM_DynamicDutyCycle_Int/PWM_DynamicDutyCycle_Int.ino @@ -23,20 +23,20 @@ //////////////////////////////////////////// // For Mega (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46) - Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 - Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 - Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 - Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 - Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 - Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 - Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 - Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 - Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 - Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 - Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 - Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 - Pin 44 => TIMER5C // PL 5 ** 44 ** D44 - Pin 45 => TIMER5B // PL 4 ** 45 ** D45 + Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 + Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 + Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 + Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 + Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 + Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 + Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 + Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 + Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 + Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 + Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 + Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 + Pin 44 => TIMER5C // PL 5 ** 44 ** D44 + Pin 45 => TIMER5B // PL 4 ** 45 ** D45 Pin 46 => TIMER5A // PL 3 ** 46 ** D46 //////////////////////////////////////////// // For 32u4 (3, 5, 6, 9, 10, 11, 13) @@ -75,13 +75,13 @@ //#define pinToUse 46 // Timer5A on Mega //#define pinToUse 45 // Timer5B on Mega //#define pinToUse 44 // Timer5C on Mega - -#elif ( PWM_USING_ATMEGA_32U4 ) + +#elif ( PWM_USING_ATMEGA_32U4 ) // Pins tested OK on 32u4 //#define pinToUse 5 // Timer3A on 32u4 #define pinToUse 9 // Timer1A on 32u4 //#define pinToUse 10 // Timer1B on 32u4 - + #else // Pins tested OK on Nano / UNO @@ -114,50 +114,50 @@ void printPWMInfo(AVR_PWM* PWM_Instance) void setup() { - Serial.begin(115200); + Serial.begin(115200); - while (!Serial); + while (!Serial); - delay(100); + delay(100); - Serial.print(F("\nStarting PWM_DynamicDutyCycle_Int on ")); - Serial.println(BOARD_NAME); - Serial.println(AVR_PWM_VERSION); + Serial.print(F("\nStarting PWM_DynamicDutyCycle_Int on ")); + Serial.println(BOARD_NAME); + Serial.println(AVR_PWM_VERSION); - frequency = 1000; + frequency = 1000; - PWM_Instance = new AVR_PWM(pinToUse, frequency, 50); + PWM_Instance = new AVR_PWM(pinToUse, frequency, 50); - if (PWM_Instance) - { - PWM_Instance->setPWM(); - } + if (PWM_Instance) + { + PWM_Instance->setPWM(); + } - Serial.println(dashLine); + Serial.println(dashLine); } void loop() { - delay(5000); + delay(5000); - frequency = 5000; + frequency = 5000; - // 50% dutyCycle = (real_dutyCycle * 65536) / 100 - dutyCycle = 32768; + // 50% dutyCycle = (real_dutyCycle * 65536) / 100 + dutyCycle = 32768; - Serial.print(F("Change PWM DutyCycle to (%) ")); + Serial.print(F("Change PWM DutyCycle to (%) ")); Serial.println((float) dutyCycle * 100 / 65536); - PWM_Instance->setPWM_Int(pinToUse, frequency, dutyCycle); + PWM_Instance->setPWM_Int(pinToUse, frequency, dutyCycle); - printPWMInfo(PWM_Instance); + printPWMInfo(PWM_Instance); - delay(5000); + delay(5000); - // 20% dutyCycle = (real_dutyCycle * 65536) / 100 - dutyCycle = 13107; + // 20% dutyCycle = (real_dutyCycle * 65536) / 100 + dutyCycle = 13107; - Serial.print(F("Change PWM DutyCycle to (%) ")); - Serial.println((float) dutyCycle * 100 / 65536); - PWM_Instance->setPWM_Int(pinToUse, frequency, dutyCycle); - printPWMInfo(PWM_Instance); + Serial.print(F("Change PWM DutyCycle to (%) ")); + Serial.println((float) dutyCycle * 100 / 65536); + PWM_Instance->setPWM_Int(pinToUse, frequency, dutyCycle); + printPWMInfo(PWM_Instance); } diff --git a/examples/PWM_DynamicFreq/PWM_DynamicFreq.ino b/examples/PWM_DynamicFreq/PWM_DynamicFreq.ino index 267fe3d..8ea0675 100644 --- a/examples/PWM_DynamicFreq/PWM_DynamicFreq.ino +++ b/examples/PWM_DynamicFreq/PWM_DynamicFreq.ino @@ -23,20 +23,20 @@ //////////////////////////////////////////// // For Mega (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46) - Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 - Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 - Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 - Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 - Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 - Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 - Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 - Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 - Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 - Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 - Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 - Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 - Pin 44 => TIMER5C // PL 5 ** 44 ** D44 - Pin 45 => TIMER5B // PL 4 ** 45 ** D45 + Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 + Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 + Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 + Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 + Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 + Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 + Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 + Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 + Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 + Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 + Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 + Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 + Pin 44 => TIMER5C // PL 5 ** 44 ** D44 + Pin 45 => TIMER5B // PL 4 ** 45 ** D45 Pin 46 => TIMER5A // PL 3 ** 46 ** D46 //////////////////////////////////////////// // For 32u4 (3, 5, 6, 9, 10, 11, 13) @@ -75,13 +75,13 @@ //#define pinToUse 46 // Timer5A on Mega //#define pinToUse 45 // Timer5B on Mega //#define pinToUse 44 // Timer5C on Mega - -#elif ( PWM_USING_ATMEGA_32U4 ) + +#elif ( PWM_USING_ATMEGA_32U4 ) // Pins tested OK on 32u4 //#define pinToUse 5 // Timer3A on 32u4 #define pinToUse 9 // Timer1A on 32u4 //#define pinToUse 10 // Timer1B on 32u4 - + #else // Pins tested OK on Nano / UNO @@ -113,44 +113,44 @@ void printPWMInfo(AVR_PWM* PWM_Instance) void setup() { - Serial.begin(115200); + Serial.begin(115200); - while (!Serial); + while (!Serial); - delay(100); + delay(100); - Serial.print(F("\nStarting PWM_DynamicFreq on ")); - Serial.println(BOARD_NAME); - Serial.println(AVR_PWM_VERSION); + Serial.print(F("\nStarting PWM_DynamicFreq on ")); + Serial.println(BOARD_NAME); + Serial.println(AVR_PWM_VERSION); - frequency = 10000.0f; - PWM_Instance = new AVR_PWM(pinToUse, frequency, 50.0f); + frequency = 10000.0f; + PWM_Instance = new AVR_PWM(pinToUse, frequency, 50.0f); - if (PWM_Instance) - { - PWM_Instance->setPWM(); - } + if (PWM_Instance) + { + PWM_Instance->setPWM(); + } - Serial.println(dashLine); + Serial.println(dashLine); } void loop() { - delay(5000); + delay(5000); - frequency = 20000.0f; + frequency = 20000.0f; - Serial.print(F("Change PWM Freq to ")); - Serial.println(frequency); - PWM_Instance->setPWM(pinToUse, frequency, 50.0f); - printPWMInfo(PWM_Instance); + Serial.print(F("Change PWM Freq to ")); + Serial.println(frequency); + PWM_Instance->setPWM(pinToUse, frequency, 50.0f); + printPWMInfo(PWM_Instance); - delay(5000); + delay(5000); - frequency = 10000.0f; + frequency = 10000.0f; - Serial.print(F("Change PWM Freq to ")); - Serial.println(frequency); - PWM_Instance->setPWM(pinToUse, frequency, 50.0f); - printPWMInfo(PWM_Instance); + Serial.print(F("Change PWM Freq to ")); + Serial.println(frequency); + PWM_Instance->setPWM(pinToUse, frequency, 50.0f); + printPWMInfo(PWM_Instance); } diff --git a/examples/PWM_Multi/PWM_Multi.ino b/examples/PWM_Multi/PWM_Multi.ino index db40472..54a6593 100644 --- a/examples/PWM_Multi/PWM_Multi.ino +++ b/examples/PWM_Multi/PWM_Multi.ino @@ -23,20 +23,20 @@ //////////////////////////////////////////// // For Mega (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 44, 45, 46) - Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 - Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 - Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 - Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 - Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 - Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 - Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 - Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 - Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 - Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 - Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 - Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 - Pin 44 => TIMER5C // PL 5 ** 44 ** D44 - Pin 45 => TIMER5B // PL 4 ** 45 ** D45 + Pin 2 => TIMER3B // PE 4 ** 2 ** PWM2 + Pin 3 => TIMER3C // PE 5 ** 3 ** PWM3 + Pin 4 => TIMER0B // PG 5 ** 4 ** PWM4 + Pin 5 => TIMER3A // PE 3 ** 5 ** PWM5 + Pin 6 => TIMER4A // PH 3 ** 6 ** PWM6 + Pin 7 => TIMER4B // PH 4 ** 7 ** PWM7 + Pin 8 => TIMER4C // PH 5 ** 8 ** PWM8 + Pin 9 => TIMER2B // PH 6 ** 9 ** PWM9 + Pin 10 => TIMER2A // PB 4 ** 10 ** PWM10 + Pin 11 => TIMER1A // PB 5 ** 11 ** PWM11 + Pin 12 => TIMER1B // PB 6 ** 12 ** PWM12 + Pin 13 => TIMER0A // PB 7 ** 13 ** PWM13 + Pin 44 => TIMER5C // PL 5 ** 44 ** D44 + Pin 45 => TIMER5B // PL 4 ** 45 ** D45 Pin 46 => TIMER5A // PL 3 ** 46 ** D46 //////////////////////////////////////////// // For 32u4 (3, 5, 6, 9, 10, 11, 13) @@ -62,40 +62,40 @@ #include "AVR_PWM.h" #if ( PWM_USING_ATMEGA2560 ) - // Pins tested OK in Mega - //#define pinToUse 12 // Timer1B on Mega - //#define pinToUse 11 // Timer1A on Mega - //#define pinToUse 9 // Timer2B on Mega - //#define pinToUse 2 // Timer3B on Mega - //#define pinToUse 3 // Timer3C on Mega - //#define pinToUse 5 // Timer3A on Mega - //#define pinToUse 6 // Timer4A on Mega - //#define pinToUse 7 // Timer4B on Mega - //#define pinToUse 8 // Timer4C on Mega - //#define pinToUse 46 // Timer5A on Mega - //#define pinToUse 45 // Timer5B on Mega - //#define pinToUse 44 // Timer5C on Mega - - uint32_t PWM_Pins[] = { 5, 8, 9, 12 }; - -#elif ( PWM_USING_ATMEGA_32U4 ) - // Pins tested OK on 32u4 - //#define pinToUse 5 // Timer3A on 32u4 - //#define pinToUse 9 // Timer1A on 32u4 - //#define pinToUse 10 // Timer1B on 32u4 - - uint32_t PWM_Pins[] = { 5, 9 }; - +// Pins tested OK in Mega +//#define pinToUse 12 // Timer1B on Mega +//#define pinToUse 11 // Timer1A on Mega +//#define pinToUse 9 // Timer2B on Mega +//#define pinToUse 2 // Timer3B on Mega +//#define pinToUse 3 // Timer3C on Mega +//#define pinToUse 5 // Timer3A on Mega +//#define pinToUse 6 // Timer4A on Mega +//#define pinToUse 7 // Timer4B on Mega +//#define pinToUse 8 // Timer4C on Mega +//#define pinToUse 46 // Timer5A on Mega +//#define pinToUse 45 // Timer5B on Mega +//#define pinToUse 44 // Timer5C on Mega + +uint32_t PWM_Pins[] = { 5, 8, 9, 12 }; + +#elif ( PWM_USING_ATMEGA_32U4 ) +// Pins tested OK on 32u4 +//#define pinToUse 5 // Timer3A on 32u4 +//#define pinToUse 9 // Timer1A on 32u4 +//#define pinToUse 10 // Timer1B on 32u4 + +uint32_t PWM_Pins[] = { 5, 9 }; + #else - // Pins tested OK on Nano / UNO - //#define pinToUse 9 // Timer1A on UNO, Nano, etc - //#define pinToUse 10 // Timer1B on UNO, Nano, etc - //#define pinToUse 5 // Timer0B on UNO, Nano, e - //#define pinToUse 3 // Timer2B on UNO, Nano, etc - - uint32_t PWM_Pins[] = { 3, 5, 9 }; - +// Pins tested OK on Nano / UNO +//#define pinToUse 9 // Timer1A on UNO, Nano, etc +//#define pinToUse 10 // Timer1B on UNO, Nano, etc +//#define pinToUse 5 // Timer0B on UNO, Nano, e +//#define pinToUse 3 // Timer2B on UNO, Nano, etc + +uint32_t PWM_Pins[] = { 3, 5, 9 }; + #endif #define NUM_OF_PINS ( sizeof(PWM_Pins) / sizeof(uint32_t) ) @@ -125,27 +125,27 @@ void printPWMInfo(AVR_PWM* PWM_Instance) void setup() { - Serial.begin(115200); + Serial.begin(115200); - while (!Serial); + while (!Serial); - delay(100); + delay(100); - Serial.print(F("\nStarting PWM_Multi on ")); - Serial.println(BOARD_NAME); - Serial.println(AVR_PWM_VERSION); + Serial.print(F("\nStarting PWM_Multi on ")); + Serial.println(BOARD_NAME); + Serial.println(AVR_PWM_VERSION); - Serial.println(dashLine); - Serial.println("Index\tPin\tPWM_freq\tDutyCycle\tActual Freq"); - Serial.println(dashLine); + Serial.println(dashLine); + Serial.println("Index\tPin\tPWM_freq\tDutyCycle\tActual Freq"); + Serial.println(dashLine); - for (uint8_t index = 0; index < NUM_OF_PINS; index++) - { - PWM_Instance[index] = new AVR_PWM(PWM_Pins[index], freq[index], dutyCycle[index]); + for (uint8_t index = 0; index < NUM_OF_PINS; index++) + { + PWM_Instance[index] = new AVR_PWM(PWM_Pins[index], freq[index], dutyCycle[index]); - if (PWM_Instance[index]) - { - PWM_Instance[index]->setPWM(); + if (PWM_Instance[index]) + { + PWM_Instance[index]->setPWM(); Serial.print(index); Serial.print("\t"); @@ -156,12 +156,12 @@ void setup() Serial.print(dutyCycle[index]); Serial.print("\t\t"); Serial.println(PWM_Instance[index]->getActualFreq(), 4); - } - else - { - Serial.println(); - } - } + } + else + { + Serial.println(); + } + } for (uint8_t index = 0; index < NUM_OF_PINS; index++) { @@ -171,6 +171,6 @@ void setup() void loop() { - //Long delay has no effect on the operation of hardware-based PWM channels - delay(1000000); + //Long delay has no effect on the operation of hardware-based PWM channels + delay(1000000); } diff --git a/examples/PWM_Waveform/PWM_Waveform.ino b/examples/PWM_Waveform/PWM_Waveform.ino index 3a86da3..3b33c27 100644 --- a/examples/PWM_Waveform/PWM_Waveform.ino +++ b/examples/PWM_Waveform/PWM_Waveform.ino @@ -65,34 +65,34 @@ #define LED_OFF HIGH #if ( PWM_USING_ATMEGA2560 ) -// Pins tested OK in Mega -//#define pinToUse 12 // Timer1B on Mega -//#define pinToUse 11 // Timer1A on Mega -//#define pinToUse 9 // Timer2B on Mega -//#define pinToUse 2 // Timer3B on Mega -//#define pinToUse 3 // Timer3C on Mega -//#define pinToUse 5 // Timer3A on Mega -//#define pinToUse 6 // Timer4A on Mega -//#define pinToUse 7 // Timer4B on Mega -#define pinToUse 8 // Timer4C on Mega -//#define pinToUse 46 // Timer5A on Mega -//#define pinToUse 45 // Timer5B on Mega -//#define pinToUse 44 // Timer5C on Mega + // Pins tested OK in Mega + //#define pinToUse 12 // Timer1B on Mega + //#define pinToUse 11 // Timer1A on Mega + //#define pinToUse 9 // Timer2B on Mega + //#define pinToUse 2 // Timer3B on Mega + //#define pinToUse 3 // Timer3C on Mega + //#define pinToUse 5 // Timer3A on Mega + //#define pinToUse 6 // Timer4A on Mega + //#define pinToUse 7 // Timer4B on Mega + #define pinToUse 8 // Timer4C on Mega + //#define pinToUse 46 // Timer5A on Mega + //#define pinToUse 45 // Timer5B on Mega + //#define pinToUse 44 // Timer5C on Mega #elif ( PWM_USING_ATMEGA_32U4 ) -// Pins tested OK on 32u4 -////#define pinToUse 3 // Timer0B on 32u4 -//#define pinToUse 5 // Timer3A on 32u4 -#define pinToUse 9 // Timer1A on 32u4 -//#define pinToUse 10 // Timer1B on 32u4 + // Pins tested OK on 32u4 + ////#define pinToUse 3 // Timer0B on 32u4 + //#define pinToUse 5 // Timer3A on 32u4 + #define pinToUse 9 // Timer1A on 32u4 + //#define pinToUse 10 // Timer1B on 32u4 #else -// Pins tested OK on Nano / UNO -//#define pinToUse 9 // Timer1A on UNO, Nano, etc -#define pinToUse 10 // Timer1B on UNO, Nano, etc -//#define pinToUse 5 // Timer0B on UNO, Nano, e -//#define pinToUse 3 // Timer2B on UNO, Nano, etc + // Pins tested OK on Nano / UNO + //#define pinToUse 9 // Timer1A on UNO, Nano, etc + #define pinToUse 10 // Timer1B on UNO, Nano, etc + //#define pinToUse 5 // Timer0B on UNO, Nano, e + //#define pinToUse 3 // Timer2B on UNO, Nano, etc #endif