www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

MSP430 se sam resetira

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> 16 bitni mlinčki
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
ticla
Član
Član



Pridružen-a: Sob 15 Dec 2007 22:52
Prispevkov: 440
Aktiv.: 2.22
Kraj: Župečja vas

PrispevekObjavljeno: Tor Apr 28, 2015 6:42 pm    Naslov sporočila:  MSP430 se sam resetira Odgovori s citatom

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();
}

_________________
Moja delavnica ni razmetana, je samo taktično urejena.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> 16 bitni mlinčki Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group