วันพุธที่ 29 พฤษภาคม พ.ศ. 2556

สร้างบอร์ด MCS P89V51RD2

ทดลองเล่นไมโครคอนโทรลเลอร์ MCS-51 ด้วย P89V51RD2

ถ้าพูดถึงไมโครคอนโทรลเลอร์ตระกูล 8051 หรือ MCS-51 ก็คงปฏิเสธไม่ได้ว่าเป็นไมโครคอนโทรลเลอร์ที่มีการใช้งานกันอย่างแพร่หลายมากตระกูลหนึ่ง ถึงแม่ว่าปัจจุบันจะมีไมโครคอนโทรลเลอร์ตระกูลใหม่ ๆ ที่มีคุณภาพสูงออกมามากมาย แต่ยังไงก็ตาม MCS-51 ก็ยังมีการใช้งานที่แพร่หลายอยู่ ทั้งนี้เนื่องจากเป็นไมโครคอนโทรลเลอร์ถูกใช้งานกันอย่างกว้างขวางมาเป็นเวลานาน ทำให้ผู้ใช้งานสามารถหาข้อมูลสนับสนุนเพื่อใช้ในการพัฒนาได้สะดวก, ราคาที่ถูก อีกทั้งผู้ผลิตได้พัฒนาไมโครคอนโทรลเลอร์ MCS-51 รุ่นใหม่ ๆ ออกมาให้มีความสามารถที่สูงขึ้นอยู่ตลอดเวลา ทำให้ไมโครคอนโทรลเลอร์ตระกูล MCS-51 รุ่นใหม่ ๆ ก็ยังสามารถทำงานรองรับงานควบคุมส่วนใหญ่ได้เกือบทั้งหมด ดังนั้นวันนี้เราจะมาลองเล่นไมโครคอนโทรลเลอร์ MCS-51 กันนะครับ แต่ก่อนที่จะเริ่มลองเล่น เรามาดูประวัติ แหละฟังก์ชันการทำงานของมันดูก่อนดีกว่า
ไมโครคอนโทรลเลอร์ตระกูล MCS-51 เริ่มแรกได้ถูกพัฒนาขึ้นจากบริษัท อินเทล (Intel Corporation) และได้มีการนำไปใช้งานกันอย่างแพร่หลายตั้งแต่ปี 1980 ในช่วงเวลาที่ผ่านมาได้มีบริษัทผู้ผลิตหลายบริษัท เช่น Dallas, Philips, Atmel ได้รับลิขสิทธิ์ในการผลิต และจำหน่าย จากบริษัท อินเทล และบริษัทต่าง ๆ ก็ได้พัฒนาความสามารถของไมโครคอนโทรลเลอร์ MCS-51 รุ่นใหม่ ๆ ให้มีความสามารถ และมีความเร็วเพิ่มขึ้น แต่ยังคงโครงสร้างพื้นฐานที่สำคัญของไมโครคอนโทรลเลอร์ตระกูล 8051 ซึ่งมีรายละเอียดดังนี้
  1. เป็นไมโครคอนโทรลเลอร์ที่มีหน่วยประมวลผลกลางแบบ 8 บิต
  2. มีคำสั่งคำนวณทางคณิตศาสตร์ และตรรกศาสตร์ (Boolean processor)
  3. มีแอดเดรสบัสขนาด 16 บิตทำให้สามารถอ้างตำแหน่งหน่วยความจำโปรแกรม และหน่วยความจำข้อมูลได้ 64 กิโลไบต์
  4. มีหน่วยความจำ (RAM) ภายในขนาด 128 ไบต์ (8051/8031) หรือ 256 ไบต์ (8052/8032)
  5. มีพอร์ตอนุกรมทำงานแบบดูเพล็กซ์เต็ม (Full Duplex) 1 พอร์ต
  6. มีพอร์ตอินพุต/เอาต์พุตแบบขนานจำนวน 32 บิต
  7. มีไทเมอร์ 2 ตัว (8051/8031) หรือ 3 ตัว (8052/8032)
  8. มีวงจรควบคุมการเกิดอินเตอร์รัปต์ 5 ประเภท (8051/8031) หรือ 6 ประเภท (8052/8032)
  9. มีวงจรออสซิลเลเตอร์ภายในตัว

 
ไมโครคอนโทรลเลอร์ MCS-51 มีวงจรออสซิลเลเตอร์อยู่ภายใน ดังนั้นในการใช้งานจึงสามารถต่อคริสตอล และตัวเก็บประจุเข้ากับคริสตอลได้โดยตรง โดยความถี่ของคริสตอลที่ต่อเข้ากับไมโครคอนโทรลเลอร์จะเป็นตัวระบุความเร็วในการทำงานโดยตรง ในไมโครคอนโทรลเลอร์ MCS-51 ปกติ 1 แมชชีนไซเคิล (Machine Cycle) จะใช้สัญญาณนาฬิกาจำนวน 12 ลูก และในการทำงานแต่ละคำสั่งไมโครคอนโทรลเลอร์จะใช้เวลาในการทำงาน 1-4 แมชชีนไซเคิล ขึ้นอยู่กับความซับซ้อนของคำสั่งนั้น

ในปัจจุบันผู้ผลิตได้พัฒนาให้ไมโครคอนโทรลเลอร์สามารถทำงานได้เร็วขึ้นโดยเพิ่มความสามารถในการรองรับคริสตอลความถี่ที่สูงขึ้น รวมไปถึงการปรับปรุงการทำงานภายในให้ไมโครคอนโทรลเลอร์ใช้จำนวนสัญญาณนาฬิกาในการสร้างแมชชีนไซเคิลน้อยลง โดยในบางรุ่น 1 แมชชีนไซเคิลใช้สัญญาณนาฬิกาเพียงแค่ 1 ลูกเท่านั้น

สำหรับไมโครคอนโทรลเลอร์ MCS-51 ที่เราจะมาลองเล่นกันนั้นเป็นรุ่น P89V51RD2 ของบริษัท Philips ที่เลือกรุ่นนี้เนื่องจากเป็นรุ่นที่สามารถรองรับการดาวน์โหลดโปรแกรมแบบ ISP (In System Programming) ผ่านพอร์ตอนุกรมได้โดยตรง ไม่ต้องอาศัยอุปกรณ์ หรือวงจรเพิ่มเติมในการดาวน์โหลดโปรแกรม จึงทำให้สามารถใช้งานได้อย่างสะดวก รวมถึงราคาของ P89V51RD2 ที่ไม่แพง เมื่อเทียบกับความสามารถ และประสิทธิภาพของมัน P89V51RD2 สามารถทำงานในโหมด X2 ซึ่ง จะทำให้สามารถทำงานได้เร็วกว่า MCS-51 พื้นฐาน 2 เท่า (1 แมชชีนไซเคิล ใช้สัญญาณนาฬิกา 6 ลูก) เมื่อใช้คริสตอลความถี่ที่เท่ากัน ในการทำงานในโหมด X2 นี้ P89V51RD2 สามารถใช้คริสตอลความถี่สูงสุด 20MHz ส่วนในการทำงานในโหมด X1 สามารถใช้คริสตอลความถี่สูงสุด 40 MHz ภายใน P89V51RD2 มีหน่วยความจำโปรแกรมแบบแฟลชขนาด 64 กิโลไบต์ นอกจากนั้นยังมี หน่วยความจำข้อมูลภายนอกเพิ่มเติมขนาด 1 กิโลไบต์ อยู่ภายในตัวชิพด้วย
อุปกรณ์ที่ใช้ทั้งหมดก็ตามรายการด้านล่างนะครับ ค่าใช้จ่ายทั้งหมดอยู่ที่ประมาณ 200 บาท
 1.ไมโครคอนโทรลเลอร์ P89V51RD2 + SOCKET DIP 40 pin1 ตัว
 2, MAX232 + SOCKET DIP 16 pin       1 ตัว
 3. X’tal 18.432 MHz     1 ตัว
 4, LM7805 (Voltage Regulator 5V) 1 ตัว
 5. Bridge Diode    1 ตัว
 6. C 10 uF   4 ตัว
 7. C 47 uF       2 ตัว
 8. C 22 pF         2 ตัว
 9. คอนเนคเตอร์ 4 Pin (สำหรับพอร์ต RS-232)    1 ตัว
 10. คอนเนคเตอร์ 2 Pin (สำหรับ Input Power)    1 ตัว
 11. บอร์ดอเนกประสงค์แบบไข่ปลา     1 บอร์ด
อุปกรณ์บอร์ด 8051
รูปที่ 1 อุปกรณ์ที่ใช้ในการสร้างบอร์ดทดลองไมโครคอนโทรลเลอร์ MCS-51
วงจรทั้งหมดแบ่งออกเป็น 3 ส่วนหลัก ๆ คือ 1.วงจรแปลงไฟ และจ่ายไฟ 2.วงจรไมโครคอนโทรลเลอร์ และ 3.วงจรการติดต่อสื่อสารผ่านพอร์ตอนุกรม RS-232
วงจรแปลงไฟ และจ่ายไฟนั้นสามารถต่อได้ดังรูปวงจรตามรูปที่ 2 จะเห็นได้ว่าใช้ IC Regulator เบอร์ LM7805 ซึ่งทำหน้าที่ Regulate ไฟจาก 9-12 V ให้เป็นไฟ DC 5 V สามารถจ่ายกระแสได้สูงสุด 1 A
วงจรแปลงไฟ
รูปที่ 2 วงจรแปลงไฟจาก AC/DC 9-12V เป็น DC 5 V
ตามรูปที่ 2 Bridge Diode ทำหน้าที่แปลงไฟ ให้เป็นไฟ + ทำให้เราสามารถจ่ายไฟเข้าวงจรนี้เป็นไฟ กระแสสลับ หรือไฟกระแสตรงที่ 9-12V ได้ โดยไม่จำเป็นต้องคำนึงถึงขั้วของการต่อไฟ
สำหรับคนที่มี Power Supply จ่ายไฟ DC Regulate ที่ 5 V อยู่แล้ว ก็สามารถใช้ Power Supply นั้นกับไมโครคอนโทรลเลอร์ได้โดยตรง โดยไม่ต้องต่อวงจรแปลงไฟนะครับ
ในส่วนวงจรไมโครคอนโทรลเลอร์สามารถต่อได้ตามวงจรในรูปที่ 3 โดย Vcc 5 V นั้นใช้จาก Vcc ของวงจรจ่ายไฟ จะเห็นได้ว่าไมโครคอนโทรลเลอร์มีพอร์ต I/O แบบขนาน 8 บิตอยู่ทั้งหมด 4 พอร์ต (พอร์ต 0 – พอร์ต 3) แต่ละพอร์ตสามารถทำงานเป็นพอร์ต Input หรือ Output ก็ได้แล้วแต่ผู้ใช้งานจะเลือกใช้ นอกจากนี้บางพอร์ตยังสามารถทำงานพิเศษเฉพาะทางได้อีก ทั้งนี้จะกล่าวถึงในรายละเอียดเมื่อมีโอกาสในตอนต่อไปนะครับ
วงจร ไมโครคอนโทรลเลอร์ P89V51RD2
รูปที่ 3 วงจรไมโครคอนโทรลเลอร์ P89V51RD2
ขา EA (External Access Enable) Pin 31 ใช้เลือกการทำงานของไมโครคอนโทรลเลอร์ ว่าจะใช้หน่วยความจำโปรแกรมภายนอก หรือหน่วยความจำโปรแกรมภายใน กรณีเลือกใช้หน่วยความจำโปรแกรมภายนอกขา EA ต้องเป็น Logic “0” ส่วนในกรณีใช้หน่วยความจำโปรแกรมภายในขา EA ต้องเป็น Logic “1” สำหรับไมโครคอนโทรลเลอร์ P89V51RD2 นั้นมีหน่วยความจำโปรแกรมภายในแบบ Flash ขนาด 64 Kbytes ดังนั้นเราจึงเลือกให้ทำงานจากหน่วยความจำโปรแกรมภายใน ซึ่งต้องต่อกับไฟ 5 V ให้เป็น Logic “1” ดังแสดงในรูปที่ 3
ขา RST (RESET) Pin 9 ไว้สำหรับรีเซตการทำงานของไมโครคอนโทรลเลอร์ โดยถ้าขา RST นี้มีสถานะเป็น Logic High นานกว่าช่วงเวลา 2 Machine Cycle จะเป็นการรีเซตการทำงานของไมโครคอนโทรลเลอร์ ดังนั้นเราจึงต่อขา RST ของไมโครคอนโทรลเลอร์เข้ากับ Switch และตัวเก็บประจุขนาด 10 uF ดังแสดงในรูปที่ 3
ขา XTAL1 และ XTAL2 เป็นขาสำหรับต่อคริสตอลเพื่อสร้างสัญญาณนาฬิกาให้กับไมโครคอนโทรลเลอร์ ที่เลือกใช้คริสตอลความถี่ 18.432 Mhz เนื่องจากเป็นความถี่ที่สามารถนำไปสร้างสัญญาณนาฬิกาให้กับการติดต่อสื่อสารผ่านพอร์ตอนุกรม RS-232 ได้อย่างลงตัว (2,400, 4,800, 9,600, 14,400, 19,200, 28,800, 38,400 บิตต่อวินาที) และในกรณีที่ต้องการให้ P89V51RD2 ทำในโหมด X2 ก็สามารถทำได้โดยการเลือกตอนโหลดโปรแกรม
ขา ALE (Address Latch Enable) Pin 30 เป็นขาที่ใช้ควบคุมการแลตซ์ของขาพอร์ต 0 เมื่อมีการต่อใช้งานหน่วยความจำภายนอก แต่เนื่องจากเรายังไม่ได้ต่อใช้งานหน่วยความจำภายนอก ดังนั้นเราจึงปล่อยลอยขา ALE ไว้
ขา PSEN (Program Store Enable) Pin 29 ใช้ส่งสัญญาณเพื่อร้องขอการติดต่อกับหน่วยความจำโปรแกรมภายนอก สำหรับในไมโครคอนโทรลเลอร์บางรุ่นขา PSEN นี้ใช้ในการควบคุมสภาวะการทำงานของไมโครคอนโทรลเลอร์สำหรับการโหลดโปรแกรมลงบนไมโครคอนโทรลเลอร์ด้วย
P89V51RD2 มีพอร์ตอนุกรมซึ่งใช้รับส่งข้อมูลตามมาตรฐานของ MCS-51 ทั่วไป ซึ่งนอกจากจะใช้สำหรับรับส่งมูลตามปกติแล้ว พอร์ตอนุกรมของ P89V51RD2 ยังสามารถใช้ดาวน์โหลดโปรแกรมลงหน่วยความจำโปรแกรม หรือที่เรียกว่าการโหลดโปรแกรมแบบ ISP ได้อีกด้วย พอร์ตอนุกรมของ P89V51RD2 อยู่ที่พอร์ต 3.0 (Rx) Pin 10 และ 3.1 (Tx) Pin 11 สัญญาณที่ออกมาจากพอร์ตของไมโครคอนโทรลเลอร์นั้นเป็นสัญญาณระดับ TTL ซึ่งมีระดับสัญญาณอยู่ที่ 0-5V แต่ในการติดต่อสื่อสารแบบอนุกรมตามมาตรฐาน RS-232 นั้นสัญญาณ logic “0” ต้องมีระดับสัญญาณอยู่ที่ 3-15 V และ logic “1” ต้องมีระดับสัญญาณอยู่ที่ (-3)-(-15V) ดังนั้นในการใช้งานสื่อสารตามมาตรฐาน RS-232 เราจึงต้องใช้วงจรสื่อสารผ่านพอร์ตอนุกรมซึ่งใช้ IC MAX232 เป็นตัวปรับระดับสัญญาณจากระดับ TTL ให้เป็นไปตามมาตรฐานของ RS-232 โดยสามารถต่อวงจรได้ตามรูปที่ 4
วงจร พอร์ตอนุกรม RS-232
รูปที่ 4 วงจรติดต่อผ่านพอร์ตสื่อสารอนุกรม RS-232
เมื่อต่อวงจรเสร็จแล้วดังแสดงในรูปที่ 5 ที่นี้ก็พร้อมที่จะทดลองใช้งาน MCS-51 กันแล้วหละครับ
บอร์ดไมโครคอนโทรลเลอร์  P89V51RD2
รูปที่ 5 บอร์ดทดลองไมโครคอนโทรลเลอร์ MCS-51 ที่ใช้ P89V51RD2
การดาวน์โหลดโปรแกรมลง P89V51RD2
ในการดาวน์โหลดโปรแกรมลงไมโครคอนโทรลเลอร์ P89V51RD2 ผ่านพอร์ตอนุกรมนั้นเราต้องมีสายสัญญาณ Serial ซึ่งสามารถทำเองได้โดยเชื่อมต่อตามไดอะแกรมในรูปที 6
ไดอะแกรม RS-232
รูปที่ 6 ไดอะแกรมการเชื่อมต่อสายสัญญาณ Serial
การโหลดโปรแกรมลงหน่วยความจำแบบ Flash ของ P89V51RD2 นั้นเราต้องใช้โปรแกรม Flash Magic ซึ่งสามารถดาวน์โหลดได้จากhttp://www.mind-tek.net/download.php ขั้นตอนในการดาวน์โหลดโปรแกรมลง P89V51RD2 สามารถทำได้ตามขั้นตอนต่อไปนี้
  1. จ่ายไฟให้กับบอร์ดทดลอง และต่อสายสัญญาณ Serial เข้ากับบอร์ด และเครื่องคอมพิวเตอร์ที่มีโปรแกรม Flash Magic อยู่
  2. เปิดโปรแกรม Flash Magic
  3. เลือก COM Port ที่ต่อใช้งานอยู่กับบอร์ด, Baud rate และ Device ให้เป็น P89V51RD2 ตามรูปที่ 7
Flash Magic
รูปที่ 7 เมนูเลือก COM Port, Baud Rate และ Device
4. ทดสอบการเชื่อมต่อโดยเลือกเมนู ISP -> Read Device Signature ตามรูปที่ 8
Flash Magic
       รูปที่ 8 เมนูอ่านค่าภายในไมโครคอนโทรลเลอร์
โปรแกรม Flash Magic จะเริ่มติดต่อกับไมโครคอนโทรลเลอร์ เพื่ออ่านค่าภายในไมโครคอนโทรลเลอร์ที่มาจากโรงงาน ถ้าทุกอย่างปกติโปรแกรม Flash Magic จะแจ้งให้เรารีเซต P89V51RD2 เพื่อให้เข้าสู่โหมด ISP ดังแสดงในรูปที่ 9 ในกรณีที่มีปัญหาให้ลองตรวจสอบคอมพอร์ตที่ใช้งาน ถ้าถูกต้องอยู่แล้วให้ลองเปลี่ยน Baud Rate ดูนะครับ 
Rese ISP
รูปที่ 9 การแจ้งให้รีเซตไมโครคอนโทรลเลอร์ให้ทำงานในโหมด ISP
5. กดสวิตซ์รีเซตที่บอร์ด แล้วหน้าต่างในรูปที่ 9 จะหายไป โปรแกรม Flash Magic จะแสดงค่าภายในของไมโครคอนโทรลเลอร์ที่มาจากโรงงาน แสดงว่าการเชื่อมต่อระหว่างโปรแกรม Flash Magic กับ P89V51RD2 สำเร็จ และ P89V51RD2 ได้เข้าสู่โหมด ISP เรียบร้อยแล้ว ในกรณีที่กดสวิตซ์รีเซตทีบอร์ดแล้วหน้าต่างแจ้งให้รีเซตไม่หายไป ให้ตรวจสอบการเชื่อมต่อของสายสัญญาณ Serial ดูนะครับ เมื่อมาถึงขั้นตอนนี้แล้วถ้ามีไฟล์ Hex ก็สามารถดาวน์โหลดลงบอร์ดเพื่อทดลองการทำงานของไมโครคอนโทรลเลอร์กันได้เลย โดยทำตามขั้นตอนต่อไป แต่ถ้าในกรณีที่ยังไม่มีไฟล์ Hex อาจลองทดสอบโดยโหลดไฟล์ hex จาก http://www.mind-tek.net/hex/serial.hex ไปทดสอบกันได้ครับ
6. เลือกไฟล์ HEX ที่ต้องการดาวโหลดลงไมโครคอนโทรลเลอร์ตามรูปที่ 10
Flash Magic
รูปที่ 10 การเลือกไฟล์ HEX ที่จะทำการดาวน์โหลดลง P89V51RD2
    7. เลือก Verify After Programming ตามรูปที่ 10
    8. กดปุ่ม Start เพื่อเริ่มดาวน์โหลดไฟล์ HEX ลง P89V51RD2 โปรแกรม Flash Magic จะเริ่มดาวน์โหลดไฟล์ HEX ลงไมโครคอนโทรลเลอร์ และตรวจสอบการโปรแกรมที่ได้ทำการโหลดลงไปจนเสร็จเรียบร้อยครับ
    สำหรับการใช้งานฟังก์ชันภายใน MCS-51 นั้น จะทยอยหามาให้ได้อ่านกันในโอกาสหน้าต่อไปนะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น