简短的故事:

这些复位条件是什么,这些复位条件不会在ATmega处理器的MCUSR中置位,但仍会引起复位?

长话说:

我在ATmega168中使用了掉电检测,并在代码中占有一席之地。 如果我的系统断电,则电容器会使其保持在电源不足水平之上约半秒钟,并且当我恢复电源时,电源不足处理例程将成功运行。 (我检查了MCUSR中的MCUSR 。)

但是,当我缓慢降低系统电压并缓慢地将其释放时,处理器将重新启动,并且掉电处理例程无法运行: MCUSR为零! (我通过DebugWire使用外部调试器进行检查。)

是什么原因造成的? 如果是其他原因,例如看门狗被意外启用(我不使用它,而在启动时将其禁用),则MCUSR中至少会有一些东西。

但是,不是,它既不是看门狗复位(位3),掉电复位(位2),外部复位(位1)或上电复位(位0),那么导致复位的原因是什么?以上??

另一个奇怪的事情是:在这种情况下,在某些情况下,复位会定期发生,MCUSR中的复位值始终为零。

否则,当这种情况没有发生时,系统将始终完美运行。

编辑:

我在其他地方找不到结论性的答案,那么堆栈溢出或类似的软件相关错误会导致哪种复位? 也许这些情况可能会使处理器复位,而使MCUSR独处? 我以为这样的情况只会破坏RAM甚至是程序计数器,但不会导致复位。

===============>>#1 票数:3 已采纳

简短的故事:

这些复位条件是什么,这些复位条件不会在ATmega处理器的MCUSR中置位,但仍会引起复位?

长话说:

我在ATmega168中使用了掉电检测,并在代码中占有一席之地。 如果我的系统断电,则电容器会使其保持在电源不足水平之上约半秒钟,并且当我恢复电源时,电源不足处理例程将成功运行。 (我检查了MCUSR中的MCUSR 。)

但是,当我缓慢降低系统电压并缓慢地将其释放时,处理器将重新启动,并且掉电处理例程无法运行: MCUSR为零! (我通过DebugWire使用外部调试器进行检查。)

是什么原因造成的? 如果是其他原因,例如看门狗被意外启用(我不使用它,而在启动时将其禁用),则MCUSR中至少会有一些东西。

但是,不是,它既不是看门狗复位(位3),掉电复位(位2),外部复位(位1)或上电复位(位0),那么导致复位的原因是什么?以上??

另一个奇怪的事情是:在这种情况下,在某些情况下,复位会定期发生,MCUSR中的复位值始终为零。

否则,当这种情况没有发生时,系统将始终完美运行。

编辑:

我在其他地方找不到结论性的答案,那么堆栈溢出或类似的软件相关错误会导致哪种复位? 也许这些情况可能会使处理器复位,而使MCUSR独处? 我以为这样的情况只会破坏RAM甚至是程序计数器,但不会导致复位。

===============>>#2 票数:2

简短的故事:

这些复位条件是什么,这些复位条件不会在ATmega处理器的MCUSR中置位,但仍会引起复位?

长话说:

我在ATmega168中使用了掉电检测,并在代码中占有一席之地。 如果我的系统断电,则电容器会使其保持在电源不足水平之上约半秒钟,并且当我恢复电源时,电源不足处理例程将成功运行。 (我检查了MCUSR中的MCUSR 。)

但是,当我缓慢降低系统电压并缓慢地将其释放时,处理器将重新启动,并且掉电处理例程无法运行: MCUSR为零! (我通过DebugWire使用外部调试器进行检查。)

是什么原因造成的? 如果是其他原因,例如看门狗被意外启用(我不使用它,而在启动时将其禁用),则MCUSR中至少会有一些东西。

但是,不是,它既不是看门狗复位(位3),掉电复位(位2),外部复位(位1)或上电复位(位0),那么导致复位的原因是什么?以上??

另一个奇怪的事情是:在这种情况下,在某些情况下,复位会定期发生,MCUSR中的复位值始终为零。

否则,当这种情况没有发生时,系统将始终完美运行。

编辑:

我在其他地方找不到结论性的答案,那么堆栈溢出或类似的软件相关错误会导致哪种复位? 也许这些情况可能会使处理器复位,而使MCUSR独处? 我以为这样的情况只会破坏RAM甚至是程序计数器,但不会导致复位。

===============>>#3 票数:0

简短的故事:

这些复位条件是什么,这些复位条件不会在ATmega处理器的MCUSR中置位,但仍会引起复位?

长话说:

我在ATmega168中使用了掉电检测,并在代码中占有一席之地。 如果我的系统断电,则电容器会使其保持在电源不足水平之上约半秒钟,并且当我恢复电源时,电源不足处理例程将成功运行。 (我检查了MCUSR中的MCUSR 。)

但是,当我缓慢降低系统电压并缓慢地将其释放时,处理器将重新启动,并且掉电处理例程无法运行: MCUSR为零! (我通过DebugWire使用外部调试器进行检查。)

是什么原因造成的? 如果是其他原因,例如看门狗被意外启用(我不使用它,而在启动时将其禁用),则MCUSR中至少会有一些东西。

但是,不是,它既不是看门狗复位(位3),掉电复位(位2),外部复位(位1)或上电复位(位0),那么导致复位的原因是什么?以上??

另一个奇怪的事情是:在这种情况下,在某些情况下,复位会定期发生,MCUSR中的复位值始终为零。

否则,当这种情况没有发生时,系统将始终完美运行。

编辑:

我在其他地方找不到结论性的答案,那么堆栈溢出或类似的软件相关错误会导致哪种复位? 也许这些情况可能会使处理器复位,而使MCUSR独处? 我以为这样的情况只会破坏RAM甚至是程序计数器,但不会导致复位。

  ask by vsz translate from so

未解决问题?本站智能推荐:

4回复

你怎么知道微控制器何时复位?

我正在学习ARM9处理器(SAM9G20)上的嵌入式系统。 我更熟悉程序式编程以达到通用目的。 因此,我正在做的是浏览数据表并了解有哪些寄存器以及如何操作它们。 我的问题是,我如何知道计算机何时重置? 我知道有一个重置控制器可以管理重置。 称为状态寄存器( RSTC_SR )的寄存
1回复

使用ULPOSC32K在Atmel SAM L21 Xplained Pro中配置RTC-频率错误

我正在尝试使用超低功耗时钟OSCULP32K(使用ASF)在SAM L21 Xplained Pro B中以计数模式配置RTC。 为了对其进行测试,我遵循了快速启动RTC计数轮询的示例,该示例通过将RTC计数与给定时间段进行比较,每2000 ms切换一次LED0。 在该示例中,RTC_C
1回复

Atmel SAME70 USART接收超时未触发

任何人都可以帮助我获得Atmel ATSAME70 ARM M7 USART接收超时工作吗? 我的USART正在以115200波特正确发送和接收。 我正在使用ASF库,并按如下方式设置Rx Timeout: 我验证在US_RTOR寄存器中正确设置了TO值。 然后我使用此调用
1回复

ASF4 Microchip API计时器驱动程序重置功能

我将ASF4 API hal_timer用于ARM Cortex M4。 我正在使用计时器驱动程序来计时数据序列。 为什么不存在复位功能? 我在TIMER_TASK_ONE_SHOT模式下使用计时器,想在需要时将其重置。 我以为简单 可以解决问题,但似乎不起作用。 是否
13回复

用于微控制器的GUI库

关闭。 这个问题是题外话。 它当前不接受答案。 了解更多 。 想改善这个问题吗? 更新问题 ,使其成为Stack Overflow 的主题 。 我想为微控制器
4回复

我可以在编译时将指向RAM的指针存储在闪存中吗

我的问题解释: 在我的微控制器(Atmel AT90CAN128)上,我还有大约2500字节的RAM。 在这2500个字节中,我需要存储5倍100个数据集(大小将来可能会更改)。 数据集具有1到9个字节之间的预定义但可变的长度。 纯数据集占用的总字节数约为2000字节。 现在,我需
3回复

如何使用Arduino-Atmega 2560微控制器实现8位DAC(数模转换)?

我正在做一个录音机和播放器项目。 我想同时实现ADC(模拟到数字)和DAC(数字到模拟)转换器。 该代码应在Arduino-Atmega 2560(Atmel Microcontroller)中实现。 我尝试实现ADC,发现以下代码: 在这里,我将数字化信号发送到串行端口。 我有
3回复

Atmel微控制器:UBRR0H和UBRRnH之间的区别

因此,我正在阅读有关Atmel 328p编程的内容,并且希望能够对串行输入和输出进行编程,但是我发现并没有完全理解: 在此汇编代码中,UBRR0H被称为UBRRnH: 在此C代码中,其名称仍为UBRR0H: 根据生产CPU的Atmel的说法,该代码完全相同,那么为什么可
1回复

错误:所选处理器不支持ARM模式`wfi'

我在尝试编译ARM嵌入式C程序时遇到以下错误(我使用YAGARTO作为我的交叉编译器)。 我想弄清楚这个错误意味着什么,以及纠正它的步骤是什么。 从研究,我这样做的远,看来这个问题要wfi ,并wfe不是ASM指令。 我怎么能解决这个问题?
1回复

DDS插值 - 8位Atmel AVR ASM至12位DAC

我刚刚在采用ASM的Atmel AVR上完成了一个DDS项目,并得出结论,8位查找表和8位DAC在低频时会产生太多的量化失真; 由于缺乏更好的措辞,我在示波器上得到一个带有梯形效果的正弦波。 显然,如果我用大LPF平滑波形,我在高频时会出现振幅问题。 理论上,从8位升级到12位DA