AnsweredAssumed Answered

Newly programmed MCU sudddenly "burn out" for the second time...

Question asked by Rastislav Matula on Oct 14, 2009
Latest reply on Oct 18, 2009 by Rastislav Matula

Hello,

 

I am new in here, and I have really little experience with freescale MCU. Few days ago, I made OSBDM (exactly this: Link (site is in Czech)) After few small complications i finally programmed OSBDM, and everything looks to be working fine. I succesfully programmed the MCU (MC9S08JM60) with a simple C code - blinking LED and I steped into debuging mode. I was able step the program, and I saw that LED are blinking correctly. The problem occured when I tryed to run the program outside the debugging mode. When I connected external power supply, the supply current rised about 1A and MCU basically burn out. Whenewer after that I connect the OSBDM, temperature rise rapidly, and MCU is smoking :smileyhappy:

 

What is suprising, that MCU is still not in silicon heaven. When I am quick I am able to  re-program the MCU while it get to "smoking point" :smileyhappy:  but it is not worth anythyng, when It cannot run more than 10sec.

 

I thought that it was some error in the connection MCU for the first time, so i changed the new MCU and DOUBLE CHECKED everything. But second time happend the exactly the same. (this time I had limited current to 150mA, so the MCU dont burn out, but the voltage get dropping to zero) I dont want to burn out the third MCU, so I kindly asking if somebody can help me with this. I am  assuming, that there is just some basic (hardware) problem, but I have no experience with Freescale :smileysad:

 

I started example project, without editing anything, so I am assuming that is used internal oscilator, and other default stuff. Image of my circuit connection is here: Photo1   Photo2   Connection         

 

The source code I am using:

 


#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

void main(void) {

  EnableInterrupts; /* enable interrupts */


  PTBDD = 0x07; // initialize PTB0-PTB2 as output
  PTBD = 0;  // initialize PTB to 0

  for(;;)
  {


    PTBD_PTBD0 = ~PTBD_PTBD0;  // invert the output 
    PTBD_PTBD1 = ~PTBD_PTBD1;  // invert the output
    PTBD_PTBD2 = ~PTBD_PTBD2;  // invert the output

  
    __RESET_WATCHDOG(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

 

 Thanks for anny suggestions! And sorry about my english :smileyhappy:

 

 

Outcomes