แผงวงจรพ่วง (Peripheral Board)
เราประกอบแผงวงจรนี้เพื่อใช้เป็นวงจรทดสอบและเรียนรู้การใช้งานไมโครคอนโทรลเลอร์ โดยต่อผ่านสายแพเข้ากับ JP2 (พอร์ท C) ของแผงวงจรหลัก วงจรพ่วงประกอบไปด้วยวงจรย่อยสามวงจร ได้แก่ (1) วงจรแสดงผล LED สามสี (2) วงจรสวิตช์อินพุท และ (3) วงจรวัดแสง
วงจรแสดงผล LED สามสี
เป็นการเชื่อมแต่ละสัญญาณของ PC0..PC2 เข้ากับขาแอโนด (A) ของ LED และต่อด้านแคโทด (K) ผ่านตัวต้านทานลงสู่กราวนด์ ดังนั้นการใช้งานจึงต้องตั้งค่าในรีจีสเตอร์ DDRC ให้ขาทั้งสามทำหน้าที่เป็นเอาท์พุท และส่งลอจิก 1 มายังแต่ละขาผ่านทางรีจีสเตอร์ PORTC เพื่อให้หลอด LED ติด
ตัวอย่างโปรแกรมด้านล่างเป็นการตั้งค่าให้ PC0..PC2 เป็นเอาท์พุท และสั่งให้ขา PC0 และ PC1 มีลอจิกเป็น 1 และ PC2 มีลอจิก 0 โดยที่ไม่กระทบกับค่าในบิตอื่น ๆ ของรีจีสเตอร์ สังเกตว่าเราอาศัยคำสั่งประเภท read-modify-write ซึ่งได้แก่ |= และ &=
DDRC |= 0b00000111; // ให้ PC0-PC2 เป็นเอาท์พุท บิตอื่นไม่เปลี่ยน PORTC |= 0b00000011; // ให้ PC0,PC1 มีลอจิก 1 บิตอื่นไม่เปลี่ยน PORTC &= ~(0b00000100); // ให้ PC2 มีลอจิก 0 บิตอื่นไม่เปลี่ยน
หมายเหตุ: คำสั่ง a |= b
มีการทำงานเทียบเท่ากับ a = a|b
วงจรสวิตช์อินพุท
วงจรวัดแสง
โปรแกรมทดสอบแผงวงจรพ่วง
เพื่อตรวจสอบว่าแผงวงจรพ่วงที่ทำขึ้นมาใช้งานได้ถูกต้อง โหลดโปรแกรม testperi.hex (ซอร์สโค้ด) และใช้คำสั่ง avrdude เพื่อเขียนแฟลชบนบอร์ด หากวงจรไม่มีความผิดพลาด โปรแกรมควรมีพฤติกรรมดังนี้
- LED 3 ดวงบนบอร์ดพ่วงทำหน้าที่เป็นตัววัดแสง โดยจะติดทีละดวงเท่านั้น สีแดงจะติดเมื่อแสงมืด และสีเขียวจะติดเมื่อไฟสว่าง ส่วนสีเหลืองจะติดเมื่อแสงปานกลาง
- เมื่อกดและปล่อยสวิตช์บนบอร์ดพ่วง (ไม่ใช่สวิตช์รีเซ็ตบนบอร์ดหลัก) LED สีเขียวบนบอร์ดหลักจะติดและดับสลับกันไป