2018-05-15 11:54 PM
When I run system clock through HSE(8MHz/24MHz/25MHz) and PLLCLK (multiplier PLLN and divider PLLM & PLLR) than mcu not reset by ESD.
But when I run system clock directly through HSE(8MHz/24MHz/25MHz) than mcu get reset by ESD.
Can any one comment for my issue..
Note: this post was migrated and contained many threaded conversations, some content may be missing.2018-05-18 03:44 AM
I've re-read the original post and you are quite right.. Maybe the VCO in the PLL keeps going for long enough to keep the MCU happy.
2018-05-18 04:23 AM
I am still not convinced that both things (reset with PLL, no reset without) are a direct effect of the ESD tests.
http://www.tylervigen.com/spurious-correlations
.The PLL implies a higher core clock, which in turn means higher current draw.
2018-05-18 11:58 AM
Can you elaborate more for VCO in PLL?
2018-05-18 12:01 PM
Yes I agree at high frequency or PLL require more current but by PLL it is not reset. Can you reply why happens so?
2018-05-18 12:25 PM
Yes I am using IWDG to obtain 250ms IWDG TimeOut.
And one more interesting thing is that by default in HAL library all
fault
interrupt handler routine having infinite while loop than at that time MCU reset during esd test and got hangs. But when I called system soft reset than only mcu not hangs. and restart.as in below code mcu not hangs when auto reset by esd otherwise sometimes it goes into this anyone handler and got hangs in infinite loop so I wrote in all handler as system soft reset in spite of infinite while loop only. But I don't now that in which handler it got hangs. So is it a right way??
I will do some more trials to find exact location and handler in which it goes after auto reset by esd.
void HardFault_Handler(void)
{NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}/**
* @brief This function handles Memory management fault.*/void MemManage_Handler(void){NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}/**
* @brief This function handles Prefetch fault, memory access fault.*/void BusFault_Handler(void){NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}/**
* @brief This function handles Undefined instruction or illegal state.*/void UsageFault_Handler(void){ NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}2018-05-18 12:27 PM
No mcu auto reset by esd.
And one more interesting thing is that by default in HAL library all
fault
interrupt handler routine having infinite while loop than at that time MCU reset during esd test and got hangs. But when I called system soft reset than only mcu not hangs. and restart.as in below code mcu not hangs when auto reset by esd otherwise sometimes it goes into this anyone handler and got hangs in infinite loop so I wrote in all handler as system soft reset in spite of infinite while loop only. But I don't now that in which handler it got hangs. So is it a right way??
I will do some more trials to find exact location and handler in which it goes after auto reset by esd.
void HardFault_Handler(void)
{NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}/**
* @brief This function handles Memory management fault.*/void MemManage_Handler(void){NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}/**
* @brief This function handles Prefetch fault, memory access fault.*/void BusFault_Handler(void){NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}/**
* @brief This function handles Undefined instruction or illegal state.*/void UsageFault_Handler(void){NVIC_SystemReset(); /*reset the system by software, after reset when power up check eeprom bytes for jumping to rom bootloader */}2018-05-18 12:29 PM
yes you are right.
I have question why by hse+pll not reset but by hse only reset on esd test.
2018-05-18 12:35 PM
I am testing esd through electric lighter on air discharge and on metal body by contact discharge. As in my lab don't have esd gun. But went to third party lab and also tested on esd gun. Same rest issue their also.
What you mean by lowest power possible? can you elaborate more please..
2018-05-18 12:37 PM
yes you are right
2018-05-18 12:43 PM
what in Hard fault handler I have to write. Can you elaborate more please..
And one more interesting thing is that by default in HAL library all
fault
interrupt handler routine having infinite while loop than at that time MCU reset during esd test and got hangs. But when I called system soft reset than only mcu not hangs. and restart.as in below code mcu not hangs when auto reset by esd otherwise sometimes it goes into this anyone handler and got hangs in infinite loop so I wrote in all handler as system soft reset in spite of infinite while loop only. But I don't now that in which handler it got hangs. So is it a right way??
I will do some more trials to find exact location and handler in which it goes after auto reset by esd.
void HardFault_Handler(void)
{NVIC_SystemReset();}
void MemManage_Handler(void){NVIC_SystemReset();}
void BusFault_Handler(void){NVIC_SystemReset();}
void UsageFault_Handler(void){NVIC_SystemReset();}