www.elektronik.si
MSP430 se sam resetira

www.elektronik.si -> 16 bitni mlinčki

Avtor: ticlaKraj: Župečja vas PrispevekObjavljeno: Tor Apr 28, 2015 6:42 pm    Naslov sporočila:  MSP430 se sam resetira
----------------------------------------------------------------------------
Imam težavo, da ko v kodo dodam, da omogočim interrutpe _EINT() se mi MSP samodejno resetira in sploh ne gre prek te funkcije. Za to funkcijo sem dal izpis prek RS232 in mi ne pošlje nič na port. Če _EINT() onemogočim mi pa pošlje prek porta, samo mi potem interupti ne delajo. Vmes mi je še celo nekaj časa delovalo, zdaj pa se je napaka ponovila ko sem samo ponovno prevedel in nisem kode spremenil.
Ne vem več kje še naj pogledam, če sem kaj narobe inicializiral. Ima kdo kakšno idejo.


Uporabljam pa crossStudio for MSP430 2.1.2 verzijo
MSP430F149
Razvojna ploščica, kjer sem dodal 8MHz kristal

Koda:
void
main(void)
{
int n=0;
 WDTCTL = WDTPW + WDTHOLD;
Initialization();
delay (60000);
delay (60000);
delay (60000);
delay (60000);

WDTCTL = WDTPW + WDTHOLD;
SendStringUart1("Build number: ");
SendIntegerUart1(BUILDNUMBER);
SendUart1NewLine ();

  //IE1 |= URXIE0;
  IE2 |= URXIE1;

// WDTCTL = WDTPW + WDTHOLD;
_EINT(); //-- Enable interrupts.
 SendStringUart1("1 ");
  //WDTCTL = 0x5A08;
   //SendStringUart1("2 ");
 
//SendStringUart1("3 ");
WDTCTL = 0x5A08;
  //SendStringUart1("4 ");
     while (1)
  { //SendStringUart1("Build number: ");
 //SendIntegerUart1(n);
  //n++;
   
  WDTCTL = 0x5A08;     //--  RESET watchdog timer
  if ( BIT_VALUE_UART1 & DEF_RECEIVE_PACKET )DecodeUart1();
 // if((P1IN&0x04)==0)ResetRele();
  }

}


Koda:

void Initialization (void)
{
    unsigned int i;

    WDTCTL = WDTPW + WDTHOLD;              //-- Stop WDT
   
    for ( i=0; i<50000; i++ );
    //--------------------------------------------------------------------------
    //--     EXTERNAL QUARTZ  start
    BCSCTL1 &= ~XT2OFF;                    //-- XT2on
    do  {
        IFG1 &= ~OFIFG;                      //-- Clear OSCFault flag
        for (i = 0xFF; i > 0; i--);          //-- Time for flag to set
    }
    while ((IFG1 & OFIFG) != 0);           //-- OSCFault flag still set?               
    BCSCTL2 |= SELM1+SELS;                 //-- MCLK = SMCLK = XT2
    //--------------------------------------------------------------------------
    for ( i=0; i<5000; i++ );
    for ( i=0; i<5000; i++ );
    //--------------------------------------------------------------------------
    InitUart0();//-- serial port initialization
    InitUart1 ();
    TimerInit();
    AnalogInputInit();
    //-------------------------------------------------------------------------
    //-------------------------------------------------------------------------
    //--   PORT P1
    P1DIR = 0xCD;    //--  11001101 LED 2,P1.1, A0,A1,A2,A14,A15,WR   inputs P1.1, A2, A14
//    P1OUT = 0x00;      //--   default output value
   
    P1OUT |=  0x40;  //--  SCL data line set to logical high
    //-------------------------------------------------------------------------
    //--   PORT P2
    P2DIR |= 0x03;    //--  output, MUX_1_6, MUX_1_7
    P2OUT |= 0x03;    //--  X3 input for Pfwd measure ( when CurrentMeasureValueQuick=0;)   
    P2DIR |= 0x08;    //--  output, LE_DIODE
    P2OUT &= ~0x08;   //--  output, LE_DIODE=0
    P2DIR |= 0x30;    //--  output, SDA, SCL
    P2DIR |= 0xC0;    //--  output, ETH_IOR, ETH_IOW
    P2OUT |= 0xC0;    //--  HIGH, ETH_IOR, ETH_IOW
   
    //-------------------------------------------------------------------------
    //--   PORT P3
    P3DIR |= 0x0F;        //--  output, ETHERNET ADDRESS 0 to 3
    P3SEL |= 0x30;        //-- P3.4,5 = USART0 option select
    P3DIR |= 0x10;        //-- P3.4 = output direction
    P3SEL |= 0xC0;        //-- P3.6,7 = USART1 option select
    P3DIR |= 0x40;        //-- P3.6 = output direction
    //-------------------------------------------------------------------------
    //--   PORT P4
    P4DIR=0xFF; //vsi izhodi
    P4OUT=0x00;
   
    //-------------------------------------------------------------------------
    //--   PORT P5
    P5DIR |= 0xF0;          //--  DATA PORT 0-3 input, 4-7 output
    P5OUT &= ~0x10;       
    P5OUT &= ~0x20;
    P5OUT &= ~0x40;
    P5OUT &= ~0x80;
    //-------------------------------------------------------------------------
    //--   PORT P6
    P6SEL |= 0xFF;          //-- Enable A/D channel A0
 //-------------------------------------------------------------------------
enable_analog_interrupt();
}

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group