- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下设置。我发现我的arduino又重新启动了。我有Arduino板、液晶显示器、传感器。传感器和 LCD 显示屏共享 7805 IC 的公共(public)地和 5v 电源,Arduino 板使用 7812 稳压器 IC 供电。最后他们有了共同点。现在我有了一段代码。我单独尝试了每个功能都工作正常,没有任何错误,并且 Arduino 板不会重置。当我将所有代码块放在一起时。重新启动。一旦重新启动,工作正常几分钟,然后再次重置。
如何解决这个问题?
#include <LiquidCrystal.h>
#include <avr/wdt.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
void setup()
{
Serial.begin(9600);
wdt_enable(WDTO_8S);
MODE=INIT;
pinMode(beeper, OUTPUT);
lcdClear();
}
void loop()
{
Track_loop();
LCD_Display();
CHK_Key();
wdt_reset();
Serial.println("..........................");
}
void Track_loop()
{
calcPos();
calcTime();
calcElevationAngle();
callMode();
actuate();
// checkHWFaults();
Wind_calc();
Print_Result();
}
void Print_Result()
{
Print_Date();
Print_Time();
}
我已在 Serial.println 语句中添加了这些函数
void Print_Date(){
Serial.print("Local Date:");
Serial.print(local_day);
Serial.print("/");
Serial.print(local_month);
Serial.print("/");
Serial.println(local_year);
}
void Print_Time()
{ Serial.print("local_time is:");
Serial.print(local_h);
Serial.print("-");
Serial.print(local_m);
Serial.print("-");
Serial.println(local_s);
}
最佳答案
我怀疑您对 Watchdog 的使用导致了问题。
如果我们说http://www.embedds.com/using-watchdog-timer-in-your-projects/是一个“权威”的信息来源,那么也许您对 wdt_reset() 的调用没有及时调用,因此您的系统正在重置?
If you enabled watchdog timer, you have to take care and reset it before it fills up and resets MCU. Otherwise if your program hangs or sticks in some infinite loop without reset watchdog simply counts up and resets system
来自http://www.nongnu.org/avr-libc/user-manual/group_avr_watchdog.html
#define wdt_reset() __asm__ __volatile__ ("wdr")
Reset the watchdog timer. When the watchdog timer is enabled, a call to this instruction is required before the timer expires, otherwise a watchdog-initiated device reset will occur.
如果您从项目中禁用看门狗,您还会得到相同的结果吗?
更新1
要调试代码,您可以使用 Serial.println("xxxx") 函数将所需的文本输出到您设置的串行端口。
参见
注意:我们是否应该更新这些说明以使其包含完整的说明?标记为社区 Wiki,以便每个人都可以根据需要进行更新。
关于c - 单片机/Arduino复位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22447842/
我有一个 ATMega8515我正在尝试设置一个计时器中断,以便如果一个进程花费的时间太长,它将关闭。 我设置定时器: void init_software_interupt(double time)
我正在尝试详细了解计算机如何启动。 我遇到了两件事让我更好奇, 1. RAM放置在ROM的底部,以避免Z80处理器中的Memory Holes。 2. 使用复位 vector ,它将处理器带到 ROM
我已经启动了一个 Spring Boot 应用程序。我添加了一个像这样的休息 Controller @RestController public class EmailController {
我使用了示例代码 super_resolution.cpp。用于从视频源创建高质量图像。所以这里是super_resolution.cpp的代码 #include #include #includ
我是一名优秀的程序员,十分优秀!