Hi,All
I meet a problem, I use the FS6500 watchdog.
LFSR first seed is 0xb2, it returns 0x4d,but it gives it to 0x49DB,I think it send the wrong seed.
I debug the FS6500 demo, it returns the right seed and answer.
How could it make it right?
Hello, i have a similar problem... I'm computing what seems to be the right values but on the 3rd or 4th refresh, the FS6500 doesn't want them anymore and stops :
1st : LFSR 0xb2 -> WD_ANSWER 0x4d OK
2nd : LFSR 0x64 -> WD_ANSWER 0x9b OK
3rd : LFSR 0xc8 -> WD_ANSWER 0x37 OK
4th: LFSR 0x91 -> WD_ANSWER 0x6e NOK
And then it stops, of course.
Here's my function :
static uint8_t computeWdAnswer7_0(uint8_t lfsr)
{
unsigned int answer = (unsigned int) lfsr;
answer = ~(((answer * 4u) + 6u) - 4u) / 4u;
return (uint8_t) answer;
}
Hello Joachim,
The values are correct.
Please double check your timing, most likely you send the right watchdog answer during the closed window.
After closing the initialization phase of the FS65 by the first good watchdog refresh, the watchdog window is running and your MCU must refresh the watchdog in the open window of the watchdog window period.
Best regards,
Tomas
Hi,
0x4D is the correct value based on the default LFSR value (0xB2), that needs to be send to the WD_ANSWER register during the 256ms open window (INIT_FS phase).
Then you have to implement generic way to periodically refresh the WD based on WD_LFSR and calculation provided in our documentation.
You can find an example illustrating that in the FS65/45 SW Driver.
I hope it helps!
Best regards,
Tomas