For most PIC16F controllers the lowest power state is not always when MCLR is asserted.
This is because that GPIO pins become inputs when MCLR is asseted but those that do not have analog function become digital inputs. The GPIO pin digital input buffers may oscillate when the input voltage floats to switching threshold.
To get most PIC16F controllers to the lowest possible power state:
1 - Disable the watchdog timeout and brown out resets
2 - Mask all interrupt sources
3 - Clear the GIE bit in the INTCON register
4 - Set analog GPIO pins for analog mode and inputs
5 - Set digital GIPO output pins to high or low that draws the lowest system power
6 - Execute the SLEEP opcode
From this state the controller requires an MCLR or power cycle to restart.
When you get it all right the PIC will draw less than 2 microamps and typically less than 300 nanoamps.
These current levels are notoriously difficult to measure accurately even with the proper instrumentation.
post edited by dan1138 - 2020/08/13 13:55:25