Đánh giá chủ đề:
  • 71 Vote(s) - Trung bình 3.17
  • 1
  • 2
  • 3
  • 4
  • 5
uart msp430
Bài viết: #1
You are not allowed to view links. Register or Login to view.
Trong code sample của MSP430G2xx1 Code Examples, có 1 file msp430g2xx1_ta_uart2400.c. Mình nghĩ file đó có chức năng nhận 1 byte, sau đó truyền lại đúng tín hiệu đó. Mình đã thử nạp vào kit, nhưng khi gửi tín hiệu từ Hyper Terminal vào kit thì không thấy có tín hiệu trả lại. Mọi người có ai biết tại sao không! Giari thích giúp tớ với! Cám ơn rất nhiều!
Trả lời
Bài viết: #2
Trên Kit lauchpad chỗ 5 cái Jump đó , bạn đổi chiều Jump ở chân TxD và RxD. Nếu dùng module UART, còn nếu dùng Timer thì dữ nguyên .
Bạn có thể thao khảo bài viết :You are not allowed to view links. Register or Login to view.
Trả lời
Bài viết: #3
T dùng Timer mà! Nhưng ko hiểu sao t giữ nguyên rồi vẫn ko dc! 16
Code:
#define     TXD                   BIT1                      // TXD on P1.1
#define     RXD                   BIT2                      // RXD on P1.2
//   Conditions for 2400 Baud SW UART, ACLK = 32768
#define Bitime_5  0x06                      // ~ 0.5 bit length + small adjustment
#define Bitime    0x0E                      // 427us bit length ~ 2341 baud
unsigned int RXTXData;unsigned char BitCnt;
void TX_Byte (void);void RX_Ready (void);
#include  <msp430g2553.h>

void main (void){
WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  CCTL0 = OUT;                              // TXD Idle as Mark  
TACTL = TASSEL_1 + MC_2;                  // ACLK, continuous mode
P1SEL = TXD + RXD;                        //
P1DIR = TXD;                              //
// Mainloop  
for (;;)  {  
   RX_Ready();                               // UART ready to RX one Byte
  _BIS_SR(LPM3_bits + GIE);                 // Enter LPM3 w/ interr until char RXed  
  TX_Byte();                                // TX Back RXed Byte Received  
}}

// Function Transmits Character from RXTXData Buffer
void TX_Byte (void){  BitCnt = 0xA;                             // Load Bit counter, 8data + ST/SP  
while (CCR0 != TAR)                       // Prevent async capture
   CCR0 = TAR;                             // Current state of TA counter  
CCR0 += Bitime;                           // Some time till first bit  
RXTXData |= 0x100;                        // Add mark stop bit to RXTXData
RXTXData = RXTXData << 1;                 // Add space start bit
CCTL0 =  CCIS0 + OUTMOD0 + CCIE;          // TXD = mark = idle
while ( CCTL0 & CCIE );                   // Wait for TX completion}

// Function Readies UART to Receive Character into RXTXData Buffer
void RX_Ready (void){  BitCnt = 0x8;                             // Load Bit counter  
CCTL0 = SCS + OUTMOD0 + CM1 + CAP + CCIE;   // Sync, Neg Edge, Cap}
// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR__interrupt
void Timer_A (void){  
CCR0 += Bitime;                           // Add Offset to CCR0
// TX
  if (CCTL0 & CCIS0)                        // TX on CCI0B?  
{    if ( BitCnt == 0)    CCTL0 &= ~ CCIE;                        // All bits TXed, disable interrupt  
else    {      CCTL0 |=  OUTMOD2;                    // TX Space    
if (RXTXData & 0x01)      CCTL0 &= ~ OUTMOD2;                   // TX Mark      
RXTXData = RXTXData >> 1;      BitCnt --;    }  }// RX  
else  {    if( CCTL0 & CAP )                       // Capture mode = start bit edge  
{    CCTL0 &= ~ CAP;                         // Switch from capture to compare mode  
  CCR0 += Bitime_5;    }    
else    {    RXTXData = RXTXData >> 1;      if (CCTL0 & SCCI)                     // Get bit waiting in receive latch    
RXTXData |= 0x80;      BitCnt --;                            // All bits RXed?    
if ( BitCnt == 0)
//>>>>>>>>>> Decode of Received Byte Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  
   {      CCTL0 &= ~ CCIE;                      // All bits RXed, disable interrupt    
  _BIC_SR_IRQ(LPM3_bits);               // Clear LPM3 bits from 0(SR)    
}//>>>>>>>>>> Decode of Received Byte Here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  
}  }}
bạn xem giúp t với! Cám ơn bạn nhiều!
Trả lời
Bài viết: #4
T k hiểu lắm cái timer này. Xài timer phúc tạp quá@@. T chỉ bít là tốc độ 2400, truyền 10 bit
Trả lời


Đi tới chuyên mục:


Thành viên đang xem chủ đề: 1 Khách