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...
Link Copied
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.
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.
For more complete information about compiler optimizations, see our Optimization Notice.