ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
ไมโครคอนโทรลเลอร์เบื้องต้น
ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ ( ) ผศ.ดร.ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์
2
ไมโครคอนโทรลเลอร์ คอมพิวเตอร์ขนาดเล็กที่ถูกรวมไว้ในชิปเดียว ประกอบด้วย
หน่วยประมวลผลกลาง (CPU) วงจรอินพุท/เอาท์พุท หน่วยความจำแรมและแฟลช ตัวจับเวลา ตัวนับ ฯลฯ
3
ส่วนประกอบภายในและการใช้งาน
Flash Memory RAM อุปกรณ์ภายนอก (เช่น LED, จอ LCD, สวิตช์, ตัววัดแสง, มอเตอร์, รีเลย์ ฯลฯ) CPU I/O Ports Registers Timers & Counters Analog to Digital Converter แหล่งจ่ายไฟ (เช่น พอร์ท USB, ถ่านไฟฉาย, Power Bank)
4
สถาปัตยกรรม AVR สถาปัตยกรรมแบบ 8 บิต RISC
ถูกพัฒนาขึ้นโดยบริษัท Atmel ในปี 1996 ซีรีส์ต่าง ๆ ของไมโครคอนโทรลเลอร์ตระกูล AVR tinyAVR เช่น ATtiny12, ATtiny24 megaAVR เช่น ATmega8, ATmega168 XMEGA เช่น ATxmega128A1, ATxmega384A1 1 KB RAM 16 KB Flash
5
วงจรบอร์ดไมโครคอนโทรลเลอร์
6
กระบวนการพัฒนาเฟิร์มแวร์
สร้างซอร์สไฟล์ 1 เท็กซ์เอดิเตอร์ (gedit, vim ฯลฯ) ซอร์สโค้ด (.c, .cpp, .s) คอมไพล์โปรแกรม 2 ครอสคอมไพเลอร์ (avr-gcc) ไฟล์ executable (.elf) สกัดรหัสภาษาเครื่อง 3 โปรแกรมสกัดโค้ด (avr-objcopy) 010101 011101 110110 รหัสภาษาเครื่อง (.hex) อัพโหลดเฟิร์มแวร์ ลงชิป 4 โปรแกรมอัพโหลด (avrdude) ชิปโปรแกรมเมอร์
7
เฟิร์มแวร์ตัวแรก สั่งให้ LED สีเขียวบนเมนบอร์ดติดและดับสลับกันไปทุก ๆ ครึ่งวินาที เริ่มต้น กำหนดให้ขา PD3 เป็นเอาท์พุท ส่งลอจิก 1 ไปยังขา PD3 หน่วงเวลา 500 ms ส่งลอจิก 0 ไปยังขา PD3 หน่วงเวลา 500 ms
8
การสั่งงานไมโครคอนโทรลเลอร์
โดยมากใช้ภาษาแอสเซมบลี้ หรือภาษาซี อ่านและเขียนค่าผ่าน "รีจีสเตอร์"
9
รีจีสเตอร์ หน่วยความจำขนาดเล็กภายใน CPU ตั้งค่าและอ่านค่าได้จากโปรแกรม
เป็นที่พักข้อมูล ที่อ่านจาก RAM/Flash เพื่อเตรียมประมวลผล ที่เป็นผลลัพธ์จากการคำนวณและเตรียมเก็บลง RAM เก็บสถานะและกำหนดพฤติกรรมของ uC เช่น กำหนดให้ขาไอซีเป็นอินพุทหรือเอาท์พุท อ่านลอจิกของขาอินพุท และเขียนลอจิกของขาเอาท์พุท
10
รีจีสเตอร์ในสถาปัตยกรรม AVR
แบ่งเป็นสองประเภท General purpose registers 32 ตัว ตัวละ 8 บิต I/O registers ทั้งหมดถูกอ้างถึงได้ผ่านตำแหน่งของหน่วยความจำ ไฟล์เฮดเดอร์ avr/io.h นิยามชื่อรีจีสเตอร์ไว้เพื่อความสะดวกในการเขียนโปรแกรม
11
ตัวอย่างรีจีสเตอร์ของ ATmega168
DDRD แต่ละบิตกำหนดทิศทาง (อินพุทหรือเอาท์พุท) ให้ขาแต่ละขาของพอร์ท D PORTD แต่ละบิตกำหนดลอจิกให้ขาแต่ละขาของพอร์ท D ที่ถูกกำหนดเป็นเอาท์พุท PIND แต่ละบิตเก็บค่าลอจิกที่อ่านได้จากขาแต่ละขาของพอร์ท D ที่ถูกกำหนดให้เป็นอินพุท
12
โปรแกรมตัวอย่าง: first.c
ระวังอย่าให้โปรแกรมที่เขียนขึ้น สำหรับไมโครคอนโทรลเลอร์ จบการทำงานออกจากฟังก์ชัน main() ระบุว่าชิปทำงานที่ความถี่ 16 MHz #define F_CPU UL #include <avr/io.h> #include <util/delay.h> int main() { DDRD = 0b ; while (1) PORTD = 0b ; _delay_ms(500); PORTD = 0b ; } return 0; กำหนดให้ PD3 เป็นเอาท์พุท ส่งลอจิก 1 ไปยังขา PD3 ส่งลอจิก 0 ไปยังขา PD3
13
การคอมไพล์และสกัดโค้ดภาษาเครื่อง
ดูรายละเอียดจากวิกิ [[การพัฒนาเฟิร์มแวร์สำหรับไมโครคอนโทรลเลอร์]] ใช้คำสั่ง avr-gcc เพื่อคอมไพล์โปรแกรมสำหรับ MCU เบอร์ ATMega168 สกัดโค้ดภาษาเครื่องออกจากไฟล์ executable $ avr-gcc -mmcu=atmega168 -O -o first.elf first.c $ avr-objcopy -j .text -j .data -O ihex first.elf first.hex
14
การอัพโหลดเฟิร์มแวร์
โค้ดภาษาเครื่องต้องถูกโปรแกรมลงไปในหน่วยความจำแฟลชของไมโครคอนโทรลเลอร์ ทำได้โดยใช้ "ชิปโปรแกรมเมอร์"
15
การอัพโหลดเฟิร์มแวร์ด้วย Boot Loader
เข้าสู่ Boot Loader โดยกดปุ่ม รีเซ็ตในขณะที่มีจั๊มเปอร์ เสียบอยู่ที่ขา Boot Loader ใช้คำสั่ง avrdude เพื่ออัพโหลดโค้ดภาษาเครื่องลงสู่ไมโครคอนโทรลเลอร์ $ avrdude -p atmega168 -c usbasp -U flash:w:first.hex
16
การทำงานของ Boot Loader
17
แบบฝึกหัด แก้ไขโปรแกรม first.c เพื่อให้ LED สีเขียวบนบอร์ดติดดับเป็นจังหวะดังนี้ ติด 1 วินาที และดับ 2 วินาที สลับกันไป
18
การบ้าน เขียนโปรแกรมให้ LED ทั้งสามสี ติดไล่วนเป็นลำดับ เขียว -> เหลือง -> แดง -> เขียว … LED แต่ละดวงติดค้างเป็นเวลา .5 วินาที หมายเหตุ: แก้ไขโปรแกรมจากตัวอย่างในวิกิ อย่าลืมระบุ F_CPU
19
แบบฝึกหัด เขียนโปรแกรมให้ LED ทั้งสามสี ติดไล่วนเป็นลำดับ เขียว -> เหลือง -> แดง -> เขียว … LED แต่ละดวงติดค้างเป็นเวลา .5 วินาที
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.