What are the current fuse values? When you burned the bootloader, what board did you select in the IDE to burn it as?
I have used the Arduino Micro board in the IDE to burn the bootloader.
When you say it doesn't work at 3.3V, what does that mean?
Firstly The USB serial port wont connect
I then switched back to 5V, uploaded the blink sketch, switched to 3v3 and the led no longer flashes. I did this test because I thought the problem could have been just with the USB interface and the MCU might have been running.
So you're saying you flash the bootloader at 5V, which makes it identical to a real Micro, but a real Micro will run at 3.3V but yours will not? How do you connect the 3.3V supply to them? I assume this is with USB disconnected in both cases.
Well, I'm just having trouble understanding what's going on. But if the bootloader and fuses are the same, then either you have a counterfeit 32U4 that doesn't perform, or there is some hardware difference in the circuits that we haven't identified.
Ok.. Here's the schematic again with text font fixed!
SBUS SENSOR MODULE V1.zip (34.5 KB)
So you're saying you flash the bootloader at 5V, which makes it identical to a real Micro, but a real Micro will run at 3.3V but yours will not?
Exactly!
How do you connect the 3.3V supply to them? I assume this is with USB disconnected in both cases.
Please see full schematic in previous post.
For now USB supply is lowered to 3V3 using an fixed 3V3 regulator
Ok, looks good; as far as I can tell having looked at it for a few minutes, I can't see anything that would immediately explain the behavior you're seeing. Two things come to mind:
1: There's no chance of anything being pulled up elsewhere to 5V which ends up on the 32U4, forcing it into shutdown? I see for instance I2C being made available through a connector; no devices attached with pullups to 5V or something like that? I assume you are testing the board with nothing connected to it except a power input (preferably not USB)?
2: You mention you can see the oscillator running at 3V3. So what exactly are the symptoms of the non-functioning MCU?
Have you tried powering without d+ & d- connection on the usb connector? Shouldn't make a difference, but it further isolates the MCU from the outside world.
Have you scoped VCC to see if its stable?
Is there a brownout detector fuse that's not programmed correctly?
That's all I can think of for now...
Are you measuring 3.3V on the Vcc pins of both the original Micro and your stand alone? And a pre-programmed Blinky runs on the Micro but not on yours? Well I don't know.
I measure 3v3 across one of the decoupling caps since the actual Vcc pin of the chip is not accessible being a QFN package...
How do you connect the 3.3V supply to them? I assume this is with USB disconnected in both cases.
Yes, I ve powered it with an external PSU with the USB plug disconnected
Have you scoped VCC to see if its stable?
You mean 3v3 Vcc? From the schematic, 3v3 comes from the AMS117-3.3 regulator which gets its supply from the USB... I havent scoped it but there is no reason why it wouldn't be stable...
In addition as I said , I also tried an external regulated 3v3 supply (Rigol 832 PSU) with the same results.
Is there a brownout detector fuse that's not programmed correctly?
No idea! Fuses are burned with bootloader...Havent touched them afterwards.
Ok, check that first. See the datasheet, page 53 for a table of brown-out fuse settings and their margins.
Have you programmed the 32u4 processor to act as a USB to serial interface?
The 32u4 has a built-in usb interface (unlike the 328 that Uno is based on).
I burned the arduino micro bootloader so it acts just like a micro. Did this 10s of times so far with other custom pcbs i ve designed and it works fine. Only difference this time am trying to power it with 3v3.
Even now it works at 5v but not at 3v3.
Other micros (tried 3 so far) work at 3v3 too.
Well, if it works fine at 5V, and if the Vcc pins have a good 3.3V supply, and the crystal caps are the right value, and the /Reset pin is still high, then I can't think of a reason why a pre-programmed blink sketch wouldn't work unless something is wrong with the 32U4. Where did you get it?
When you tried it with an 8 MHz crystal, did it work at 5V but blinking at half the rate, but then still wouldn't do that at 3.3V?
If you programmed it as a Micro, then the L/H/E fuses are FF/D8/CB, which puts the BOD level at 2.7V. So that shouldn't be a problem.
I don't really know the 32U4, but I can't think of any explanation that wouldn't also affect the genuine Micro. Are your three Micros genuine Arduino Micros, or Sparkfun-type Pro Micros? Well, either way, it's still a 32U4.
Coming back on the above issue which still puzzles me, this is the output when bootloader is burned using adruino as ISP at 5v:
System wide configuration file is "C:\Users\John\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
Using Port : COM29
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega32U4
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 9000 9000 0x00 0x00
flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Users\John\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5/bootloaders/caterina/Caterina-Micro.hex"
avrdude: writing flash (32730 bytes):
Writing | ################################################## | 100% 35.86s
avrdude: 32730 bytes of flash written
avrdude: verifying flash memory against C:\Users\John\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5/bootloaders/caterina/Caterina-Micro.hex:
avrdude: load data flash data from input file C:\Users\John\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5/bootloaders/caterina/Caterina-Micro.hex:
avrdude: input file C:\Users\John\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5/bootloaders/caterina/Caterina-Micro.hex contains 32730 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 19.68s
avrdude: verifying ...
avrdude: 32730 bytes of flash verified
avrdude: reading input file "0x2F"
avrdude: writing lock (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x2F:
avrdude: load data lock data from input file 0x2F:
avrdude: input file 0x2F contains 1 bytes
avrdude: reading on-chip lock data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude done. Thank you.
So in short,
- bootloader burns successfully at 5V with 16MHz crystal . LED blinks as expected and also USB - terminal comms are working
- Voltage is switched to 3V3 and oscillator is replaced with 8MHz. Nothing works anymore. Oscillations of 8Mhz can be detected across the crystal
- Voltage is switched back at 5V, Everything works again and the LED blinks at half rate (8 Mhz crystal still on)
Is it possible that the clone micro which works on both 5V and 3V3 (even without changing the crystal) has a different bootloader / set of fuses?
Do I need to change anything else ?
EDIT: Did another test by gradually increasing supply voltage starting from 3V till the LED starts to blink. the MCU start working at 3.5V , anything below that and it stops.
I really need to get this working on 3V3 for a battery operated project i am designing 
Below are the boards.txt entries provided by Sparkfun for the Pro Micro:
################################################################################
################################## Pro Micro ###################################
################################################################################
promicro.name=SparkFun Pro Micro
promicro.upload.tool=avrdude
promicro.upload.protocol=avr109
promicro.upload.maximum_size=28672
promicro.upload.maximum_data_size=2560
promicro.upload.speed=57600
promicro.upload.disable_flushing=true
promicro.upload.use_1200bps_touch=true
promicro.upload.wait_for_upload_port=true
promicro.bootloader.tool=avrdude
promicro.bootloader.unlock_bits=0x3F
promicro.bootloader.lock_bits=0x2F
promicro.bootloader.low_fuses=0xFF
promicro.bootloader.high_fuses=0xD8
promicro.build.board=AVR_PROMICRO
promicro.build.core=arduino:arduino
promicro.build.variant=promicro
promicro.build.mcu=atmega32u4
promicro.build.usb_product="SparkFun Pro Micro"
promicro.build.vid=0x1b4f
promicro.build.extra_flags={build.usb_flags}
######################### Pro Micro 3.3V / 8MHz ################################
promicro.menu.cpu.8MHzatmega32U4=ATmega32U4 (3.3V, 8 MHz)
promicro.menu.cpu.8MHzatmega32U4.build.pid.0=0x9203
promicro.menu.cpu.8MHzatmega32U4.build.pid.1=0x9204
promicro.menu.cpu.8MHzatmega32U4.build.pid=0x9204
promicro.menu.cpu.8MHzatmega32U4.build.f_cpu=8000000L
promicro.menu.cpu.8MHzatmega32U4.bootloader.extended_fuses=0xFE
promicro.menu.cpu.8MHzatmega32U4.bootloader.file=caterina/Caterina-promicro8.hex
############################# Pro Micro 5V / 16MHz #############################
promicro.menu.cpu.16MHzatmega32U4=ATmega32U4 (5V, 16 MHz)
promicro.menu.cpu.16MHzatmega32U4.build.pid.0=0x9205
promicro.menu.cpu.16MHzatmega32U4.build.pid.1=0x9206
promicro.menu.cpu.16MHzatmega32U4.build.pid=0x9206
promicro.menu.cpu.16MHzatmega32U4.build.f_cpu=16000000L
promicro.menu.cpu.16MHzatmega32U4.bootloader.extended_fuses=0xCB
promicro.menu.cpu.16MHzatmega32U4.bootloader.file=caterina/Caterina-promicro16.hex
There is a general section that applies to both versions, and then separate sections for the entries where the 3.3V and 5V versions are different. Notice that the extended fuse is different. And of course the bootloaders and f_cpu values are different.
You could download the Sparkfun files from Github, and install their boards into the Arduino IDE. Then you should be able to install the 8MHz resonator, and then just flash the bootloader and fuses as a 3.3V in the first place. So far as I know, the original Arduino Micro only comes in a 5V version.
Done!
Thats it , it works now on 3v3 as well.
So it was a bootloader issue.
Took me 2 months of trials till I received your input
Wish it was all better documented
THANK YOU so much!! 
I was thinking it was a brownout detection voltage level issue because raising the supply voltage made it blink. But even the 0xCB value for the extended fuses on the 5V version sets the BOD level at 2.6V, which shouldn't interfere with 3.3V. It would have to have been F8, F9, or FA to have the brownout level above 3.3V. So it's still a mystery.
By the way i have a chinese clone micro which works fine on both 5v and 3v3 !
That provides no information. Obviously a 8MHz clone will work fine on 5V and 3.3V.
And you have obviously tested that at -40oC and +85oC.