gpt4 book ai didi

c - 为什么我的引脚中断在整个过程中只工作一次?

转载 作者:行者123 更新时间:2023-11-30 14:37:28 27 4
gpt4 key购买 nike

我必须对交易进行身份验证,例如系统将使用预先提供的身份验证 ID 来验证使用该系统的任何用户。身份验证 ID 应该由 super 用户通过串行协议(protocol)进行通信来更改。每次交易完成时,用户都必须按下按钮才能正式完成交易,并使 super 用户能够提供另一个身份验证 ID。我可以使用 Arduino 中的串行事件中断更改身份验证 ID,但我的引脚更改中断仅工作一次,因此我无法完成第二个事务。

我在不使用引脚更改中断的情况下尝试了它,但是,这在我的代码中造成了很多困惑,并且没有按照我想要的方式正常工作,也许我无法正确应用某些东西或某些逻辑。

````Arduino C语言``````

void setup()
{
pinMode(44, OUTPUT);
pinMode(45, OUTPUT);
pinMode(46, OUTPUT);
Serial.begin(9600);
//gsm_port.begin(9600);
// Turn on the transmission, reception, and Receive interrupt
Serial1.begin(9600);

attachInterrupt(0, pin_ISR, RISING); //0 here defines pin 2 of Mega2560

}

void pin_ISR() //ISR for when box is manually closed a latch gets closed and high value is recvd on pin 2(only pins 2,3 are GPIO interupt pin of Mega2560)//
{
b1 = digitalRead(2);
if(b1==HIGH)
{
digitalWrite(44, LOW);
digitalWrite(45, LOW);
digitalWrite(46, LOW);
memset(&fed_id[0], 1, sizeof(fed_id)); //clearing fed_id so that once used cannot be used again till new id is feeded through serial event
}
}

void serialEvent1() //Serial Rx ISR for feeding new fed_id
{
while (Serial1.available())
{
rec = Serial1.read();

a[i] = rec;
i++

}

}


void loop()
{
char key = keypad.getKey();

if (key)
{
///.....some operation here......///
switch(key)
{ //try implementing shelf not oprning feature if occupied here with each case using 3 IR sensors.
case '1': digitalWrite(44, HIGH);

break;
case '2': digitalWrite(45, HIGH);

break;
case '3': digitalWrite(46, HIGH);

break;
}
}
}//closing for if(key)

}//closing for void loop()

如果上述内容可以在不使用中断的情况下实现,那么我也希望有一个灵魂。请帮助我理解为什么这不正确,并帮助我找到解决方案

最佳答案

实际上代码没有问题,注释中讨论了我们需要设置和重置中断标志/引脚,但 Arduino 不是这样,Arduino 会自动执行此操作,而在许多 Controller 中我们确实需要做这些事情,但是这里的问题是硬件而不是代码的任何部分。只是一个电阻器在 Proteus 仿真中造成了这个问题,但在实际硬件上它工作得很好。

关于c - 为什么我的引脚中断在整个过程中只工作一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57305907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com