Further study reveals that the correct call is to CySysWatchdogFeed(), which does call CySysWdtResetCounters(), but with a different register ID, so I was kind of close.
Still working on it, but gaining a bit of ground.
OK. I finally futzed around with this enough to get it "working".
I don't have a WCO, so ILO feeds LFCLK, which drives Timer0 (65535 divider = ~2 seconds).
Prior to the main loop,
In the main loop:
I have test code that allows me to push a button to enter a for(;;), and the watchdog trips after ~2 seconds.
So, several days have been spent getting half a dozen lines of code to work. But it's a matter of picking the right half dozen lines of code!
The test code that I got to work ( and ported to my project) is:
uint32 x = 0;
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
if(CySysGetResetReason(CY_SYS_RESET_WDT) == CY_SYS_RESET_WDT )
LED_R_ON(); // turn on the red LED
while(1); // hang
for( int i = 0; i < 20; i++)
LED_B_Write( x & 1); // Toggle the Blue LED so we know something's going on
// If you don't feed the WDT it will cause a reset in ~3 seconds
/* NOW it will hang, and in about 3 seconds, the
Watchdog will fire and the red LED will blink. */