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



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


    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: