Microcontroller     

ผมไม่รู้จะเริ่มต้นอย่างไรจริงๆ                    

 [ข้อมูลเมื่อ  17 ธันวาคม 2548 ]

     บทความในหน้านี้ผมเขียนสำหรับผู้ที่ไม่พร้อมในเรื่องของเครื่องมือในการสร้างชุดทดลอง เคยเรียนแต่นานมาแล้ว อยากเริ่มต้นแต่ก็หาทางไม่ถูกจริงๆ อ่านมามากมายก็ไม่รู้จะเอาอย่างไรดี หรือไม่สะดวกในการจัดหาอุปกรณ์ ลองมาเริ่มวิธีการดำน้ำแบบขุ่นๆ แล้วค่อยลืมตาที่ละนิดว่ายไปหาน้ำใสๆ ดูนะครับ อ้อ...ที่สำคัญเอาแค่เริ่มต้นให้รู้จักกับการอินพอร์ต เอาต์พอร์ตได้เท่านั้นนะครับ ถ้ามากกว่านั้นต้องไปดูในส่วนของบทความด้านหน้าแล้วละครับ ในบทความนี้จะกล่าวถึงไอซีตระกูล MCS51 และบอร์ดทดลองที่มีขายทั่วๆไป เอาแบบที่ถูกสตางค์ ที่สำคัญผมยังไม่เคยมีบอร์ดของชาวบ้านเขาเลยไม่ว่าบริษัทใดๆ ดังนั้นผมจะดูในโฆษณาทางเวปไซต์ของเขาแล้วก็เลือก เอาสักอันนะครับ แต่ผมจะพยายามเลือกครับส่วนสำคัญจะไม่ต่างกัน เพราะอยู่ที่ ตัวไอซี(ตัวคน) คล็อก(ชีพจรไอซี) และวงจรรีเซต เอาเป็นว่าเขียนมากก็อ่านมาก มาเริ่มกันเลยดีกว่าครับ


 

รู้จักกับไอซีไมโครคอนโทรลเลอร์ที่จะใช้ทดลอง

    • ไอซีไมโครคอนโทรลเลอร์ที่มีขายในปัจจุบันก็อยู่มีหลายๆเบอร์ แต่ที่สำคัญก็ต้องบอกว่าคุณสมบัติพื้นฐานผมคิดว่าน่าจะมีดังนี้ ครับ
      • มีคำสั่งที่ใช้ได้กับตระกูล MCS-51 (Compatible)
      • มีหน่วยความจำภายในอย่างน้อย 128 ไบต์ (เอาเป็นว่าเรียกว่าแรม หรือหน่วยความจำข้อมูล ใช้เก็บข้อมูลประเภทชั่วคราว)
      • อ้างหน่วยความจำโปรแกรมภายนอกได้ (ในกรณีใช้หน่วยความจำภายนอก) 65,536 ไบต์ หรือ 64KB หรือ 16 ขาแอดเดรส ก็หามาจาก 2^16 (2 ยกกำลัง16) บางทีเราน่าจะเรียกหน่วยความจำโปรแกรม หรือพวกรอม อีพรอม หรือแฟลช์ ที่ใช้เก็บรหัสหรือโค๊ดคำสั่งต่างๆ แต่เดียวนี้เกือบทุกเบอร์ก็จะเอาหน่วยความจำส่วนนี้เก็บไว้ในตัวไอซีตัวเดียวกัน ซึ่งเป็นแบบหน่วยความจำโปรแกรมแบบแฟลช์มีตั้งแต่ค่า 2KB,4KB,8KB,16KB,20KB ถึง 64KB (เป็นหน่วยความจำแบบที่อยู่ใน HANDY DRIVE )
      • มีวงจรสื่อสารอนุกรมแบบ ฟูลดูเพล็กซ์ ติดต่อได้ 2 ทิศทางรับ ส่งได้
      • มีวงจร Counter/Timer ที่อยู่ภายใน ทำเป็นตัวนับค่าตามที่เรากำหนด หรือทำเป็นนาฬิกาก็ได้
      • ใช้แหล่งจ่ายไฟ 5 โวลท ์กินกระแสไม่มากนัก
      • มีวงจรอินเตอร์รัพท์ คือการขัดจังหวะ เพือที่จะได้ไปทำงานตามโปรแกรมที่เรากำหนดไว้หากมีเหตุการณ์ที่เราต้องการตรวจสอบ
      • มีหน่วยความจำที่เข้าได้แบบบิต (8 บิตเท่ากับ 1ไบต์ โดยทั่วไปเราเปลี่ยนข้อมูลที่ละไบต์ แต่ในที่นี้เราสามารถแก้ไขได้แบบบิตคือแค่บิตเดียวได้เลย)
      • อย่างอื่นๆก็จะมีเพิ่มเติมตามเบอร์ และคุณสมบัติของบริษัทที่ผลิตไอซีค่ายนั้นๆ นะครับ

เลือกไอซีที่จะใช้ทดลอง

        เพื่อให้ประหยัดเวลา และสตางค์ดังที่กล่าวเมื่อข้างต้นผมจะแนะนำไอซีไว้ 2 เบอร์คือเบอร์ AT89S52 ของบริษัท ATMEL และเบอร์ P89C51RD2 ของบริษัท PHILIPH มีรายละเอียดดังนี้

    AT89S52 :: คุณสมบัติเด่นของไอซีเบอร์นี้คือ เป็นไมโครคอนโทรลเลอร์ MCS-51 ของบริษัท ATMEL เป็นไอซีที่ใช้การโปรแกรมแบบ ISP โดยจะต่อวงจรที่ใช้สำหรับโปรแกรมเพียงไม่กี่ตัวเช่นใช้ IC 20 ขา 1 ตัว ยกตัวอย่างเบอร์ 74HC244, 74HC245 หรือ 74HC541 หลังจากนั้นถ้าต้องการโปรแกรมไอซี ก็จะติดต่อกับไมโครคอมพิวเตอร์ทางพอร์ตขนาน เมื่อเขียนโปรแกรมแล้วสามารถโหลดข้อมูลที่เป็น HEX File ลงมาที่บอร์ดโดยไม่ต้องถอดชิปไอซีออกจากบอร์ดทดลอง และไม่ต้องใช้เครื่องโปรแกรมจากภายนอกเพิ่มเติม หลังจากนั้นสามารถทำการทดสอบโปรแกรมได้ทันที (ราคา ณ.ปัจจุบันอยู่ที่  ประมาณ 60 บาท)

    คุณสมบัติของไอซี AT89S52
    • Compatible with MCS-51 Products
    • 8K Bytes of In-System Programmable (ISP) Flash Memory Endurance: 1000 Write/Erase Cycles
    • 4.0V to 5.5V Operating Range
    • Fully Static Operation: 0 Hz to 33 MHz
    • Three-level Program Memory Lock
    • 256 x 8-bit Internal RAM
    • 32 Programmable I/O Lines
    • Three 16-bit Timer/Counters
    • Eight Interrupt Sources
    • Full Duplex UART Serial Channel
    • Low-power Idle and Power-down Modes
    • Interrupt Recovery from Power-down Mode
    • Watchdog Timer
    • Dual Data Pointer
    • Power-off Flag

    P89C51RD2 :: คุณสมบัติเด่นของไอซีเบอร์นี้คือ เป็นไมโครคอนโทรลเลอร์ MCS-51ของบริษัท PHILIPH สามารถโปรแกรม แบบ ISP โดยต่อวงจรอีกเล็กน้อย (เช่น IC MAX232,DS275,หรือใช้ทรานซิสเตอร์ 2 ตัว ) แล้วติดต่อกับไมโครคอมพิวเตอร์ทางพอร์ตอนุกรม ส่วนขั้นตอนการเขียนโปรแกรม เพื่อทำการทดลองจะคล้ายกับไอซี AT89S52 (ราคาของไอซี P89C51RD2 ณ.ปัจจุบันอยู่ที่  300 บาท)

    คุณสมบัติของไอซี P89C51RD2


    • On-chip Flash Program Memory with In-System Programming (ISP) and In-Application Programming (IAP) capability
    • Boot ROM contains low level Flash programming routines for downloading via the UART
    • Can be programmed by the end-user application (IAP)
    • 6 clocks per machine cycle operation (standard)
    • 12 clocks per machine cycle operation (optional)
    • Speed up to 20 MHz with 6 clock cycles per machine cycle (40 MHz equivalent performance); up to 33 MHz with 12 clocks per machine cycle
    • Fully static operation
    • RAM expandable externally to 64 kB
    • 4 level priority interrupt
    • 7 interrupt sources
    • Four 8-bit I/O ports
    • Full-duplex enhanced UART   
    • Power control modes
    • Programmable clock out
    • Second DPTR register
    • Asynchronous port reset
    • Low EMI (inhibit ALE)
    • Programmable Counter Array (PCA)
    – PWM
    – Capture/compare


     

เลือกบอร์ดที่จะใช้ทดลอง

บอร์ดทดลองของ MRT รุ่นMCT-02-B ของบริษัทMRT MICRO RESEARCH สนับสนุนทางด้านชุดทดลอง ผมจึงได้เห็นตัวจริงของชุด MCT-02-B ที่รวมเอาทั้งการโปรแกรมแบบอนุกรมและแบบ ขนาน ไว้ในบอร์ดเดียวกัน และเลือกเบอร์ไอซีได้

 

                                                              

เลือกโปรแกรมที่จะใช้ทดลอง (เอามาจากไหน)

    • โปรแกรมอีดิเตอร์ ใช้สำหรับพิมพ์ข้อมูลที่เป็นโปรแกรมต้นฉบับ(Source Program) จะใช้โปรแกรม Word Processor* ตัวไหนก็ได้ ที่เราจะพิมพ์คำสั่งเป็น ภาษาแอสเซมบลี้เช่น Q-EDIT, SK, EditPlus 2, Edit For Dos หรือ Ultraedit-32 ซึ่งสามารถเลือกใช้งานตัวใดก็ได้ เช่น โปรแกรมUltraedit-32 ซึ่งใช้งานได้ 45 วันโดย Download ได้ที่ http://www.ultraedit.com/downloads/index.html ส่วนโปรแกรม Editplus2 ซึ่งใช้งานได้ 30 วันโดย Download ได้ที่ http://www.editplus.com/download.html
    • Assembler:: SXA51 เป็นโปรแกรมที่ใช้ในการ Assembler ซีพียู MCS-51 โดยเราเขียนโปรแกรมที่เป็น Source โปรแกรม ด้วยโปรแกรมอีดิเตอร์ตัวใดก็ได้ (Q-EDIT, SK, EditPlus2, EDIT For Dos หรือ UltraEdit-32) แล้วให้ทำการบันทึกเป็นไฟล์นามสกุล .ASM ไว้โดยเขียนเฉพาะคำสั่งเท่านั้นแล้วตัวโปรแกรม SXA51 จะทำการแปลภาษาเครื่องออกมา เป็นเลขฐาน16 สามารถนำมาโปรแกรมให้กับไอซีได้เลย
    • Software สำเร็จรูปที่มีทั้งโปรแกรม Text editor และAssembler ก็มีนะครับเช่น โปรแกรม Rad51

     

    • สรุป การเขียนโปรแกรมภาษาแอสเซมบลี้จะเขียนที่ไหนก็ได้ ที่เป็นโปรแกรมจำพวก Text editor ที่ใช้พิมพ์เป็นตัวอักษรได้ แล้วบันทึกให้เป็นนามสกุล .ASM (พิมพ์เอาเองก็ได้ . A S และ M ) ซึ่งคนจะรู้และเข้าใจภาษาที่เขียน แต่ไอซีไม่เข้าใจคำสั่งของภาษาที่เขียน ถ้าอยากให้ไอซีรู้เรื่อง และเข้าใจคำสั่งที่เขียน ก็ต้องใช้ล่ามแปลภาษา เราเรียกว่าโปรแกรมแอสเซมเบลอร์ ซึ่งจะทำหน้าที่ แปลภาษาแอสเซมบลี้ให้เป็นภาษาเครื่อง ซึ่งเป็นรหัสเลขฐานสิบหก ให้เป็นรหัสที่ไอซีรู้เรื่องในที่นี้เราใช้โปรแกรม SXA51 เป็นตัวแปล แล้วต่อมาจึงทำการเอาข้อมูลที่เป็นเลขฐานสิบหก มาโปรแกรมลงบนตัวไอซี โดยวิธีการโปรแกรมแบบต่างๆ ซึ่งจะทำให้ไอซีรู้ว่าจะต้องทำอะไรนั้นเอง (ในส่วนของโปรแกรมก็จะทำการแปลงเลขฐานสิบหกให้เป็นฐานสองก่อนนะครับ เพราะไอซีดิจิตอลทั่วโลกรู้จักแต่ 1 กับ 0 ครับ แต่อย่าพึ่งสนใจตอนนี้เลยครับ)


      • ในที่นี้ผมขอเลือก Text editor โดยใช้ โปรแกรม Ultraedit-32 (ผมชอบใช้เพราะสะดวกในเรื่องความถนัด) และ โปรแกรม Assembler ผมเลือกใช้ SXA51 ดาวน์โหลดได้จากนี้เลยครับ

      Ultraedit-32       :: SXA51

      โปรแกรมอื่นๆ โหลดได้ที่นี้ครับ

      แล้วพบกันใหม่อาทิตย์หน้าครับ

Designed by Adisak Chinawong