I'm very sorry to report that I received my new batch of Pro Minis today, and they too sleep at 150uA rather than the 1uA shown in the datasheet. These use the same "the Simple" board as the others, but the processor markings are different. Since I established before that no other part on the board was causing this problem, I have to conclude that the processor is the problem in all these cases.
So I have the situation where my older Mini, which uses the same board, and which has a date code marking of 2018, produces the correct 1uA sleep current, but all of the newer Minis, with date codes of 2019, sleep at 150uA. The test sketch, bootloader and fuses are the same in all.
I have to conclude that either all of these newer processors are counterfeits, or there has been a change in the 328P that Microchip hasn't told us about. In any case, unless somebody has a recent source of Minis that produce the 1uA sleep current with the power LED and regulator removed when running my test sketch, I'm going to have to give up on this and eliminate the Mini as a low-current option for battery power. I don't know what to replace it with, except maybe the breadboard PU chip.
I'll reproduce my test code below in case anybody wants to try the same test on their Mini or their PU. If anyone has another version of a test sketch that they think is more likely to produce the correct sleep current, please post it. I'll be happy to try anything.
Also, if anyone knows how I might officially raise this issue with Microchip, please let me know. I'm just a hobbyist, so there's no reason why they should talk to me.
I think this really sucks.
#include <avr/sleep.h>
#include <avr/wdt.h>
int i;
void setup(){
for (i = 0; i < 20; i++) { // all pins to one rail or the other - power saving
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
ADCSRA = 0; // disable ADC for power saving
wdt_disable(); // disable WDT for power saving
set_sleep_mode (SLEEP_MODE_PWR_DOWN); // Deep sleep
sleep_enable();
sleep_bod_disable(); // disable brownout detector during sleep
sleep_cpu(); // now go to sleep
}
void loop(){
}