msp430 , uart

Başlatan atioky_216, 30 Nisan 2012, 02:37:00

atioky_216

#include  "msp430g2553.h"

unsigned char data;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  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
 gelen=0x30;
 data=0x30;
  while(1){
   UCA0TXBUF=data;
   __delay_cycles(1000000);
   data++;
   if( data==0x40){data=0x30;}
  }
  
  __bis_SR_register(GIE);       // Enter LPM0, interrupts enabled
  
}


şöyle uyduruktan bir kod yazıp deneme yaparken keşfettim, hiç kesme açmadan direk TX uart buffer ına yazdığım ASCII değerleri güzel güzel gönderiyordum PC ye (açmadım derken tanımladım (GIE) ama ekstradan #pragma ile tanımlamama gerek olmadığını gördüm) fakat while (1) koşulunda RX olak gönderdiğim data
while(UCA0TXBUF==0x30)

şeklinde karşılaştırmaya öre çalışmasını istediğimde hiçbir tepki alamıyorum yada döngü içerisinde

while(1){
   UCA0TXBUF=data;
   __delay_cycles(1000000);
   data++;
   if( UCA0RXBUF>0x40){data=0x30;}
  }


şeklinde biraz denemeler yapmaya çalıştığımda hiçbir değişiklik yok, kodun RX den sanki haberi olmuyor  :o  Örnek kodları inceledim ama henüz pekte anlayabilmiş değilim açıkçası. Çok basit bir olay gibi görünüyor ama henüz çözemedim..