Added arduino libs
هذا الالتزام موجود في:
100
libraries/EnableInterrupt/examples/Testing/Testing.ino
Normal file
100
libraries/EnableInterrupt/examples/Testing/Testing.ino
Normal file
@@ -0,0 +1,100 @@
|
||||
|
||||
|
||||
// include the EnableInterrupt library - see the links in the related topics section above for details
|
||||
#define EI_ARDUINO_INTERRUPTED_PIN // to enable pin states functionality
|
||||
#include <EnableInterrupt.h>
|
||||
|
||||
|
||||
//DEBUG settings
|
||||
#define DEBUG 1 // 0 - no debug
|
||||
|
||||
|
||||
// Assign your channel in pins
|
||||
#define CHANNEL1_IN_PIN 2
|
||||
#define CHANNEL2_IN_PIN 3
|
||||
#define CHANNEL3_IN_PIN 4
|
||||
#define CHANNEL4_IN_PIN 5
|
||||
#define CHANNEL5_IN_PIN 6
|
||||
#define CHANNEL6_IN_PIN 7
|
||||
#define CHANNEL7_IN_PIN 8
|
||||
#define CHANNEL8_IN_PIN 9
|
||||
|
||||
|
||||
|
||||
|
||||
volatile uint16_t interruptCountA=0; // The count will go back to 0 after hitting 65535.
|
||||
volatile uint16_t PinStateSumB=0; // The count will go back to 0 after hitting 65535.
|
||||
|
||||
// shared variables are updated by the ISR and read by loop.
|
||||
// In loop we immediatley take local copies so that the ISR can keep ownership of the
|
||||
// shared ones. To access these in loop
|
||||
// we first turn interrupts off with noInterrupts
|
||||
// we take a copy to use in loop and the turn interrupts back on
|
||||
// as quickly as possible, this ensures that we are always able to receive new signals
|
||||
volatile uint8_t InterruptedPinShared;
|
||||
volatile uint8_t PinStateShared;
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
|
||||
|
||||
if (DEBUG !=0) {
|
||||
Serial.begin(9600);
|
||||
Serial.println("setup started ");
|
||||
}
|
||||
|
||||
enableInterrupt(CHANNEL1_IN_PIN, interruptFunction,CHANGE);
|
||||
enableInterrupt(CHANNEL2_IN_PIN, interruptFunction,CHANGE);
|
||||
|
||||
if (DEBUG !=0) {
|
||||
Serial.println(" setup completed ");
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
static uint8_t InterruptedPin;
|
||||
static uint8_t PinState;
|
||||
noInterrupts(); // turn interrupts off quickly while we take local copies of the shared variables
|
||||
InterruptedPin = InterruptedPinShared;
|
||||
PinState = PinStateShared;
|
||||
interrupts(); // we have local copies of the inputs, so now we can turn interrupts back on
|
||||
// as soon as interrupts are back on, we can no longer use the shared variables here
|
||||
|
||||
//Printing
|
||||
if (DEBUG !=0) {
|
||||
Serial.print("interruptCountA:");
|
||||
Serial.print(interruptCountA);
|
||||
Serial.println("");
|
||||
Serial.print("PinStateSumB:");
|
||||
Serial.print(PinStateSumB);
|
||||
Serial.println("");
|
||||
Serial.print("InterruptedPin:");
|
||||
Serial.print(InterruptedPin);
|
||||
Serial.println("");
|
||||
Serial.print("PinState:");
|
||||
Serial.print(PinState);
|
||||
Serial.println("");
|
||||
|
||||
}
|
||||
|
||||
|
||||
}// end of loop
|
||||
|
||||
|
||||
void interruptFunction() {
|
||||
//interruptCountA increased each time interrupt called
|
||||
interruptCountA++;
|
||||
//save values to use them outside the interrupt function
|
||||
InterruptedPinShared=arduinoInterruptedPin;
|
||||
PinStateShared=arduinoPinState;
|
||||
//PinStateSumB increased each time arduinoPinState=1 detected
|
||||
PinStateSumB=PinStateSumB + arduinoPinState ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
المرجع في مشكلة جديدة
حظر مستخدم