1 Reply Latest reply on Nov 2, 2015 1:30 PM by DiegoV_Intel

    facing problem in hardware interrupt

    deba168

      Hi ,

      I am using a flow sensor in my project.When I am using the following code in Arduino Uno it is working perfectly. But when I try to upload it in Intel Edison its showing error.

      Please help ...

      http://www.seeedstudio.com/wiki/G1/4%22_Water_Flow_Sensor


      Code :

       

      // reading liquid flow rate using Seeeduino and Water Flow Sensor from Seeedstudio.com

      // Code adapted by Charles Gantt from PC Fan RPM code written by Crenn @thebestcasescenario.com

      // http:/themakersworkbench.com http://thebestcasescenario.com http://seeedstudio.com

       

      volatile int NbTopsFan; //measuring the rising edges of the signal

      int Calc;  

      int hallsensor = 2;   //The pin location of the sensor

       

      void rpm ()   //This is the function that the interupt calls

      {

        NbTopsFan++;  //This function measures the rising and falling edge of the

       

      hall effect sensors signal

      }

      // The setup() method runs once, when the sketch starts

      void setup() //

      {

        pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input

        Serial.begin(9600); //This is the setup function where the serial port is

       

      initialised,

        attachInterrupt(0, rpm, RISING); //and the interrupt is attached

      }

      // the loop() method runs over and over again,

      // as long as the Arduino has power

      void loop ()  

      {

        NbTopsFan = 0;   //Set NbTops to 0 ready for calculations

        sei();   //Enables interrupts

        delay (1000);   //Wait 1 second

        cli();   //Disable interrupts

        Calc = (NbTopsFan * 60 / 73); //(Pulse frequency x 60) / 73Q, = flow rate

       

      in L/hour

        Serial.print (Calc, DEC); //Prints the number calculated above

        Serial.print (" L/hour\r\n"); //Prints "L/hour" and returns a new line

      }


      Error :

       

      sketch_nov02d.ino:23:7: error: 'sei' was not declared in this scope

      sketch_nov02d.ino:25:7: error: 'cli' was not declared in this scope

      'sei' was not declared in this scope

        • 1. Re: facing problem in hardware interrupt
          DiegoV_Intel

          Hello deba168,

           

          The methods sei() and cli() are for interrupt management of the AVR architecture. They are not supported in Edison because the architecture is different. You can try to simply remove those lines in the code and check if it works as it should. Anyhow, you have to change the code to make it compatible with Edison, otherwise it won't work due to architecture differences between the Arduino and Edison boards. Additional information about the sei() and cli() methods can be checked in the following site: Arduino Playground - AVR

           

          Regards,

          Diego.