การเขียนโปรแกรมบนไมโครคอนโทรลเลอร์ เพื่อสื่อสารทาง USART

    มาถึง ตอนที่ 3 หลังจากที่เราได้สร้างโค๊ดที่จะทำงานบน PC ใน ตอนที่ 2 เสร็จไปเรียบร้อยแล้ว ก็มาถึงคราวที่จะต้องสร้างโค๊ดบนฝั่งไมโครคอนโทรลเลอร์กันบ้าง เพื่อให้ทั้งสองฝั่งสื่อสารได้เข้าใจกัน เราก็ยังต้องยึดเอาข้อตกลงทาง Protocol ที่เราสร้างขึ้นเองนั้น มาเขียนเป็นโค๊ดทางฝั่งไมโครฯ กัน 

ในที่นี้ ผมจะเขียนโค๊ดด้วยรูปแบบภาษา wiring บน Arduino เพื่อตัดปัญหาความยุ่งยากในเรื่องโค๊ดออกไปก่อน เพราะเราต้องการแค่เข้าใจคอนเซ็ปต์การรับส่งข้อมูลกันก่อนเท่านั้น ส่วนแต่ละท่าน หาก ถนัดภาษาใด กับไมโครคอนโทรลเลอร์ตระกูลไหน ก็ยังเอาโปรแกรมใน ตอนที่ 2 ยังไปใช้งานได้อยู่ ขอเพียงโค๊ดที่อยู่ทางฝั่งไมโครทำงานได้ตามเงื่อนไข ที่เรากำหนดไว้ใน Protocol ที่เราตกลงกันไว้แต่แรกแล้ว 
 


    ทางฝั่งไมโครคอนโทรลเลอร์ หรือ Arduino ที่เรากำลังเขียนอยู่นี้ อย่างแรกเลย ก็ต้องทำการเปิดการใช้งาน USART module ก่อน สำหรับ Arduino แล้ว มันง่ายมากๆ ที่จะเปิด module นี้ เพียงเรากำหนด Serial.bigin(9600); ใน void setup(){.....} เราก็เปิดการใช้งาน USART แล้ว

void setup()
{
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  // initialize the serial communication:
  Serial.begin(9600);
}

เมื่อเราเปิดใช้งานแล้ว ขั้นตอนต่อไป ก็เขียนโค๊ด ไว้ดักรอข้อมูลที่ถูกส่งเข้ามาทางขา RXD ของ Arduino แล้วแสดงผลออกทาง Logic Probe ที่ต่อไว้ที่ PB3...PB5 ซึ่งก็คือ ขา Digital 11,12,13 ของ Arduno แล้วในขณะที่ทำงานไปนั้น หากมีการเปลี่ยนแปลงเกิดขึ้นที่ขา ADC0...ADC2 (ในที่นี้เราจะจำลองด้วยการปรับ VR แทนการเปลี่ยนแปลงแรงดันที่ขา Analog input) ก็ให้ทำการส่งข้อมูลของ Analog out ออกไปทางขา TXD ของ Arduino วงจรการทำงานก็เป็นดั่งรูปภาพด้านล่างนี้ 

Arduino simulation on Proteus

ċ
sim.DSN
(2156k)
วิสิทธิ์ แผ้วกระโทก,
7 ต.ค. 2556 06:05