IAR Embedded Workbench ile MSP430G2553 Sorunu

Başlatan leronamso, 03 Mayıs 2013, 14:36:02

leronamso

merhaba,
MSP430 kodlamaktan pek anlamam sadece IAR kullanarak msp430 a kodları atmayı biliyorum.
android ile dimmer kontrol adlı bir proje seçtim ödevim için. burada MSP430G2553 kullanılıyor. sonra ben içine kodları attım msp430Launchpad in led1'i sürekli yanıyordu. zaten böyle olması gerekiyor. projenin videosunda da böyle, uygulamayı çalıştıran arkadaşlarda da böyle. ardından ben deney yapa yapa bu led1 yanmamaya başladı. defalarca aynı kodları atmıştım mspye, bende msp430g2553 bozuldu diye düşünmüştüm.

ardından çizgi marketten yeni launchpad aldım, yeni launchpad üzerinde yeni MSP430g2553 'e aynı kodları attım. fakat yine led1 çıkış vermedi.

-kodları atarken bir hata almıyorum
-ALT+F7 ye basıp işlemciyi doğru seçiyorum ve debugger kısmından FET DEBUGGER 'i seçiyorum.
-kodlarda bir oynama yapmadım.

ama ne hikmetse sorunun ne olduğunu bir türlü anlayamıyorum.
sanırım sorun IAR'da. programda bikaç ayarı bozmuş olabilirim. ama bu neyden kaynaklanıyor olabilir ki ?

bakın projenin videosu burda, yapan arkadaşta da gördüğünüz üzere LED1 (kırmızı led) sürekli yanıyor. normade de böyle olması lazımdı ;
Cep telefonu ile dimmer.mp4

Lütfen arkadaşlar yardımcı olun yoksa kafayı yiyeceğim kaç haftadır, dönemin bitmesine de az kaldı...

Kodlar bunlar, siz de deneyebilirsiniz. Launchpad 'de Led1 in sürekli Yanması lazım;

//******************************************************************************
//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//
//   Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//   USCI_A0 RX interrupt triggers TX Echo.
//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz
//
//                MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------
//
//   D. Dang
//   Texas Instruments Inc.
//   February 2011
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include  "msp430g2553.h"

char durum = 0;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
 
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
 
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 0;
  TACTL = TASSEL_2 + MC_0 + TACLR;                  // SMCLK, contmode
 
  P1DIR = BIT0;
  P1OUT = 1;
  P1IE =  0x20;
  P1IES = 0x20;
 
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(GIE);       
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
    P1OUT = 0x00;
    __delay_cycles(100);
    P1OUT = 0x01;
    TACTL = MC_0;

}

// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
 
  if( ((P1IFG & 0x20) == 0x20) && durum  )
    {
      TACTL = MC_1 | ID_0 | TASSEL_2 | TACLR;
    }
  P1IFG = 0;
}




//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  if( UCA0RXBUF > 100 )
  {
    if( UCA0RXBUF == 120 )
      durum = 1;
    else if( UCA0RXBUF ==121  )
      durum = 0;
  }
  else if( UCA0RXBUF < 101 )
     CCR0 = UCA0RXBUF *95;
     
}

Kaanx

İar da options actıgınızda onunuze ılk ekranda kullandıgınız işlemciye seçmeniz gerekmektidir.
General Options -> target sekmesinde ki device bölümünden Msp430xg2xx3 family den g2553 secılmiş olmak zorunda

leronamso

Alıntı yapılan: Kaanx - 03 Mayıs 2013, 17:10:50
İar da options actıgınızda onunuze ılk ekranda kullandıgınız işlemciye seçmeniz gerekmektidir.
General Options -> target sekmesinde ki device bölümünden Msp430xg2xx3 family den g2553 secılmiş olmak zorunda

hocam yukarıda yazmıştım. onu seçiyorum zaten alt+F7 yi tuşlayıp.

metaltrrocker


burak ozturk

//******************************************************************************
//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//
//   Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//   USCI_A0 RX interrupt triggers TX Echo.
//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz
//
//                MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------
//
//   D. Dang
//   Texas Instruments Inc.
//   February 2011
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include  "msp430g2553.h"

char durum = 0;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 0;
  TACTL = TASSEL_2 + MC_0 + TACLR;                  // SMCLK, contmode
  
  P1DIR = BIT0;
  P1OUT = 1;
  P1IE =  0x20;
  P1IES = 0x20;
  
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(GIE);    

  for(;;);
  
}



#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
    P1OUT = 0x00;
    __delay_cycles(100);
    P1OUT = 0x01;
    TACTL = MC_0;
 
}

// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  
  if( ((P1IFG & 0x20) == 0x20) && durum  )
    {
      TACTL = MC_1 | ID_0 | TASSEL_2 | TACLR;
    }
  P1IFG = 0;
}




//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  if( UCA0RXBUF > 100 )
  {
    if( UCA0RXBUF == 120 )
      durum = 1;
    else if( UCA0RXBUF ==121  )
      durum = 0;
  }
  else if( UCA0RXBUF < 101 )
     CCR0 = UCA0RXBUF *95;
      
}


main in altına sonsuz döngü ekleyip bir denermisin ? bir de çözüm olmazsa biz de ki programı txt halinde aşağıda attım bunu
http://processors.wiki.ti.com/index.php/MSP430_Flasher_-_Command_Line_Programmer linkindeki programlayıcı ile msp ye atmaya çalışab
ilirsin.


bende derlenen txt şu şekilde :

@C000
31 40 00 04 3C 40 00 02 3D 40 01 00 B0 12 22 C1
B0 12 18 C0 B0 12 34 C1 B2 40 80 5A 20 01 D2 42
FF 10 57 00 D2 42 FE 10 56 00 B2 40 10 00 62 01
82 43 72 01 B2 40 04 02 60 01 D2 43 22 00 D2 43
21 00 F2 40 20 00 25 00 F2 40 20 00 24 00 F2 40
06 00 26 00 F2 40 06 00 41 00 F2 D0 80 00 61 00
F2 40 68 00 62 00 C2 43 63 00 E2 43 64 00 D2 C3
61 00 D2 D3 01 00 32 D2 FF 3F 0F 12 0E 12 F2 90
65 00 66 00 0E 28 F2 90 78 00 66 00 03 20 D2 43
00 02 1C 3C F2 90 79 00 66 00 18 20 C2 43 00 02
15 3C F2 90 65 00 66 00 11 2C 5F 42 66 00 4F 4F
0E 4F 0F 5F 0E 5F 0F 5F 0E 5F 0F 5F 0E 5F 0F 5F
0E 5F 0F 5F 0F 5F 0F 5E 82 4F 72 01 3E 41 3F 41
00 13 0F 12 0E 12 C2 43 21 00 00 3C 3F 40 1F 00
3F 53 FE 2F D2 43 21 00 82 43 60 01 3E 41 3F 41
00 13 F2 B0 20 00 23 00 06 28 C2 93 00 02 03 24
B2 40 14 02 60 01 C2 43 23 00 00 13 0A 12 21 83
0A 4C 81 4A 00 00 0D 41 0D 53 5C 43 B0 12 3C C1
F8 3F 0F 4C 0F 5D 03 3C CC 43 00 00 1C 53 0C 9F
FB 23 30 41 30 40 38 C1 30 40 0C C1 30 41 
@FFE4
F2 C0 
@FFEE
7A C0 
@FFF2
D2 C0 
@FFFE
00 C0 
q
happy coding.

leronamso

Alıntı yapılan: metaltrrocker - 03 Mayıs 2013, 20:49:44
Ben denedim Led1 sürekli yanıyor.

sanırım IAR ile ilgili bir problemdi hocam biraz kurcalayınca bende de oldu,
teşekkür ederim.

metaltrrocker