2014-02-13 4 views
0

다음 코드를 사용하여 센서를 통과하는 유량을 읽습니다. 센서를 포트 2에 꽂았을 때 모든 것이 정상적으로 작동했습니다. 그러나 이것을 비트 7 (하드웨어 및 소프트웨어 모두)로 변경하면 어떤 결과도 얻지 못했지만 비트 2를 계속 측정했습니다. 그 이유를 아는 사람이 있습니까? 여기의 Arduino UNO의 코드arduino 유량 센서

#include <SD.h> 

volatile int Signal_1; //measuring the rising edges of the signal 
int MeasuredFlow_1;  // the converted output signal 
int flowmeter_1 = 7; // Assigning pin 7 to input of flow meter 1 (input) 

void rpm()  //This is the function that the interupt calls 
{ 
    Signal_1++; //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(flowmeter_1, INPUT);  //initializes digital pin 7 as an input 
    Serial.begin(9600);    //This is the setup function where the serial port is initialised, 
    attachInterrupt(0, rpm, RISING); //attaching the interrupt 
} 
// the loop() method runs over and over again, 
// as long as the Arduino has power 
void loop()  
{ 
    Signal_1 = 0;     //Set NbTops to 0 ready for calculations 
    sei();       //Enables interrupts 
    delay (1000);     //Wait 1 second 
    cli();       //Disable interrupts 
    MeasuredFlow_1 = (Signal_1 * 60/7.5); //(Pulse frequency x 60)/7.5Q, = flow rate in L/hour 
    Serial.print (MeasuredFlow_1, DEC);  //Prints the number calculated above 
    Serial.print (" L/hour\r\n"); //Prints "L/hour" and returns a new line 
} 

답변

0

이다 attachInterrupt은 핀 ID 0 (PIN 디지털 2)를 ID (1) (핀 3 디지털)는 다른 핀에 사용할 수없는 작동.

direclty 레지스터를 사용하면 모든 핀에서 CHANGE 인터럽트를 사용할 수 있지만 인터럽트가 8 핀 그룹 이상인 경우 역화 될 수 있으므로 dogintal pin = 및 1 (직렬로 사용)으로 그룹을 수신하는 경우 문제를 일으킬 수있는 인터럽트가 많이 있습니다.

일부 특정 핀만 읽는 방법에 대한 예제는

을 참조하십시오.