Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
使用引导加载程序重置Arduino软件_Arduino_Arduino Ide - Fatal编程技术网

使用引导加载程序重置Arduino软件

使用引导加载程序重置Arduino软件,arduino,arduino-ide,Arduino,Arduino Ide,我试图使用看门狗超时来完成arduino的重置,该超时允许它返回到要编程的引导加载程序。然而,最重要的目标只是能够通过串行命令重置设备并重新启动引导加载程序。这方面的很多挑战是,我认为我没有提出正确的问题,也没有使用正确的术语来搜索它。我有一个UNO运行Arduino 1.5附带的optiboot版本。提前感谢所有回答此问题的人。不确定您的问题是什么 但我听起来像是在问如何使用看门狗执行软重置 有几种方法可导致软复位。我使用的最快/最简单的设置是 #include <avr/wdt.h&g

我试图使用看门狗超时来完成arduino的重置,该超时允许它返回到要编程的引导加载程序。然而,最重要的目标只是能够通过串行命令重置设备并重新启动引导加载程序。这方面的很多挑战是,我认为我没有提出正确的问题,也没有使用正确的术语来搜索它。我有一个UNO运行Arduino 1.5附带的optiboot版本。提前感谢所有回答此问题的人。

不确定您的问题是什么

但我听起来像是在问如何使用看门狗执行软重置

有几种方法可导致软复位。我使用的最快/最简单的设置是

#include <avr/wdt.h>

如果您不想使用看门狗定时器,并且您的部件支持它,您可以在RST_CTRL from thread中设置重置位

如果您想使用看门狗定时器mpflaga,则mpflaga的答案正确,但请记住,根据您的零件,在重置后,看门狗定时器可能会启用,也可能不会启用,请参阅Atmels页面上的软重置。如果您的atmega在引导加载程序中重置,而您不希望它重置,那么这很可能是您的问题

wdt_enable(WDTO_15MS); // provides a Soft Reset when connected to FDTI Port, that provides power
for(;;) {} // wait for it to reset and start over at the boot loader...
#define RST_SWRST_bm 0x01
#define CCP_IOREG_gc (0xD8<<0)

void force_sw_reset(void)
{
    __disable_interrupt();

    CCP = (uint8_t)CCP_IOREG_gc;
    RST.CTRL = (uint8_t)RST_SWRST_bm
}
#define RESET_VECTOR 0
void (*ptrToFunction)(); // pointer to a function
ptrToFunction = RESET_VECTOR;
(*ptrToFunction)(); // reset!