13
By Panyayot Chaikan Page 1 of 13 Lab3_HW_2_2553 Lab 1 : การใชงานภาษาแอสเซมบลี้กับซีพียู AVR 1.1 แนะนําซีพียู AVR ไมโครคอนโทรลเลอร เปนหนวยประมวลผลขนาดเล็ก ซึ่งรวมเอาความสามารถของไมโคร โพรเซสเซอรกับอุปกรณเชื่อมตอภายนอก เชนหนวยความจํา อุปกรณอินพุตเอาตพุต วงจรกําเนิดสัญญาณ นาฬิกา เขามารวมอยูภายในไอซีชิพเพียงตัวเดียว สงผลใหระบบควบคุมซึ่งใชไมโครคอนโทรลเลอรเปน หนวยประมวลผลมีขนาดของวงจรควบคุมเล็กและสะดวกตอการใชงาน แมวาระบบไมโครคอนโทรลเลอรจะมีหลายๆ อุปกรณอยูภายในไอซีชิพตัวเดียว แตก็มี ความสามารถจํากัด เมื่อเทียบกับระบบซึ่งใชไมโครโพรเซสเซอร ยกตัวอยางเชน หนวยความจํา จะมีใหใช เพียงไมมากนัก ดังนั้นระบบไมโครคอนโทรลเลอรจะเหมาะสมสําหรับการควบคุมงานที่ไมซับซอนและ ตองการความสามารถในการประมวลผลที่ไมสูงมากนัก ยกตัวอยางเชนในระบบ Embedded system หรือ ระบบสมองกลฝงตัว เชนเครื่องซักผา เตาอบไมโครเวฟ เครื่องปรับอากาศ เปนตน สถาปตยกรรมของไมโครคอนโทรลเลอรที่ใชงานอยูในปจจุบันมีใหเลือกใชงานมากมายหลายตัว ยกตัวอยางเชน - MCS-51 (8-bit) ออกแบบโดย intel - MCS-96 (16-bit) ออกแบบโดย intel - PIC ออกแบบโดย Microchip Technology - AVR ออกแบบโดย Atmel - ARM ออกแบบโดย ARM Holdings - 68HC11 ออกแบบโดย Motorola - Rabbit 2000 ออกแบบโดย Rabbit Semiconductor ในอดีต ไมโครคอนโทรลเลอรที่นิยมใชงานกันคือตระกูล MCS-51 แตในปจจุบันความตองการ ความสามารถในการประมวลผลมีเพิ่มขึ้น ทําใหมีสถาปตยกรรมอื่นๆ ที่มีประสิทธิภาพสูงกวาเริ่มไดรับ ความนิยมในการใชงานขึ้นมาแทนในแลบนี้จะสอนใหนักศึกษาไดเรียนรูสถาปตยกรรม AVR เนื่องจากมี ประสิทธิภาพที่สูง และมีราคาถูกกวาสถาปตยกรรมอื่นในราคาที่ใกลเคียงกัน นอกจากนี้ยังมีขอดีคือมี ฟรีแวรหลายตัวใหใชงานสําหรับพัฒนาระบบไดทั้งภาษาระดับต่ําคือภาษาแอสเซมบลี้และภาษาระดับสูง เชน ภาษาซี เปนตน

Lab 1 : การใช งานภาษาแอสเซมบล ี้กับ ...fivedots.coe.psu.ac.th/Software.coe/avr_tools_and_lab... · 2010. 12. 26. · By Panyayot

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • By Panyayot Chaikan Page 1 of 13 Lab3_HW_2_2553

    Lab 1 : การใชงานภาษาแอสเซมบลีก้ับซีพียู AVR 1.1 แนะนําซีพียู AVR

    ไมโครคอนโทรลเลอร เปนหนวยประมวลผลขนาดเล็ก ซ่ึงรวมเอาความสามารถของไมโครโพรเซสเซอรกับอุปกรณเชือ่มตอภายนอก เชนหนวยความจํา อุปกรณอินพุตเอาตพุต วงจรกําเนิดสัญญาณนาฬิกา เขามารวมอยูภายในไอซีชิพเพียงตัวเดยีว สงผลใหระบบควบคุมซึ่งใชไมโครคอนโทรลเลอรเปนหนวยประมวลผลมีขนาดของวงจรควบคมุเล็กและสะดวกตอการใชงาน แมวาระบบไมโครคอนโทรลเลอรจะมีหลายๆ อุปกรณอยูภายในไอซีชิพตัวเดยีว แตก็มีความสามารถจาํกัด เมื่อเทียบกับระบบซึ่งใชไมโครโพรเซสเซอร ยกตัวอยางเชน หนวยความจํา จะมใีหใชเพียงไมมากนกั ดังนัน้ระบบไมโครคอนโทรลเลอรจะเหมาะสมสาํหรับการควบคุมงานที่ไมซับซอนและตองการความสามารถในการประมวลผลที่ไมสูงมากนกั ยกตัวอยางเชนในระบบ Embedded system หรือระบบสมองกลฝงตัว เชนเครื่องซักผา เตาอบไมโครเวฟ เครื่องปรับอากาศ เปนตน สถาปตยกรรมของไมโครคอนโทรลเลอรที่ใชงานอยูในปจจุบันมใีหเลือกใชงานมากมายหลายตวั ยกตวัอยางเชน

    - MCS-51 (8-bit) ออกแบบโดย intel - MCS-96 (16-bit) ออกแบบโดย intel - PIC ออกแบบโดย Microchip Technology - AVR ออกแบบโดย Atmel - ARM ออกแบบโดย ARM Holdings - 68HC11 ออกแบบโดย Motorola - Rabbit 2000 ออกแบบโดย Rabbit Semiconductor

    ในอดีต ไมโครคอนโทรลเลอรที่นิยมใชงานกันคือตระกูล MCS-51 แตในปจจุบนัความตองการความสามารถในการประมวลผลมีเพิ่มขึ้น ทําใหมีสถาปตยกรรมอื่นๆ ที่มีประสิทธิภาพสูงกวาเริ่มไดรับความนิยมในการใชงานขึ้นมาแทนในแลบนี้จะสอนใหนักศึกษาไดเรียนรูสถาปตยกรรม AVR เนื่องจากมีประสิทธิภาพที่สูง และมรีาคาถูกกวาสถาปตยกรรมอื่นในราคาที่ใกลเคียงกัน นอกจากนี้ยังมขีอดีคือมี ฟรีแวรหลายตวัใหใชงานสําหรับพัฒนาระบบไดทั้งภาษาระดับต่ําคือภาษาแอสเซมบลี้และภาษาระดบัสูงเชน ภาษาซี เปนตน

  • By Panyayot Chaikan Page 2 of 13 Lab3_HW_2_2553 สถาปตยกรรมของ AVR แบงออกเปน 2 ตระกูลคือ

    - 8-bit AVR - 32-bit AVR ในแลบนีจ้ะกลาวถึงสถาปตยกรรมของ AVR ขนาด 8 บิตเทานั้น โดยในสถาปตยกรรม AVR

    ออกแบบโดย ATMEL เมื่อป 1996 เปนซีพียูแบบ RISC (Reduced Instruction Set Computer) มีสถาปตยกรรมการตอหนวยความจําแบบ Harvard ซ่ึงแยกหนวยความจําโปรแกรมและหนวยความจําขอมูลออกจากกนัโดยเด็ดขาด ดังแสดงในรูปที ่ 1.1 โดยใชหนวยความจําแบบ Flash สําหรับเปนหนวยความจําโปรแกรม และใชหนวยความจําแบบ SRAM สําหรับหนวยความจําขอมูล และนอกจากนี้ยังมหีนวยความจําแบบ EEPROM ซ่ึงสามารถเก็บขอมูลเอาไวไดโดยไมจําเปนตองมีไฟเลีย้งอีกดวย

    รูปที่ 1.1 เปรียบเทียบการจดัการหนวยความจําของสถาปตยกรรมแบบ Von-Neumann และ Harvard จากรูปที่ 1.1 จะเห็นวาโพรเซสเซอรที่ใชสถาปตยกรรมแบบ Harvard จะแยกหนวยความจําสําหรับ

    เก็บขอมูลออกจากโปรแกรมอยางชัดเจน สถาปตยกรรม AVR และ MCS-51 จะใชรูปแบบนี้ในการจัดการหนวยความจํา สวนสถาปตยกรรมแบบ Von-neumann การตัดสินใจวาจะเก็บโปรแกรมหรือขอมูลจะแบงเก็บอยางไรจะทําไดอยางอิสระ โดยขึน้อยูกับโปรแกรมเมอร หรืออาจจะเปนระบบปฏิบัติการเปนผูดําเนินการให

    ลักษณะเดนของสถาปตยกรรม AVR คือ คําสั่งสวนใหญสามารถทํางานไดเสร็จภายใน 1 clock cycle ตัวซีพียู AVR ขนาด 8 บิตจะแบงออกเปนประเภทการใชงานได 5 กลุม ไดแก

    - tinyAVR เปนซีพียูในรุนเล็ก ซ่ึงตองการความเล็กกะทัดรัดของวงจร โดยเหมาะกับระบบควบคุมขนาดเล็กๆ ที่ตองการหนวยความจําและวงจรสนับสนุนไมมากนัก ซีพียใูนรุนนี้จะมีราคาถูกกวากลุมอื่น

    - megaAVR จะมีช่ืออีกอยางวา ATmega โดยมีวงจรสนับสนุนภายในเพิม่เติมตลอดจนเพิ่มขนาดของหนวยความจําใหใชงานมากกวาตระกลู Tiny เหมาะกับงานควบคมุทั่วๆ ไป

  • By Panyayot Chaikan Page 3 of 13 Lab3_HW_2_2553

    - XMEGA เพิ่มความละเอียดของวงจร A/D จากปกติมีความละเอียด 10 บิตในรุนเล็กกวาเปน 12 บิต และวงจร DMA controller ซ่ึงชวยลดภาระของซีพียูในการควบคุมการรับสงขอมูลระหวางอุปกรณ I/O กบัหนวยความจํา

    - FPSLIC (AVR core with FPGA) สําหรับงานที่ตองการควบคุมทีต่องการความยืดหยุนในขั้นตอนการออกแบบและพฒันา โดยผูออกแบบสามารถออกแบบวงจรในระดับฮารดแวรเพิ่ม เติมดวยภาษาบรรยายฮารดแวร (HDL: Hardware Description Language) เชน ภาษา VHDL หรือภาษา Verilog และใหวงจรที่ออกแบบทํางานรวมกับซีพียู AVR core

    - Application Specific AVR เปนซีพียูที่ออกแบบมาโดยเพิม่วงจรควบคุมเฉพาะดานเขาไปซึ่งไมพบในซีพียกูลุมอื่นๆ เชนวงจร USB controller หรือวงจร CAN bus เปนตน

    ซีพียู AVR มีใหเลือกใชงานหลายเบอร แตละเบอรจะมีขนาด ราคา ความสามารถ และขนาด

    หนวยความจําตลอดจนถึงวงจรสนับสนุนภายในทีแ่ตกตางกันออกไป ในหวัขอแลบ ป 3 เทอม 2 นี้ จะเลือกใชซีพียูรุน ATmega328P ใหนกัศึกษาใชเปนหลัก ซ่ึงมีคุณสมบตัิดังนี ้

    - หนวยความจําโปรแกรมแบบ FLASH ขนาด 32 กิโลไบต - หนวยความจําขอมูลแบบ SRAM ขนาด 2 กิโลไบต - หนวยความจําขอมูลแบบ EEPROM ขนาด 1 กิโลไบต - สนับสนุนการเชื่อมตอแบบ I2C bus - พอรตอินพุตเอาตพุตจํานวน 23 บิต - วงจรสื่อสารอนุกรม - วงจรนับ/จับเวลาขนาด 8 บิต จํานวน 2 ตัว และขนาด 16 บิตจํานวน 1 ตัว - สนับสนุนชองสัญญาณสําหรับสราง Pulse Width Modulation (PWM) จํานวน 6 ชองสัญญาณ - วงจรแปลงอนาลอกเปนดิจิตอลขนาด 10 บิตในตวัจํานวน 8 ชอง - ทํางานไดตั้งแตยานแรงดัน 1.8-5.5 Volts - ความถี่ใชงานสูงสุด 20 MHz

    รูปที่ 1.2 ซีพียู ATMEGA328P แบบตัวถัง PDIP ขนาด 28 ขา

  • By Panyayot Chaikan Page 4 of 13 Lab3_HW_2_2553

    รูปที่ 1.3 โครงสรางภาษาแอสเซมบลี้ของสถาปตยกรรม AVR 1.2 แนะนําภาษาแอสเซมบลี้ของ AVR

    โครงสรางภาษาแอสเซมบลี้ของ AVR แสดงใหเห็นดังรูปที่ 1.1 ซ่ึงจะเห็นวามีความแตกตางจากภาษาแอสเซมบลี้ของสถาปตยกรรมอื่นๆ ไมมากนัก ในการเขียนโปรแกรมภาษาแอสเซมบลี้ เราจะตองทําการใชชุดคําสั่งของซีพียูในการเขาถึงหนวยความจําและขอมูลในรีจิสเตอรโดยตรง สงผลใหภาษาแอสเซมบลี้มีความยุงยากในการใชงานมากกวาระดับสงูทั่วไป อยางไรก็ดีภาษาแอสเซมบลี้มีขอดีกวาภาษาอื่นตรงที่ขนาดของโปรแกรมมีขนาดเล็กมาก และมีความเร็วในการทํางานที่สูงกวาภาษาอื่นๆ การเรียนรูภาษาแอสซมบลี้ ชวยใหนกัศึกษาสามารถเขาใจการทํางานภายในของไมโครโพรเซสเซอรไดเปนอยางดี การเขาใจภาษาแอสเซมบลี้จะชวยใหนกัศึกษาสามารถที่จะดีบกั (Debug) เพือ่ทําการตรวจสอบการทํางานของโปรแกรมในกรณีที่โปรแกรมที่เขียนขึ้นดวยภาษาระดับสูงมปีญหาได สําหรับรายละเอยีดเชิงลึกในการเขียนโปรแกรมภาษาแอสเซมบลี้ ขอใหนกัศึกษาไดศึกษาจากเอกสาร AVR Assembler User Guide ในเอกสารแลบนี้จะทําการยกตวัอยางการเขียนภาษาแอสเซมบลี้อยางงายเพื่อเปนพืน้ฐานในการนาํซีพียูไปประยกุตใชงานระดบัสงูขึ้นในโอกาสตอไป

    การเขียนโปรแกรมภาษาแอสเซมบลี้ จะตองทําการเขาถึงรีจิสเตอรของซีพียูโดยตรง ซีพียู AVR มีรีจิสเตอรใชงานทั่วไปจํานวน 32 ตัวคือ R0-R31 ในการเขียนโปรแกรม แนะนําใหนกัศึกษาใชงานรีจิสเตอรตั้งแต R16 เปนตนไป นอกจากนี้ รีจิสเตอร R26-R31 ยังสามารถนํามาทําเปนรีจิสเตอรขนาด 16 บิต ไดจํานวน 3 ตัวคือ รีจิสเตอร X, Y และ Z รูปที่ 1.4 และ 1.5 แสดงชุดคําสัง่ของสถาปตยกรรม AVR

    สวน Data Segment ซึ่งเก็บอยูใน SRAM

    สวน Data Segment ซึ่งเก็บอยูใน EEPROM

    สวน Code Segment ซึ่งเก็บอยูใน Flash memory

    label

    สวนอธิบาย (Comment) จะอยูหลังเครื่องหมาย semicollon

  • By Panyayot Chaikan Page 5 of 13 Lab3_HW_2_2553

    รูปที่ 1.4 ชุดคําสั่งของ AVR

  • By Panyayot Chaikan Page 6 of 13 Lab3_HW_2_2553

    รูปที่ 1.5 ชุดคําสั่งของ AVR (ตอ)

  • By Panyayot Chaikan Page 7 of 13 Lab3_HW_2_2553 1.3 แนะนําซอฟตแวร AVRStudio

    โปรแกรม AVRStudio เปนซอฟตแวรทีพ่ัฒนาโดย ATMEL ซ่ึงแจกจายใหใชงานไดฟรี ซ่ึงใชเปนสภาพแวดลอมในการพฒันาโปรแกรมดวยภาษาแอสเซมบลี้หรือภาษาซีก็ได ในแลบนี้จะยกตัวอยางการใชซอฟตแวร AVRStudio ในการพัฒนาโปรแกรมภาษาแอสเซมบลี้ เรียกใชงานโปรแกรมจาก Start menu->All Programs->ATmel AVR Tools->AVR Studio 4 โปรแกรมจะแสดงหนาตาง ดังรูป ใหเลือกกดปุม New Project เลือกสรางโปรเจกตดวยภาษาแอสเซมบลี้ ดังรูป โดยปอนชื่อโปรเจกตลงไป

  • By Panyayot Chaikan Page 8 of 13 Lab3_HW_2_2553 เลือกซีพียูรุน ATmega328P และสภาพแวดลอม AVR Simulator2 จากนั้นกดปุม Finish จะขึ้นสภาพแวดลอมการพฒันาโปรแกรมดังรูป

  • By Panyayot Chaikan Page 9 of 13 Lab3_HW_2_2553 1.4 แนะนําซอฟตแวรชุด Proteus

    เปนซอฟตแวรสําหรับจําลองการทํางานของวงจรไฟฟา ซ่ึงสามารถจําลองการทํางานของวงจรไดตั้งแตวงจรอนาลอก วงจรดจิิตอลตลอดจนถึงไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร โดยผูทดลองสามารถนําไฟลนามสกุล .HEX ซ่ึงไดจากการแอสเซมเบลอรโปรแกรมที่เขียนขึ้นดวยภาษาแอสเซมบลี้มาทําการจําลองบนสภาพแวดลอมการเชื่อมตอไมโครคอนโทรลเลอรกับอุปกรณภายนอกเสมือนจรงิได ตัวชุดโปรแกรม Proteus ประกอบไปดวยซอฟตแวรยอยหลายตัว ในแลบนี้จะใชโปรแกรมยอยช่ือ ISIS ในการจําลองการทํางานของไมโครคอนโทรลเลอร AVR

    รูปที่ 1.6 โปรแกรม ISIS 7.0 สําหรับจําลองการทํางานของไมโครคอนโทรลเลอร

    1.5 การทดลอง 1.5.1 การออกแบบวงจรอานคาจากสวิทชและแสดงผลออกทาง 7-segment LED

    ใหนกัศึกษาเปดโปรแกรม ISIS คลิกเลือก New Design เลือกขนาดของกระดาษเปน Landscape A4ทําการวาดวงจรเพื่อทําการอานคาจากสวิทชดังรูปที่ 1.7 กดปุม จากนั้นดับเบิลคลิกที่ เพื่อเลือกใชอุปกรณจากไลบรารีตอไปนี้

    Category Sub-Category Device คําอธิบาย Microprocessor ICs AVR Family ATMEGA328P ไมโครคอนโทรลเลอร AVR Optoelectronics 7-Segment Displays 7-SEG-COM-CAT ชนิด Common Cathode Switches & Relays Switches DIPSW-4 Dip Switch 4 ตัวใน 1 package Resistors Generic RES ตัวตานทาน

    ปุม Play เพื่อเริ่มการจําลองการทํางาน

  • By Panyayot Chaikan Page 10 of 13 Lab3_HW_2_2553

    รูปที่ 1.7 วงจรอานคาจากสวทิชแสดงผลทาง 7-segment LED

    รายการ ลายเซ็น วัน-เดือน-ป

    #checkpoint1 วาดวงจรดังรูปที ่1.7 โดยใชโปรแกรม ISIS7.0 1.5.2 การเขียนโปรแกรมภาษาแอสเซมบลี้เพื่ออานคาจากสวิทชแสดงผลทาง 7-segment LED

    เขียนโปรแกรมภาษาแอสเซมบลี้เพื่อใชควบคุมไมโครคอนโทรลเลอรของวงจรในรปูที่ 1.7 โดยตวัโปรแกรมแสดงใหเห็นในรปูที่ 1.8 การทํางานของตัวโปรแกรม จะทาํการอานคาจากดิปสวิทชขนาด 4 บิตเขามาทางพอรต C บิตที่ 0-3 และทําการแปลงคาไบนารีที่ได ซ่ึงมีคา 0-15 ไปแสดงผลทางแอลอีดี 7 เซกเมนต คา 0-F ใหนักศึกษาเขียนโปรแกรมภาษาแอสเซมบลี้ดวย AVR Studio จากนั้นใชคําสั่ง Build เพื่อแปลงภาษาแอสเซมบลี้ใหเปนภาษาเครื่องของ AVR ซ่ึงจะไดไฟลเอาตพุตนามสกุล .HEX

  • By Panyayot Chaikan Page 11 of 13 Lab3_HW_2_2553

    รูปที่ 1.8 โปรแกรมภาษาแอสเซมบลี้สําหรับอานคาจากสวิทชแสดงผลทาง 7-segment LED

    ในการใชซอฟตแวร ISIS ทําการจําลองการทํางานของโปรแกรมภาษาแอสเซมบลี้ที่เขียนขึ้นนั้นสามารถทําไดโดยคลิกขวาทีต่ัวไมโครคอนโทรลเลอร เลือก popup menu ช่ือ Edit Properties จะขึ้น ไดอะลอกบอกซดังรูปที่ 1.9 ซ่ึงผูทดลองตองระบุช่ือไฟลนามสกุล .HEX ที่ไมโครคอนโทรลเลอรจะตองโหลดขึ้นมาจําลองการทํางาน และใหส่ังทาํการดิสเอเบิลการรีเซ็ทซีพียูจากภายนอกดวย จากนัน้กดปุม เพื่อเร่ิมจําลองการทํางานของซีพียู

  • By Panyayot Chaikan Page 12 of 13 Lab3_HW_2_2553

    รูปที่ 1.8 การเซ็ทคาควบคุมไมโครคอนโทรลเลอรในโปรแกรม ISIS

    รายการ ลายเซ็น วัน-เดือน-ป #checkpoint2 ทดสอบจําลองการทํางานของโปรแกรมภาษาแอสเซมบลี้กับโปรแกรม ISIS7.0

    1.5.3 โจทยปญหาการออกแบบวงจรและเขียนโปรแกรมภาษาแอสเซมบลี้

    จงออกแบบวงจรไมโครคอนโทรลเลอร AVR สําหรับอานคาจากดิปสวทิช 4 ตัว และแสดงผลคาตัวเลขที่อานจากสวิทชออกสูแอลอีดี 7 เซกเมนต 2 หลัก โดยกําหนดใหคา 4 บิตที่อานจากสวิทชเปนตวัเลขจํานวนเต็มแบบมีเครื่องหมาย โดยการทํางานของโปรแกรมจะแสดงผลตามตารางที่ 1.1

    ระบุช่ือไฟลนามสกุล .HEX

    ดิสเอเบิลการรับสัญญาณรีเซ็ทจากภายนอก

    เลือกวงจรกําเนิดสัญญาณนาฬิกาภายในซีพียู 8 MHz

  • By Panyayot Chaikan Page 13 of 13 Lab3_HW_2_2553

    ตารางที่ 1.1 การแสดงผลของแอลอีดีเมื่อมอิีนพุตสภาวะตางๆ

    อินพุตที่อานจากสวิทช คาที่แสดงผลบนแอลอีดี 7 เซกเมนตจํานวน 2 หลัก

    0000

    0001

    0010

    0011

    0100

    0101

    0110

    0111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    รายการ ลายเซ็น วัน-เดือน-ป #checkpoint3 วงจรที่ออกแบบโดย ISIS7.0 #checkpoint4 ทดสอบโปรแกรมภาษาแอสเซมบลี้กับวงจรที่ออกแบบดวย โปรแกรม ISIS7.0

    ------------------------------