diff --git a/examples/AVR/Argument_Complex/Argument_Complex.ino b/examples/AVR/Argument_Complex/Argument_Complex.ino index adf4f4e9..8176109d 100644 --- a/examples/AVR/Argument_Complex/Argument_Complex.ino +++ b/examples/AVR/Argument_Complex/Argument_Complex.ino @@ -26,16 +26,6 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -50,6 +40,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + struct pinStruct { unsigned int Pin1; @@ -99,7 +93,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting Argument_Complex on Arduino AVR board")); + Serial.print(F("\nStarting Argument_Complex on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/Argument_None/Argument_None.ino b/examples/AVR/Argument_None/Argument_None.ino index a14d86f7..8ed3f160 100644 --- a/examples/AVR/Argument_None/Argument_None.ino +++ b/examples/AVR/Argument_None/Argument_None.ino @@ -26,16 +26,6 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -50,6 +40,11 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif +#define TIMER1_INTERVAL_MS 1000 + void TimerHandler1() { static bool toggle1 = false; @@ -66,6 +61,10 @@ void TimerHandler1() toggle1 = !toggle1; } +#if USE_TIMER_2 + +#define TIMER2_INTERVAL_MS 2000 + void TimerHandler2() { static bool toggle2 = false; @@ -82,16 +81,15 @@ void TimerHandler2() toggle2 = !toggle2; } -#define TIMER1_INTERVAL_MS 1000 - -#define TIMER2_INTERVAL_MS 2000 +#endif void setup() { Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting Argument_None on Arduino AVR board")); + Serial.print(F("\nStarting Argument_None on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); @@ -110,6 +108,8 @@ void setup() else Serial.println(F("Can't set ITimer1. Select another freq. or timer")); +#if USE_TIMER_2 + // Select Timer 1-2 for UNO, 0-5 for MEGA // Timer 2 is 8-bit timer, only for higher frequency ITimer2.init(); @@ -120,6 +120,7 @@ void setup() } else Serial.println(F("Can't set ITimer2. Select another freq. or timer")); +#endif } void loop() diff --git a/examples/AVR/Argument_Simple/Argument_Simple.ino b/examples/AVR/Argument_Simple/Argument_Simple.ino index 94a25d0a..820c2afc 100644 --- a/examples/AVR/Argument_Simple/Argument_Simple.ino +++ b/examples/AVR/Argument_Simple/Argument_Simple.ino @@ -26,16 +26,6 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -50,6 +40,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + unsigned int outputPin1 = LED_BUILTIN; unsigned int outputPin2 = A0; @@ -74,6 +68,8 @@ void TimerHandler1(unsigned int outputPin = LED_BUILTIN) toggle1 = !toggle1; } +#if USE_TIMER_2 + void TimerHandler2(unsigned int outputPin = LED_BUILTIN) { static bool toggle2 = false; @@ -90,6 +86,8 @@ void TimerHandler2(unsigned int outputPin = LED_BUILTIN) toggle2 = !toggle2; } +#endif + #define TIMER1_INTERVAL_MS 1000 #define TIMER2_INTERVAL_MS 2000 @@ -99,7 +97,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting Argument_Simple on Arduino AVR board")); + Serial.print(F("\nStarting Argument_Simple on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); @@ -125,6 +124,8 @@ void setup() else Serial.println(F("Can't set ITimer1. Select another freq. or timer")); +#if USE_TIMER_2 + ITimer2.init(); if (ITimer2.attachInterruptInterval(TIMER2_INTERVAL_MS, TimerHandler2, outputPin2)) @@ -138,6 +139,7 @@ void setup() } else Serial.println(F("Can't set ITimer2. Select another freq. or timer")); +#endif } void loop() diff --git a/examples/AVR/Change_Interval/Change_Interval.ino b/examples/AVR/Change_Interval/Change_Interval.ino index 8a1800ad..bea76001 100644 --- a/examples/AVR/Change_Interval/Change_Interval.ino +++ b/examples/AVR/Change_Interval/Change_Interval.ino @@ -38,15 +38,6 @@ or the entire sequence of your code which accesses the data. */ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 @@ -62,6 +53,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + //#ifndef LED_BUILTIN // #define LED_BUILTIN 13 //#endif @@ -70,7 +65,6 @@ #define LED_BLUE 7 #endif - #define TIMER1_INTERVAL_MS 100UL #define TIMER2_INTERVAL_MS 200UL @@ -96,6 +90,8 @@ void TimerHandler1() toggle1 = !toggle1; } +#if USE_TIMER_2 + void TimerHandler2() { static bool toggle2 = false; @@ -108,6 +104,8 @@ void TimerHandler2() toggle2 = !toggle2; } +#endif + void setup() { pinMode(LED_BUILTIN, OUTPUT); @@ -116,7 +114,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting Change_Interval on Arduino AVR board")); + Serial.print(F("\nStarting Change_Interval on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); @@ -135,6 +134,8 @@ void setup() else Serial.println(F("Can't set ITimer1. Select another freq. or timer")); +#if USE_TIMER_2 + // Select Timer 1-2 for UNO, 0-5 for MEGA // Timer 2 is 8-bit timer, only for higher frequency ITimer2.init(); @@ -145,6 +146,7 @@ void setup() } else Serial.println(F("Can't set ITimer2. Select another freq. or timer")); +#endif } #define CHECK_INTERVAL_MS 10000L @@ -173,10 +175,14 @@ void loop() // bool setInterval(unsigned long interval, timer_callback callback, unsigned long duration) ITimer1.setInterval(TIMER1_INTERVAL_MS * (multFactor + 1), TimerHandler1); + + Serial.print(F("Changing Interval, Timer1 = ")); Serial.println(TIMER1_INTERVAL_MS * (multFactor + 1)); + +#if USE_TIMER_2 ITimer2.setInterval(TIMER2_INTERVAL_MS * (multFactor + 1), TimerHandler2); - Serial.print(F("Changing Interval, Timer1 = ")); Serial.print(TIMER1_INTERVAL_MS * (multFactor + 1)); - Serial.print(F(", Timer2 = ")); Serial.println(TIMER2_INTERVAL_MS * (multFactor + 1)); + Serial.print(F("Changing Interval, Timer2 = ")); Serial.println(TIMER2_INTERVAL_MS * (multFactor + 1)); +#endif lastChangeTime = currTime; } diff --git a/examples/AVR/FakeAnalogWrite/FakeAnalogWrite.ino b/examples/AVR/FakeAnalogWrite/FakeAnalogWrite.ino index c989be5b..dbfe2f18 100644 --- a/examples/AVR/FakeAnalogWrite/FakeAnalogWrite.ino +++ b/examples/AVR/FakeAnalogWrite/FakeAnalogWrite.ino @@ -45,22 +45,14 @@ written */ -#if !(defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED)) -#error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. #define TIMER_INTERRUPT_DEBUG 0 #define _TIMERINTERRUPT_LOGLEVEL_ 0 -#define USE_TIMER_1 false -#define USE_TIMER_2 true +#define USE_TIMER_1 true +#define USE_TIMER_2 false #define USE_TIMER_3 false #define USE_TIMER_4 false #define USE_TIMER_5 false @@ -69,6 +61,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + #ifndef LED_BUILTIN #define LED_BUILTIN 13 #endif @@ -85,8 +81,8 @@ float mappingTable[MAPPING_TABLE_SIZE] = 230.395, 236.136, 241.206, 245.680, 249.781, 253.509 }; -#define TIMER2_FREQUENCY_HZ 10000UL -#define TIMER2_INTERVAL_US (1000000UL / TIMER2_FREQUENCY_HZ) +#define TIMER1_FREQUENCY_HZ 10000UL +#define TIMER1_INTERVAL_US (1000000UL / TIMER1_FREQUENCY_HZ) volatile uint32_t startMillis = 0; @@ -110,7 +106,7 @@ void TimerHandler() } // Toggle LED every LED_TOGGLE_INTERVAL_MS = 500ms = 0.5s - if (++timeRun == ((LED_TOGGLE_INTERVAL_MS * TIMER2_FREQUENCY_HZ) / 1000) ) + if (++timeRun == ((LED_TOGGLE_INTERVAL_MS * TIMER1_FREQUENCY_HZ) / 1000) ) { timeRun = 0; @@ -199,19 +195,20 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting FakeAnalogWrite on Arduino AVR board")); + Serial.print(F("\nStarting FakeAnalogWrite on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); - ITimer2.init(); + ITimer1.init(); - //if (ITimer2.attachInterruptInterval(TIMER2_INTERVAL_MS, TimerHandler)) - if (ITimer2.attachInterrupt(TIMER2_FREQUENCY_HZ, TimerHandler)) + //if (ITimer1.attachInterruptInterval(TIMER1_INTERVAL_MS, TimerHandler)) + if (ITimer1.attachInterrupt(TIMER1_FREQUENCY_HZ, TimerHandler)) { - Serial.print(F("Starting ITimer2 OK, millis() = ")); Serial.println(millis()); + Serial.print(F("Starting ITimer1 OK, millis() = ")); Serial.println(millis()); } else - Serial.println(F("Can't set ITimer2. Select another freq. or timer")); + Serial.println(F("Can't set ITimer1. Select another freq. or timer")); // Just to demonstrate, don't use too many ISR Timers if not absolutely necessary // You can use up to 16 timer for each ISR_Timer diff --git a/examples/AVR/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/AVR/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index f9ea2eac..c3e2c68d 100644 --- a/examples/AVR/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/AVR/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -26,24 +26,14 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. #define TIMER_INTERRUPT_DEBUG 0 #define _TIMERINTERRUPT_LOGLEVEL_ 0 -#define USE_TIMER_1 false -#define USE_TIMER_2 true +#define USE_TIMER_1 true +#define USE_TIMER_2 false #define USE_TIMER_3 false #define USE_TIMER_4 false #define USE_TIMER_5 false @@ -51,31 +41,35 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 #endif -ISR_Timer ISR_Timer2; +ISR_Timer ISR_Timer1; #define LED_TOGGLE_INTERVAL_MS 1000L // You have to use longer time here if having problem because Arduino AVR clock is low, 16MHz => lower accuracy. // Tested OK with 1ms when not much load => higher accuracy. -#define TIMER2_INTERVAL_MS 5L +#define TIMER1_INTERVAL_MS 5L volatile uint32_t startMillis = 0; -void TimerHandler2() +void TimerHandler1() { static bool toggle = false; static int timeRun = 0; - ISR_Timer2.run(); + ISR_Timer1.run(); // Toggle LED every LED_TOGGLE_INTERVAL_MS = 2000ms = 2s - if (++timeRun == ((LED_TOGGLE_INTERVAL_MS) / TIMER2_INTERVAL_MS) ) + if (++timeRun == ((LED_TOGGLE_INTERVAL_MS) / TIMER1_INTERVAL_MS) ) { timeRun = 0; @@ -305,21 +299,22 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting ISR_16_Timers_Array_Complex on Arduino AVR board")); + Serial.print(F("\nStarting ISR_16_Timers_Array_Complex on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); - ITimer2.init(); + ITimer1.init(); - if (ITimer2.attachInterruptInterval(TIMER2_INTERVAL_MS, TimerHandler2)) + if (ITimer1.attachInterruptInterval(TIMER1_INTERVAL_MS, TimerHandler1)) { - Serial.print(F("Starting ITimer2 OK, millis() = ")); Serial.println(millis()); + Serial.print(F("Starting ITimer1 OK, millis() = ")); Serial.println(millis()); } else - Serial.println(F("Can't set ITimer2. Select another freq. or timer")); + Serial.println(F("Can't set ITimer1. Select another freq. or timer")); - //ISR_Timer2.setInterval(2000L, doingSomething2s); - //ISR_Timer2.setInterval(5000L, doingSomething5s); + //ISR_Timer1.setInterval(2000L, doingSomething2s); + //ISR_Timer1.setInterval(5000L, doingSomething5s); // Just to demonstrate, don't use too many ISR Timers if not absolutely necessary // You can use up to 16 timer for each ISR_Timer @@ -327,10 +322,10 @@ void setup() { #if USE_COMPLEX_STRUCT curISRTimerData[i].previousMillis = startMillis; - ISR_Timer2.setInterval(curISRTimerData[i].TimerInterval, curISRTimerData[i].irqCallbackFunc); + ISR_Timer1.setInterval(curISRTimerData[i].TimerInterval, curISRTimerData[i].irqCallbackFunc); #else previousMillis[i] = startMillis; - ISR_Timer2.setInterval(TimerInterval[i], irqCallbackFunc[i]); + ISR_Timer1.setInterval(TimerInterval[i], irqCallbackFunc[i]); #endif } diff --git a/examples/AVR/ISR_RPM_Measure/ISR_RPM_Measure.ino b/examples/AVR/ISR_RPM_Measure/ISR_RPM_Measure.ino index 42ccefc5..f33d704c 100644 --- a/examples/AVR/ISR_RPM_Measure/ISR_RPM_Measure.ino +++ b/examples/AVR/ISR_RPM_Measure/ISR_RPM_Measure.ino @@ -36,16 +36,6 @@ then use timer to count the time between active state */ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -60,6 +50,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + unsigned int interruptPin = 2; #define TIMER1_INTERVAL_MS 1 @@ -136,7 +130,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting ISR_RPM_Measure on Arduino AVR board")); + Serial.print(F("\nStarting ISR_RPM_Measure on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/ISR_Switch/ISR_Switch.ino b/examples/AVR/ISR_Switch/ISR_Switch.ino index e7614c5b..d03b1b5f 100644 --- a/examples/AVR/ISR_Switch/ISR_Switch.ino +++ b/examples/AVR/ISR_Switch/ISR_Switch.ino @@ -45,16 +45,6 @@ To run MEGA+WiFi combined, turn ON SW 1+2 (MCU <-> ESP) and SW 3+4 (USB <-> MCU) *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - #define BLYNK_PRINT Serial //#define BLYNK_DEBUG true @@ -73,6 +63,10 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + #include #include @@ -94,10 +88,22 @@ char pass[] = "****"; //Mega2560 // Hardware Serial on Mega, Leonardo, Micro... -#define EspSerial Serial3 //Serial1 - -// Your MEGA <-> ESP8266 baud rate: -#define ESP8266_BAUD 115200 +#if ( ARDUINO_AVR_MEGA2560 || ARDUINO_AVR_MEGA || ARDUINO_AVR_ADK ) + #define EspSerial Serial3 //Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#elif ( defined(__AVR_ATmega328__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) ) + #include + SoftwareSerial swSerial(2, 3); // (RX, TX); + #define EspSerial swSerial + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 9600 + #warning Using Software Serial for ESP with speed 9600 bauds +#else + #define EspSerial Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#endif ESP8266 wifi(&EspSerial); @@ -245,7 +251,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting ISR_Switch on Arduino AVR board")); + Serial.print(F("\nStarting ISR_Switch on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/ISR_Timer_Complex/ISR_Timer_Complex.ino b/examples/AVR/ISR_Timer_Complex/ISR_Timer_Complex.ino index e51e1f29..aba9183f 100644 --- a/examples/AVR/ISR_Timer_Complex/ISR_Timer_Complex.ino +++ b/examples/AVR/ISR_Timer_Complex/ISR_Timer_Complex.ino @@ -44,16 +44,6 @@ To run MEGA+WiFi combined, turn ON SW 1+2 (MCU <-> ESP) and SW 3+4 (USB <-> MCU) *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - #define BLYNK_PRINT Serial //#define BLYNK_DEBUG true @@ -72,6 +62,10 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + #include #include @@ -93,10 +87,22 @@ char pass[] = "****"; //Mega2560 // Hardware Serial on Mega, Leonardo, Micro... -#define EspSerial Serial3 //Serial1 - -// Your MEGA <-> ESP8266 baud rate: -#define ESP8266_BAUD 115200 +#if ( ARDUINO_AVR_MEGA2560 || ARDUINO_AVR_MEGA || ARDUINO_AVR_ADK ) + #define EspSerial Serial3 //Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#elif ( defined(__AVR_ATmega328__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) ) + #include + SoftwareSerial swSerial(2, 3); // (RX, TX); + #define EspSerial swSerial + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 9600 + #warning Using Software Serial for ESP with speed 9600 bauds +#else + #define EspSerial Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#endif ESP8266 wifi(&EspSerial); @@ -208,7 +214,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting ISR_Timer_Complex on Arduino AVR board")); + Serial.print(F("\nStarting ISR_Timer_Complex on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/ISR_Timer_Switch/ISR_Timer_Switch.ino b/examples/AVR/ISR_Timer_Switch/ISR_Timer_Switch.ino index ae0c5fc8..5f47b1ec 100644 --- a/examples/AVR/ISR_Timer_Switch/ISR_Timer_Switch.ino +++ b/examples/AVR/ISR_Timer_Switch/ISR_Timer_Switch.ino @@ -47,16 +47,6 @@ To run MEGA+WiFi combined, turn ON SW 1+2 (MCU <-> ESP) and SW 3+4 (USB <-> MCU) *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - #define BLYNK_PRINT Serial //#define BLYNK_DEBUG true @@ -75,6 +65,10 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + #include #include @@ -96,10 +90,22 @@ char pass[] = "****"; //Mega2560 // Hardware Serial on Mega, Leonardo, Micro... -#define EspSerial Serial3 //Serial1 - -// Your MEGA <-> ESP8266 baud rate: -#define ESP8266_BAUD 115200 +#if ( ARDUINO_AVR_MEGA2560 || ARDUINO_AVR_MEGA || ARDUINO_AVR_ADK ) + #define EspSerial Serial3 //Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#elif ( defined(__AVR_ATmega328__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) ) + #include + SoftwareSerial swSerial(2, 3); // (RX, TX); + #define EspSerial swSerial + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 9600 + #warning Using Software Serial for ESP with speed 9600 bauds +#else + #define EspSerial Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#endif ESP8266 wifi(&EspSerial); @@ -273,7 +279,8 @@ void setup() EspSerial.begin(ESP8266_BAUD); delay(10); - Serial.println(F("\nStarting ISR_Timer_Switch on Arduino AVR board")); + Serial.print(F("\nStarting ISR_Timer_Switch on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/ISR_Timer_Switches/ISR_Timer_Switches.ino b/examples/AVR/ISR_Timer_Switches/ISR_Timer_Switches.ino index 1aafd585..ee38836c 100644 --- a/examples/AVR/ISR_Timer_Switches/ISR_Timer_Switches.ino +++ b/examples/AVR/ISR_Timer_Switches/ISR_Timer_Switches.ino @@ -47,16 +47,6 @@ To run MEGA+WiFi combined, turn ON SW 1+2 (MCU <-> ESP) and SW 3+4 (USB <-> MCU) *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - #define BLYNK_PRINT Serial //#define BLYNK_DEBUG true @@ -75,6 +65,10 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + #include #include @@ -96,10 +90,22 @@ char pass[] = "****"; //Mega2560 // Hardware Serial on Mega, Leonardo, Micro... -#define EspSerial Serial3 //Serial1 - -// Your MEGA <-> ESP8266 baud rate: -#define ESP8266_BAUD 115200 +#if ( ARDUINO_AVR_MEGA2560 || ARDUINO_AVR_MEGA || ARDUINO_AVR_ADK ) + #define EspSerial Serial3 //Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#elif ( defined(__AVR_ATmega328__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) ) + #include + SoftwareSerial swSerial(2, 3); // (RX, TX); + #define EspSerial swSerial + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 9600 + #warning Using Software Serial for ESP with speed 9600 bauds +#else + #define EspSerial Serial1 + // Your HardwareSerial <-> ESP8266 baud rate: + #define ESP8266_BAUD 115200 +#endif ESP8266 wifi(&EspSerial); @@ -394,7 +400,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting ISR_Timer_Switches on Arduino AVR board")); + Serial.print(F("\nStarting ISR_Timer_Switches on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/ISR_Timers_Array_Simple/ISR_Timers_Array_Simple.ino b/examples/AVR/ISR_Timers_Array_Simple/ISR_Timers_Array_Simple.ino index fac01576..108ea68b 100644 --- a/examples/AVR/ISR_Timers_Array_Simple/ISR_Timers_Array_Simple.ino +++ b/examples/AVR/ISR_Timers_Array_Simple/ISR_Timers_Array_Simple.ino @@ -23,24 +23,14 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. #define TIMER_INTERRUPT_DEBUG 0 #define _TIMERINTERRUPT_LOGLEVEL_ 0 -#define USE_TIMER_1 false -#define USE_TIMER_2 true +#define USE_TIMER_1 true +#define USE_TIMER_2 false #define USE_TIMER_3 false #define USE_TIMER_4 false #define USE_TIMER_5 false @@ -48,9 +38,13 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + +#include // https://github.com/jfturcot/SimpleTimer -ISR_Timer ISR_Timer2; +ISR_Timer ISR_Timer1; #ifndef LED_BUILTIN #define LED_BUILTIN 13 @@ -60,7 +54,7 @@ ISR_Timer ISR_Timer2; // You have to use longer time here if having problem because Arduino AVR clock is low, 16MHz => lower accuracy. // Tested OK with 1ms when not much load => higher accuracy. -#define TIMER2_INTERVAL_MS 1L +#define TIMER1_INTERVAL_MS 1L volatile uint32_t startMillis = 0; @@ -71,15 +65,15 @@ volatile uint32_t previousMillis2s = 0; volatile uint32_t previousMillis5s = 0; -void TimerHandler2() +void TimerHandler1() { static bool toggle = false; static int timeRun = 0; - ISR_Timer2.run(); + ISR_Timer1.run(); // Toggle LED every LED_TOGGLE_INTERVAL_MS = 2000ms = 2s - if (++timeRun == ((LED_TOGGLE_INTERVAL_MS) / TIMER2_INTERVAL_MS) ) + if (++timeRun == ((LED_TOGGLE_INTERVAL_MS) / TIMER1_INTERVAL_MS) ) { timeRun = 0; @@ -141,21 +135,22 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting ISR_Timers_Array_Simple on Arduino AVR board")); + Serial.print(F("\nStarting ISR_Timers_Array_Simple on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); - ITimer2.init(); + ITimer1.init(); - if (ITimer2.attachInterruptInterval(TIMER2_INTERVAL_MS, TimerHandler2)) + if (ITimer1.attachInterruptInterval(TIMER1_INTERVAL_MS, TimerHandler1)) { - Serial.print(F("Starting ITimer2 OK, millis() = ")); Serial.println(millis()); + Serial.print(F("Starting ITimer1 OK, millis() = ")); Serial.println(millis()); } else - Serial.println(F("Can't set ITimer2. Select another freq. or timer")); + Serial.println(F("Can't set ITimer1. Select another freq. or timer")); - ISR_Timer2.setInterval(2000L, doingSomething2s); - ISR_Timer2.setInterval(5000L, doingSomething5s); + ISR_Timer1.setInterval(2000L, doingSomething2s); + ISR_Timer1.setInterval(5000L, doingSomething5s); // You need this timer for non-critical tasks. Avoid abusing ISR if not absolutely necessary. simpleTimer.setInterval(SIMPLE_TIMER_MS, simpleTimerDoingSomething2s); diff --git a/examples/AVR/RPM_Measure/RPM_Measure.ino b/examples/AVR/RPM_Measure/RPM_Measure.ino index b4892fb5..f0a3bbad 100644 --- a/examples/AVR/RPM_Measure/RPM_Measure.ino +++ b/examples/AVR/RPM_Measure/RPM_Measure.ino @@ -36,16 +36,6 @@ then use timer to count the time between active state */ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -60,6 +50,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + unsigned int SWPin = A0; #define TIMER1_INTERVAL_MS 1 @@ -122,13 +116,13 @@ void TimerHandler1() } } - void setup() { Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting RPM_Measure on Arduino AVR board")); + Serial.print(F("\nStarting RPM_Measure on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/SwitchDebounce/SwitchDebounce.ino b/examples/AVR/SwitchDebounce/SwitchDebounce.ino index fd765845..36b838db 100644 --- a/examples/AVR/SwitchDebounce/SwitchDebounce.ino +++ b/examples/AVR/SwitchDebounce/SwitchDebounce.ino @@ -33,16 +33,6 @@ SW is released. *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -57,6 +47,10 @@ #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + unsigned int SWPin = A0; #define TIMER1_INTERVAL_MS 20 @@ -166,7 +160,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting SwitchDebounce on Arduino AVR board")); + Serial.print(F("\nStarting SwitchDebounce on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/AVR/TimerDuration/TimerDuration.ino b/examples/AVR/TimerDuration/TimerDuration.ino index 0ff36e10..d59e982c 100644 --- a/examples/AVR/TimerDuration/TimerDuration.ino +++ b/examples/AVR/TimerDuration/TimerDuration.ino @@ -26,16 +26,6 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -48,9 +38,19 @@ #define USE_TIMER_4 false #define USE_TIMER_5 false - #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + +#define TIMER1_INTERVAL_MS 1000 +#define TIMER1_FREQUENCY (float) (1000.0f / TIMER1_INTERVAL_MS) +#define TIMER1_DURATION_MS (10 * TIMER1_INTERVAL_MS) + +unsigned int outputPin1 = LED_BUILTIN; +unsigned int outputPin2 = A0; + void TimerHandler1(unsigned int outputPin = LED_BUILTIN) { static bool toggle1 = false; @@ -71,6 +71,12 @@ void TimerHandler1(unsigned int outputPin = LED_BUILTIN) toggle1 = !toggle1; } +#if USE_TIMER_2 + +#define TIMER2_INTERVAL_MS 1300 +#define TIMER2_FREQUENCY (float) (1000.0f / TIMER2_INTERVAL_MS) +#define TIMER2_DURATION_MS (20 * TIMER2_INTERVAL_MS) + void TimerHandler2(unsigned int outputPin = LED_BUILTIN) { static bool toggle2 = false; @@ -91,23 +97,17 @@ void TimerHandler2(unsigned int outputPin = LED_BUILTIN) toggle2 = !toggle2; } -unsigned int outputPin1 = LED_BUILTIN; -unsigned int outputPin2 = A0; +#endif -#define TIMER1_INTERVAL_MS 1000 -#define TIMER1_FREQUENCY (float) (1000.0f / TIMER1_INTERVAL_MS) -#define TIMER1_DURATION_MS (10 * TIMER1_INTERVAL_MS) -#define TIMER2_INTERVAL_MS 1300 -#define TIMER2_FREQUENCY (float) (1000.0f / TIMER2_INTERVAL_MS) -#define TIMER2_DURATION_MS (20 * TIMER2_INTERVAL_MS) void setup() { Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting TimerDuration on Arduino AVR board")); + Serial.print(F("\nStarting TimerDuration on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); @@ -127,6 +127,8 @@ void setup() else Serial.println(F("Can't set ITimer1. Select another freq. or timer")); +#if USE_TIMER_2 + ITimer2.init(); //if (ITimer2.attachInterrupt(TIMER2_FREQUENCY, TimerHandler2, outputPin2, TIMER2_DURATION_MS)) @@ -136,6 +138,7 @@ void setup() } else Serial.println(F("Can't set ITimer2. Select another freq. or timer")); +#endif } void loop() diff --git a/examples/AVR/TimerInterruptTest/TimerInterruptTest.ino b/examples/AVR/TimerInterruptTest/TimerInterruptTest.ino index fe3a3da9..67b0e531 100644 --- a/examples/AVR/TimerInterruptTest/TimerInterruptTest.ino +++ b/examples/AVR/TimerInterruptTest/TimerInterruptTest.ino @@ -26,16 +26,6 @@ Licensed under MIT license *****************************************************************************************************************************/ -#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || \ - defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || \ - defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || \ - defined(ARDUINO_AVR_MINI) || defined(ARDUINO_AVR_ETHERNET) || defined(ARDUINO_AVR_FIO) || defined(ARDUINO_AVR_BT) || \ - defined(ARDUINO_AVR_LILYPAD) || defined(ARDUINO_AVR_PRO) || defined(ARDUINO_AVR_NG) || defined(ARDUINO_AVR_UNO_WIFI_DEV_ED) - -#else - #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. -#endif - // These define's must be placed at the beginning before #include "TimerInterrupt_Generic.h" // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. @@ -48,9 +38,12 @@ #define USE_TIMER_4 false #define USE_TIMER_5 false - #include "TimerInterrupt_Generic.h" +#if !(TIMER_INTERRUPT_USING_AVR) + #error This is designed only for Arduino AVR board! Please check your Tools->Board setting. +#endif + void TimerHandler1(unsigned int outputPin = LED_BUILTIN) { static bool toggle1 = false; @@ -71,6 +64,8 @@ void TimerHandler1(unsigned int outputPin = LED_BUILTIN) toggle1 = !toggle1; } +#if USE_TIMER_2 + void TimerHandler2(unsigned int outputPin = LED_BUILTIN) { static bool toggle2 = false; @@ -91,6 +86,8 @@ void TimerHandler2(unsigned int outputPin = LED_BUILTIN) toggle2 = !toggle2; } +#endif + unsigned int outputPin1 = LED_BUILTIN; unsigned int outputPin2 = A0; @@ -107,7 +104,8 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.println(F("\nStarting TimerInterruptTest on Arduino AVR board")); + Serial.print(F("\nStarting TimerInterruptTest on ")); + Serial.println(BOARD_TYPE); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); @@ -126,6 +124,8 @@ void setup() else Serial.println(F("Can't set ITimer1. Select another freq. or timer")); +#if USE_TIMER_2 + ITimer2.init(); if (ITimer2.attachInterruptInterval(TIMER2_INTERVAL_MS, TimerHandler2, outputPin2, TIMER2_DURATION_MS)) @@ -134,6 +134,8 @@ void setup() } else Serial.println(F("Can't set ITimer2. Select another freq. or timer")); + +#endif } void loop() @@ -141,13 +143,17 @@ void loop() #if 0 static unsigned long lastTimer1 = 0; + +#if USE_TIMER_2 static unsigned long lastTimer2 = 0; +#endif static bool timerPaused = false; static bool timerResumed = false; if (millis() - lastTimer1 > TIMER1_DURATION_MS * 3) { +#if USE_TIMER_2 if (millis() - lastTimer2 > TIMER2_DURATION_MS * 3) { lastTimer2 = millis(); @@ -156,6 +162,7 @@ void loop() ITimer2.reattachInterrupt(TIMER2_DURATION_MS); } +#endif lastTimer1 = millis(); // try reinit timer diff --git a/examples/ESP32/TimerInterruptTest/TimerInterruptTest.ino b/examples/ESP32/TimerInterruptTest/TimerInterruptTest.ino index 97543284..1ed20bda 100644 --- a/examples/ESP32/TimerInterruptTest/TimerInterruptTest.ino +++ b/examples/ESP32/TimerInterruptTest/TimerInterruptTest.ino @@ -49,7 +49,7 @@ #include "TimerInterrupt_Generic.h" #ifndef LED_BUILTIN -#define LED_BUILTIN 2 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED + #define LED_BUILTIN 2 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED #endif #define PIN_D23 23 // Pin D23 mapped to pin GPIO23/VSPI_MOSI of ESP32 diff --git a/examples/NANO33BLE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino b/examples/NANO33BLE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino index 45db23e7..c61d266c 100644 --- a/examples/NANO33BLE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino +++ b/examples/NANO33BLE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino @@ -54,7 +54,7 @@ #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN D13 diff --git a/examples/NANO33BLE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/NANO33BLE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index 30974061..74fa15d5 100644 --- a/examples/NANO33BLE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/NANO33BLE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -54,7 +54,7 @@ #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN D13 diff --git a/examples/NRF52/ISR_16_Timers_Array/ISR_16_Timers_Array.ino b/examples/NRF52/ISR_16_Timers_Array/ISR_16_Timers_Array.ino index d3ada215..6c8adfb6 100644 --- a/examples/NRF52/ISR_16_Timers_Array/ISR_16_Timers_Array.ino +++ b/examples/NRF52/ISR_16_Timers_Array/ISR_16_Timers_Array.ino @@ -65,7 +65,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/NRF52/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/NRF52/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index f572d545..97ce6c90 100644 --- a/examples/NRF52/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/NRF52/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -56,7 +56,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/SAMD/ISR_16_Timers_Array/ISR_16_Timers_Array.ino b/examples/SAMD/ISR_16_Timers_Array/ISR_16_Timers_Array.ino index a24bc699..37158887 100644 --- a/examples/SAMD/ISR_16_Timers_Array/ISR_16_Timers_Array.ino +++ b/examples/SAMD/ISR_16_Timers_Array/ISR_16_Timers_Array.ino @@ -66,7 +66,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/SAMD/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/SAMD/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index 5370a134..5352e517 100644 --- a/examples/SAMD/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/SAMD/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -57,7 +57,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 @@ -348,7 +348,7 @@ void setup() // Just to demonstrate, don't use too many ISR Timers if not absolutely necessary // You can use up to 16 timer for each SAMD_ISR_Timer - for (int i = 0; i < NUMBER_ISR_TIMERS; i++) + for (uint16_t i = 0; i < NUMBER_ISR_TIMERS; i++) { #if USE_COMPLEX_STRUCT curISRTimerData[i].previousMillis = startMillis; diff --git a/examples/SAMD/RPM_Measure/RPM_Measure.ino b/examples/SAMD/RPM_Measure/RPM_Measure.ino index a5ede3f4..697f0536 100644 --- a/examples/SAMD/RPM_Measure/RPM_Measure.ino +++ b/examples/SAMD/RPM_Measure/RPM_Measure.ino @@ -122,7 +122,7 @@ void TimerHandler() #if (TIMER_INTERRUPT_DEBUG > 1) Serial.print("RPM = "); Serial.print(avgRPM); - Serial.print(", rotationTime ms = "); Serial.println(rotationTime * TIMER1_INTERVAL_MS); + Serial.print(", rotationTime ms = "); Serial.println(rotationTime * TIMER0_INTERVAL_MS); #endif rotationTime = 0; diff --git a/examples/SAMD/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino b/examples/SAMD/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino index 9de8c1ac..8f82f929 100644 --- a/examples/SAMD/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino +++ b/examples/SAMD/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino @@ -47,8 +47,6 @@ #define TIMER_INTERRUPT_DEBUG 0 #define _TIMERINTERRUPT_LOGLEVEL_ 0 -#include "TimerInterrupt_Generic.h" - //#ifndef LED_BUILTIN // #define LED_BUILTIN 13 //#endif diff --git a/examples/SAMD/TimerInterruptTest/TimerInterruptTest.ino b/examples/SAMD/TimerInterruptTest/TimerInterruptTest.ino index b1c3bfc0..846189e8 100644 --- a/examples/SAMD/TimerInterruptTest/TimerInterruptTest.ino +++ b/examples/SAMD/TimerInterruptTest/TimerInterruptTest.ino @@ -87,7 +87,7 @@ void TimerHandler0() pinMode(LED_BUILTIN, OUTPUT); } -#if (NRF52_TIMER_INTERRUPT_DEBUG > 0) +#if (TIMER_INTERRUPT_DEBUG > 0) static uint32_t curMillis = 0; curMillis = millis(); @@ -122,7 +122,7 @@ void TimerHandler1() pinMode(LED_BLUE, OUTPUT); } -#if (NRF52_TIMER_INTERRUPT_DEBUG > 0) +#if (TIMER_INTERRUPT_DEBUG > 0) static uint32_t curMillis = 0; curMillis = millis(); diff --git a/examples/SAMDUE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino b/examples/SAMDUE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino index afe9f8cb..f1ea4728 100644 --- a/examples/SAMDUE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino +++ b/examples/SAMDUE/ISR_16_Timers_Array/ISR_16_Timers_Array.ino @@ -62,7 +62,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/SAMDUE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/SAMDUE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index 7efad3e7..0aedf127 100644 --- a/examples/SAMDUE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/SAMDUE/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -54,7 +54,7 @@ #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 @@ -339,7 +339,7 @@ void setup() // Just to demonstrate, don't use too many ISR Timers if not absolutely necessary // You can use up to 16 timer for each SAMDUE_ISR_Timer - for (int i = 0; i < NUMBER_ISR_TIMERS; i++) + for (uint8_t i = 0; i < NUMBER_ISR_TIMERS; i++) { #if USE_COMPLEX_STRUCT curISRTimerData[i].previousMillis = startMillis; diff --git a/examples/SAMDUE/ISR_Timer_Complex_Ethernet/ISR_Timer_Complex_Ethernet.ino b/examples/SAMDUE/ISR_Timer_Complex_Ethernet/ISR_Timer_Complex_Ethernet.ino index 47dcf30d..e1ba4c14 100644 --- a/examples/SAMDUE/ISR_Timer_Complex_Ethernet/ISR_Timer_Complex_Ethernet.ino +++ b/examples/SAMDUE/ISR_Timer_Complex_Ethernet/ISR_Timer_Complex_Ethernet.ino @@ -223,7 +223,7 @@ void doingSomething101s() unsigned long deltaMillis = millis() - previousMillis; - if (previousMillis > TIMER_INTERVAL101S) + if (previousMillis > TIMER_INTERVAL_101S) { Serial.print("101s: Delta ms = "); Serial.println(deltaMillis); } diff --git a/examples/SAMDUE/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino b/examples/SAMDUE/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino index b41014e4..9c31a98e 100644 --- a/examples/SAMDUE/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino +++ b/examples/SAMDUE/TimerInterruptLEDDemo/TimerInterruptLEDDemo.ino @@ -73,7 +73,7 @@ void TimerHandler() SAMDUE_ISR_Timer.run(); } -// In SAMD, avoid doing something fancy in ISR, for example complex Serial.print with String() argument +// In SAM-DUE, avoid doing something fancy in ISR, for example complex Serial.print with String() argument // The pure simple Serial.prints here are just for demonstration and testing. Must be eliminate in working environment // Or you can get this run-time error / crash void doingSomething1() diff --git a/examples/SAMDUE/TimerInterruptTest/TimerInterruptTest.ino b/examples/SAMDUE/TimerInterruptTest/TimerInterruptTest.ino index 86d6ce49..4b065b48 100644 --- a/examples/SAMDUE/TimerInterruptTest/TimerInterruptTest.ino +++ b/examples/SAMDUE/TimerInterruptTest/TimerInterruptTest.ino @@ -177,12 +177,15 @@ void loop() if (timer0Stopped) { preMillisTimer0 = millis(); - Serial.println("Start ITimer0, millis() = " + String(preMillisTimer0)); + + Serial.print(F("Start ITimer0, millis() = ")); Serial.println(preMillisTimer0); + DueTimerPtr[Timer0_Index].restartTimer(); } else { - Serial.println("Stop ITimer0, millis() = " + String(millis())); + Serial.print(F("Stop ITimer0, millis() = ")); Serial.println(millis()); + DueTimerPtr[Timer0_Index].stopTimer(); } timer0Stopped = !timer0Stopped; @@ -198,12 +201,15 @@ void loop() if (timer1Stopped) { preMillisTimer1 = millis(); - Serial.println("Start ITimer1, millis() = " + String(preMillisTimer1)); + + Serial.print(F("Start ITimer1, millis() = ")); Serial.println(preMillisTimer1); + DueTimerPtr[Timer1_Index].restartTimer(); } else { - Serial.println("Stop ITimer1, millis() = " + String(millis())); + Serial.print(F("Stop ITimer1, millis() = ")); Serial.println(millis()); + DueTimerPtr[Timer1_Index].stopTimer(); } diff --git a/examples/STM32/ISR_16_Timers_Array/ISR_16_Timers_Array.ino b/examples/STM32/ISR_16_Timers_Array/ISR_16_Timers_Array.ino index 066a09f0..6314ae3a 100644 --- a/examples/STM32/ISR_16_Timers_Array/ISR_16_Timers_Array.ino +++ b/examples/STM32/ISR_16_Timers_Array/ISR_16_Timers_Array.ino @@ -64,7 +64,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/STM32/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/STM32/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index 9d730e3a..69df5c72 100644 --- a/examples/STM32/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/STM32/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -56,7 +56,7 @@ #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/TEENSY/Argument_None/Argument_None.ino b/examples/TEENSY/Argument_None/Argument_None.ino index 1f83d38f..9f3ec329 100644 --- a/examples/TEENSY/Argument_None/Argument_None.ino +++ b/examples/TEENSY/Argument_None/Argument_None.ino @@ -58,7 +58,14 @@ #endif volatile uint32_t preMillisTimer0 = 0; -volatile uint32_t preMillisTimer1 = 0; + +// For Teensy 4.0/4.1, F_BUS_ACTUAL = 150 MHz => max period is only 55922 us (~17.9 Hz) +#define TIMER0_INTERVAL_MS 50L + +// You can select Teensy Hardware Timer from TEENSY_TIMER_1 or TEENSY_TIMER_3 + +// Init Teensy timer TEENSY_TIMER_1 +TeensyTimer ITimer0(TEENSY_TIMER_1); void TimerHandler0() { @@ -90,14 +97,6 @@ void TimerHandler0() toggle0 = !toggle0; } -// For Teensy 4.0/4.1, F_BUS_ACTUAL = 150 MHz => max period is only 55922 us (~17.9 Hz) -#define TIMER0_INTERVAL_MS 50L - -// You can select Teensy Hardware Timer from TEENSY_TIMER_1 or TEENSY_TIMER_3 - -// Init Teensy timer TEENSY_TIMER_1 -TeensyTimer ITimer0(TEENSY_TIMER_1); - void setup() { Serial.begin(115200); diff --git a/examples/TEENSY/ISR_16_Timers_Array/ISR_16_Timers_Array.ino b/examples/TEENSY/ISR_16_Timers_Array/ISR_16_Timers_Array.ino index f7cebe56..7fe09da8 100644 --- a/examples/TEENSY/ISR_16_Timers_Array/ISR_16_Timers_Array.ino +++ b/examples/TEENSY/ISR_16_Timers_Array/ISR_16_Timers_Array.ino @@ -62,7 +62,7 @@ #include "TimerInterrupt_Generic.h" #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 diff --git a/examples/TEENSY/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino b/examples/TEENSY/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino index d55e0196..b9678da0 100644 --- a/examples/TEENSY/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino +++ b/examples/TEENSY/ISR_16_Timers_Array_Complex/ISR_16_Timers_Array_Complex.ino @@ -54,7 +54,7 @@ #include "ISR_Timer_Generic.h" -#include // https://github.com/schinken/SimpleTimer +#include // https://github.com/jfturcot/SimpleTimer #ifndef LED_BUILTIN #define LED_BUILTIN 13 @@ -319,7 +319,7 @@ void setup() Serial.begin(115200); while (!Serial); - Serial.print(F("\nStarting ISR_16_Timers_Array_Complex on ")); Serial.println(BOARD_NAME); + Serial.print(F("\nStarting ISR_16_Timers_Array_Complex on ")); Serial.println(BOARD_NAME); Serial.println(TIMER_INTERRUPT_GENERIC_VERSION); Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz")); diff --git a/examples/TEENSY/RPM_Measure/RPM_Measure.ino b/examples/TEENSY/RPM_Measure/RPM_Measure.ino index 764d57dd..6183aae6 100644 --- a/examples/TEENSY/RPM_Measure/RPM_Measure.ino +++ b/examples/TEENSY/RPM_Measure/RPM_Measure.ino @@ -57,7 +57,7 @@ // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. // Don't define TIMER_INTERRUPT_DEBUG > 2. Only for special ISR debugging only. Can hang the system. -#define TIMER_INTERRUPT_DEBUG 0 +#define TIMER_INTERRUPT_DEBUG 2 #define _TIMERINTERRUPT_LOGLEVEL_ 0 #include "TimerInterrupt_Generic.h" @@ -94,14 +94,6 @@ volatile int debounceCounter; void TimerHandler() { - static bool started = false; - - if (!started) - { - started = true; - pinMode(SWPin, INPUT_PULLUP); - } - if ( !digitalRead(SWPin) && (debounceCounter >= (DEBOUNCING_INTERVAL_MS * 1000 ) / TIMER_INTERVAL_US ) ) { //min time between pulses has passed @@ -111,7 +103,7 @@ void TimerHandler() #if (TIMER_INTERRUPT_DEBUG > 1) Serial.print("RPM = "); Serial.print(avgRPM); - Serial.print(", rotationTime ms = "); Serial.println(rotationTime * TIMER_INTERVAL_MS); + Serial.print(", rotationTime ms = "); Serial.println( (rotationTime * TIMER_INTERVAL_US) / 1000); #endif rotationTime = 0; @@ -141,6 +133,8 @@ void TimerHandler() void setup() { + pinMode(SWPin, INPUT_PULLUP); + Serial.begin(115200); while (!Serial); diff --git a/examples/TEENSY/SwitchDebounce/SwitchDebounce.ino b/examples/TEENSY/SwitchDebounce/SwitchDebounce.ino index ad79015c..b802ca51 100644 --- a/examples/TEENSY/SwitchDebounce/SwitchDebounce.ino +++ b/examples/TEENSY/SwitchDebounce/SwitchDebounce.ino @@ -45,8 +45,8 @@ // _TIMERINTERRUPT_LOGLEVEL_ from 0 to 4 // Don't define _TIMERINTERRUPT_LOGLEVEL_ > 0. Only for special ISR debugging only. Can hang the system. // Don't define TIMER_INTERRUPT_DEBUG > 2. Only for special ISR debugging only. Can hang the system. -#define TIMER_INTERRUPT_DEBUG 0 -#define _TIMERINTERRUPT_LOGLEVEL_ 0 +#define TIMER_INTERRUPT_DEBUG 2 +#define _TIMERINTERRUPT_LOGLEVEL_ 4 #include "TimerInterrupt_Generic.h" @@ -68,8 +68,6 @@ unsigned int SWPin = 7; #define DEBOUNCING_INTERVAL_MS 100L #define LONG_PRESS_INTERVAL_MS 5000L -#define LOCAL_DEBUG 1 - // You can select Teensy Hardware Timer from TEENSY_TIMER_1 or TEENSY_TIMER_3 // Init Teensy timer TEENSY_TIMER_1 @@ -90,14 +88,6 @@ void TimerHandler() unsigned long currentMillis = millis(); #endif - static bool started = false; - - if (!started) - { - started = true; - pinMode(SWPin, INPUT_PULLUP); - } - if ( (!digitalRead(SWPin)) ) { // Start debouncing counting debounceCountSWPressed and clear debounceCountSWReleased @@ -170,6 +160,8 @@ void TimerHandler() void setup() { + pinMode(SWPin, INPUT_PULLUP); + Serial.begin(115200); while (!Serial);