Community
cancel
Showing results for 
Search instead for 
Did you mean: 
DDUTT
Beginner
866 Views

facing problem in hardware interrupt

Jump to solution

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 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://thebestcasescenario.com http://seeedstudio.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 <span class="sy1" styl...


Accepted Solutions
Diego_V_Intel
Employee
46 Views

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: http://playground.arduino.cc/Main/AVR Arduino Playground - AVR

Regards,

Diego.

View solution in original post

1 Reply
Diego_V_Intel
Employee
47 Views

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: http://playground.arduino.cc/Main/AVR Arduino Playground - AVR

Regards,

Diego.

View solution in original post