แผงวงจรพ่วง (Peripheral Board)

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

เราประกอบแผงวงจรนี้เพื่อใช้เป็นวงจรทดสอบและเรียนรู้การใช้งานไมโครคอนโทรลเลอร์ โดยต่อผ่านสายแพเข้ากับ JP2 (พอร์ท C) ของแผงวงจรหลัก วงจรพ่วงประกอบไปด้วยวงจรย่อยสามวงจร ได้แก่ (1) วงจรแสดงผล LED สามสี (2) วงจรสวิตช์อินพุท และ (3) วงจรวัดแสง

Peri-schem.png

วงจรแสดงผล 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 สีเขียวบนบอร์ดหลักจะติดและดับสลับกันไป