ธันวาคม 12, 2018, 01:31:51 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: ARM--UART  (อ่าน 5721 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« เมื่อ: มิถุนายน 11, 2010, 06:22:04 pm »

การใช้งาน UART ของ ARM (LPC213X) เบื้องต้น
บทความนี้เป็นผลพลอยได้มาจากคำถามที่มีคนถามผมมาทางอีเมล์ เพื่อให้เกิดประโยชน์ยิ่งขึ้นจึงขอนำโปรแกรมมาเขียนไว้ที่นี่ เผื่อจะเป็นประโยชน์กับผู้ที่หลงทางมา


Code: (c)

#include <LPC213X.H>

// กำหนดการทำงานของ UART ให้มีความเร็วที่ 96000 บิตต่อวินาทีที่ XTAL=11.0592MHz
void UartInit(void)
{
   PINSEL0 = 0x5;
   U0FCR   = 0x7;
   U0LCR   = 0x83;
   U0DLL   = 0x9;   // 96000 bps @ XTAL=11.0592MHz
   U0DLM   = 0x0;
   U0LCR   = 0x3;
}

// ส่งค่าออกไปทาง Serial Port โดยการเขียนค่าลงไปที่ U0THR
void UartWrite(char *str)
{
   unsigned char i=0;
   while(*(str+i))
   {
      U0THR=*(str+i); // !! ใช้ความสามารถของ FIFO ถ้าข้อมูลใน str ยาวเกินไปจะเกิดความผิดพลาดขึ้น
      i++;
   }
   while(!(U0LSR & (1<<6)));
}

// ฟังก์ชัน main เรียกใช้งานฟังก์ชัน UartInit() และ UartWrite()
int main(void)
{
   UartInit();

   UartWrite("shadowwares.com\r\n\0");

   while(1);
}



รายละเอียดไม่ขอพูดถึงนะครับ มีคำถาม หรือคำแนะนำเพิ่มเติม คลิกปุม "ตอบ" เลยครับ
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
trose88
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 40


| |
« ตอบ #1 เมื่อ: พฤษภาคม 26, 2011, 05:12:12 pm »

เข้ามาจดก่อน ขอบพระคุณครับ
บันทึกการเข้า
dbdbz
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 2


| |
« ตอบ #2 เมื่อ: กันยายน 15, 2012, 10:51:12 pm »

ขอบคุณมากครับ เป็นประโยชน์มากเลย ติดปัญหาตรงนี้อยู่นานเลย แก้ได้ซะที
บันทึกการเข้า
Mytheory
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 3


| |
« ตอบ #3 เมื่อ: กันยายน 26, 2012, 10:04:28 pm »

สอบถามอีกนิดนึงได้มั๊ยครับ..
แล้วถ้า เราต่อ Xbee กับ UART เพิ่ม เราจะต้องเขียนโปรแกรม RSSI ลงบน UartWrite หรอครับ

หรือว่า ต้องสร้างขึ้นมาเองเลย

ขอบคุณครับ
บันทึกการเข้า
วิสิทธิ์ แผ้วกระโทก
Global Moderator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 307



| |
« ตอบ #4 เมื่อ: กันยายน 27, 2012, 08:51:42 am »


ผมก็อยากลองเล่น XBee อยู่เหมือนกัน แต่ยังขาดแคลนอุปกรณ์ ลองศึกษาข้อมูลเพิ่มเติมของ Xbee ดูก่อนครับ

Tutorial XBee RF Modules E-book
http://microcontroller-electronics-update.blogspot.com/2012/09/tutorial-xbee-rf-modules-e-book.html


บันทึกการเข้า

dbdbz
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 2


| |
« ตอบ #5 เมื่อ: ตุลาคม 13, 2012, 07:21:16 pm »

จาก comment ใช้ความสามารถของ FIFO ถ้าข้อมูลใน str ยาวเกินไปจะเกิดความผิดพลาดขึ้น 
ถ้าต้องการเขียน character ยาวกว่านี้ มีวิธีการแก้ไขอย่างไรบ้างครับ
บันทึกการเข้า
anon1206
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 30


| |
« ตอบ #6 เมื่อ: พฤษภาคม 17, 2013, 07:38:39 pm »

แล้วคำสั่งอ่านข้อมูลจาก uart เพื่อนำมาคำนวณในฝั่ง MCU เขียนยังไงครับ
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #7 เมื่อ: พฤษภาคม 18, 2013, 06:52:46 am »

Code: (c)

if (U0LSR & 0x01) {         
    rx_data = U0RBR;         
    // process the rx_data here.

บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: