Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Raspberry pi Raspberry gpio仅读取上升沿_Raspberry Pi_I2c_Gpio - Fatal编程技术网

Raspberry pi Raspberry gpio仅读取上升沿

Raspberry pi Raspberry gpio仅读取上升沿,raspberry-pi,i2c,gpio,Raspberry Pi,I2c,Gpio,我想使用树莓引脚作为I2C从机来接收来自无刷万向节控制器的赞扬 我选择GPIO.4作为SDA,GPIO.5作为SDL。我使用wiringPi来开发我的程序,并使用中断来检测上升沿和下降沿。我使用digitalRead在中断触发后读取一位,以确定边缘类型。我无法检测SDA上的下降沿。不管我是选择下降、上升还是两者 SDA上的输出为:下降沿数值:0上升沿数值:1416 SCL的输出是:下降沿数值:862上升沿数值:1057,我认为这两个数值应该相等 我尝试交换两个引脚,并在digitalRead之前

我想使用树莓引脚作为I2C从机来接收来自无刷万向节控制器的赞扬

我选择GPIO.4作为SDA,GPIO.5作为SDL。我使用wiringPi来开发我的程序,并使用中断来检测上升沿和下降沿。我使用digitalRead在中断触发后读取一位,以确定边缘类型。我无法检测SDA上的下降沿。不管我是选择下降、上升还是两者

SDA上的输出为:下降沿数值:0上升沿数值:1416

SCL的输出是:下降沿数值:862上升沿数值:1057,我认为这两个数值应该相等

我尝试交换两个引脚,并在digitalRead之前添加了延迟微秒。但它们没有起作用

有人知道原因吗

#define SDA_IO 4
#define SCL_IO 5
int fnum=0,rnum=0;
void on_data_change(){
    int da;
    //delayMicroseconds(5);
    da = digitalRead(SDA_IO);
    if(da) rnum++;
    else fnum++;
}    

int init_slave(){
    int er;
    er = wiringPiSetup();
    if(er){
        printf("%d :error\n",er);
        return;
    }
    pinMode(SDA_IO,INPUT);
    pullUpDnControl(SDA_IO,PUD_UP);    

    er = wiringPiISR(SDA_IO,INT_EDGE_BOTH,on_data_change);    

    if(er){
        printf("%d :error\n",er);
        return;
    }
    return er;
}
int main(){
    int er = init_slave();
    delay(1000);
    printf("falling edge num:%d     rising edge num:%d\n",fnum,rnum);
    return 0;
}    

奇怪的是,我确实使用了另一个包来获取GPIO输入。。。但用一个更简单的轴。。。。我没有经历过这些问题。只有在某些特定的保留通道中,它失败了,但总的来说,它工作得很好。。。