ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
ไมโครคอนโทรลเลอร์เบื้องต้น
ปฏิบัติการเกี่ยวกับวิศวกรรมคอมพิวเตอร์ ( ) ผศ.ดร.ชัยพร ใจแก้ว ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์
2
ไมโครคอนโทรลเลอร์ คอมพิวเตอร์ขนาดเล็กที่ถูกรวมไว้ในชิปเดียว ประกอบด้วย
หน่วยประมวลผลกลาง (CPU) วงจรอินพุท/เอาท์พุท หน่วยความจำแรม รอม แฟลช ตัวจับเวลา ตัวนับ ฯลฯ
3
ภายในไมโครคอนโทรลเลอร์
ROM Flash Memory RAM CPU I/O Ports Timers Analog to Digital Converter
4
สถาปัตยกรรม AVR สถาปัตยกรรมแบบ 8 บิต RISC
ถูกพัฒนาขึ้นโดยบริษัท Atmel ในปี 1996 ซีรีส์ต่าง ๆ ของไมโครคอนโทรลเลอร์ตระกูล AVR tinyAVR เช่น ATtiny12, ATtiny24 megaAVR เช่น ATmega8, ATMega168 XMEGA เช่น ATxmega128A1, ATxmega384A1
5
รีจีสเตอร์ หน่วยความจำขนาดเล็กภายใน CPU ตั้งค่าและอ่านค่าได้จากโปรแกรม
รีจีสเตอร์แต่ละตัวมีหน้าที่ได้แตกต่างกัน เป็นที่พักข้อมูล ที่อ่านจาก RAM/Flash เพื่อเตรียมประมวลผล ที่เป็นผลลัพธ์จากการคำนวณและเตรียมเก็บลง RAM เก็บสถานะและกำหนดพฤติกรรมของ uC เช่น กำหนดให้ขาไอซีเป็นอินพุทหรือเอาท์พุท อ่านลอจิกของขาอินพุท และเขียนลอจิกของขาเอาท์พุท
6
รีจีสเตอร์ในสถาปัตยกรรม AVR
General purpose registers 32 ตัว ตัวละ 8 บิต I/O registers ทั้งหมดถูกอ้างถึงได้ผ่านตำแหน่งของหน่วยความจำ
7
ตำแหน่งหน่วยความจำสำหรับอ้างอิง รีจีสเตอร์
R0 0x0000 R1 0x0001 General Purpose Registers R2 0x0002 : : R29 0x001D R30 0x001E R31 0x001F Data Memory Space 0x00 0x0020 0x01 0x0021 0x02 0x0022 I/O Registers : : 0x3D 0x005D 0x3E 0x005E 0x3F 0x005F : :
8
ตัวอย่างรีจีสเตอร์ DDRD – I/O รีจีสเตอร์หมายเลข 0x0A
PORTD – I/O รีจีสเตอร์หมายเลข 0x0B แต่ละบิตกำหนดลอจิกให้ขาแต่ละขาของพอร์ท D ที่ถูกกำหนดเป็นเอาท์พุท PIND – I/O รีจีสเตอร์หมายเลข 0x09 แต่ละบิตเก็บค่าลอจิกที่อ่านได้จากขาแต่ละขาของพอร์ท D ที่ถูกกำหนดให้เป็นอินพุท
9
โปรแกรมตัวอย่าง โค้ดต่อไปนี้กำหนดให้ขา PD3 เป็นเอาท์พุทและส่งลอจิก 0 ไปที่ขานี้ ทำให้ LED สีเขียวติดค้าง int main() { *((uint8_t*)0x2A) = 0b ; *((uint8_t*)0x2B) = 0b ; while(1) ; }
10
โปรแกรมตัวอย่าง หมายเลขรีจีสเตอร์นั้นยากต่อการจำ และอาจเปลี่ยนตำแหน่งเมื่อใช้ไมโครคอนโทรลเลอร์เบอร์อื่น ไฟล์เฮดเดอร์ avr/io.h เตรียมนิยามรีจีสเตอร์เหล่านี้ไว้ให้เพื่อความสะดวก #include <avr/io.h> int main() { DDRD = 0b ; PORTD = 0b ; while(1) ; }
11
แบบฝึกหัด เขียนโปรแกรมให้ LED สีเขียวบนบอร์ดติดดับเป็นจังหวะดังนี้
ติดครึ่งวินาที ดับครึ่งวินาที สลับกันไป ติด ¼ วินาที ดับ ¾ วินาที สลับกันไป
12
การบ้าน เขียนโปรแกรมให้ LED ทั้งสามสี ติดไล่วนเป็นลำดับ เขียว -> เหลือง -> แดง -> เขียว … LED แต่ละดวงติดค้างเป็นเวลา .5 วินาที หมายเหตุ: แก้ไขโปรแกรมจากตัวอย่างในวิกิ อย่าลืมระบุ F_CPU
13
การบ้าน เขียนโปรแกรมให้ LED ทั้งสามสี ติดไล่วนเป็นลำดับ หมายเหตุ:
เขียว -> เหลือง -> แดง -> เหลือง -> เขียว … LED แต่ละดวงติดค้างเป็นเวลา .5 วินาที หมายเหตุ: แก้ไขโปรแกรมจากตัวอย่างในวิกิ อย่าลืมระบุ F_CPU ด้วยสัญญาณนาฬิกาที่ถูกต้อง
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.