[C14] Hỏi Về UART

Lý Cao Dương

Thành Viên PIF
Tình hình là e làm cái UART từ hổm rài vẫn chưa xong, code k báo lỗi, lấy code mẫu trên mạng luôn mà vẫn không truyền nhận qua Terminal được, Help me! Code của e đây
 

Attachments

NghiaJenius

Ban Chủ Nhiệm
Hi em, em up code lên tab code để anh check.
:)
Thường thì các bạn hay quên xoay ngang 2 jumper TXD,RXD ở kit, hoặc không đóng Port trước khi rút cáp, nên không put lên Terminal được.

Anh đã fix lỗi cho tất cả các bạn có đi học nhưng không có em ở đó.
Đi học đầy đủ nhé!
:la:
 

Lý Cao Dương

Thành Viên PIF
Hi em, em up code lên tab code để anh check.
:)
Thường thì các bạn hay quên xoay ngang 2 jumper TXD,RXD ở kit, hoặc không đóng Port trước khi rút cáp, nên không put lên Terminal được.

Anh đã fix lỗi cho tất cả các bạn có đi học nhưng không có em ở đó.
Đi học đầy đủ nhé!
:la:
Hôm đó e có việc nên ơhari về quê, vậy mấy ngày nay vẫn còn học hả a, e tưởng nghỉ hết rồi chứ, vậy giờ e có thể gặp anh để fix lỗi được không? :))
 

NghiaJenius

Ban Chủ Nhiệm
Hi em, lớp C14 hôm nay đã học bữa cuối. Em hóng đề thi cuối khoá trên forum nhé.
Em có thể tham khảo code mẫu UART/I2C đính kèm.
Notes:
- Tạo new project rồi add thêm các file thư viện và main vào, ghi đè main cũ.
- Uncomment các dòng i2c... để giao tiếp với DS1307 qua I2C.

Chúc em may mắn.
:)
 

Attachments

Lý Cao Dương

Thành Viên PIF
Hi em, lớp C14 hôm nay đã học bữa cuối. Em hóng đề thi cuối khoá trên forum nhé.
Em có thể tham khảo code mẫu UART/I2C đính kèm.
Notes:
- Tạo new project rồi add thêm các file thư viện và main vào, ghi đè main cũ.
- Uncomment các dòng i2c... để giao tiếp với DS1307 qua I2C.

Chúc em may mắn.
:)
CHo em hỏi về UART, VD 1MHZ, BR 9600, Thì trong userguide là UCBRSx=1, vậy UCA0MCTL = UCBRS0, nhưng em xem một số ví dụ em thấy có code mẫu là 1Mhz, BR 115200, UCBRSX =6, nhưng người ta dùng UCBRS2+UCBRS0, tức là 101, vậy nó chỉ bằng 5? Vậy là sao a? ah anh có thể cho em xin facebook để em tiện hỏi được không? advisor em đi làm rồi nên cũng khó liên hệ, mail em: lycaoduong@gmail.com
 

Lý Cao Dương

Thành Viên PIF
Hi em, em up code lên tab code để anh check.
:)
Thường thì các bạn hay quên xoay ngang 2 jumper TXD,RXD ở kit, hoặc không đóng Port trước khi rút cáp, nên không put lên Terminal được.

Anh đã fix lỗi cho tất cả các bạn có đi học nhưng không có em ở đó.
Đi học đầy đủ nhé!
:la:


Em giải quyết được cái UART rồi, mừng hết lớn, :)), thêm cái __delay_cycles thì mới được, tuy đã truyền được nhưng không hiểu tại sao phải có delay?
Code:
#include <msp430.h>


/*
* main.c
*/
unsigned long receive;
void config_clock()
{
if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF)
{
while(1);
}
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
}
void config_IO()
{
P1SEL |= BIT1 + BIT2;
P1SEL2 |= BIT1 + BIT2;
P1SEL &=~ BIT0 + BIT6;
P1SEL2 &=~ BIT0 + BIT6;
P1DIR |= BIT0 + BIT6;
P1OUT |= BIT0 + BIT6;
}
void config_UART()
{
UCA0CTL0 = 0x00;
UCA0CTL1 |= UCSSEL_2 + UCSWRST;
UCA0MCTL |= UCBRS1 ;
UCA0BR0 = 104;
UCA0BR1 =0;
UCA0CTL1 &=~ UCSWRST;
IE2 |= UCA0RXIE;
__bis_SR_register(GIE);
}

void main(void) {
WDTCTL = WDTPW | WDTHOLD;// Stop watchdog timer
config_clock();
config_IO();
config_UART();
while(1)
{

}
}

#pragma vector = USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
receive = UCA0RXBUF;
IFG2 &=~ UCA0RXIFG;
if (receive == 'a')
{
P1OUT ^= BIT0 + BIT6;
}
UCA0TXBUF = receive;
__delay_cycles(10000); // TAI SAO PHAI CO DONG DELAY NAY MOI GUI LEN XUONG DUOC????
}
 
Top