2: โครงสร้างภายในของไมโครคอนโทรลเลอร์
โครงสร้างภายในของไมโครคอนโทรลเลอร์ (Internal Structure of Microcontrollers)
2.1 CPU (Central Processing Unit)
- หน้าที่: หัวใจหลักของการประมวลผล ทำหน้าที่อ่านคำสั่ง (Fetch), ถอดรหัสคำสั่ง (Decode), และประมวลผลคำสั่ง (Execute) ตามลำดับที่กำหนดในโปรแกรม
- ส่วนประกอบหลักภายใน CPU:
- ALU (Arithmetic Logic Unit): หน่วยคำนวณและตรรกะ ทำหน้าที่บวก ลบ คูณ หาร เปรียบเทียบค่าทางตรรกะ (AND, OR, NOT)
- Registers: หน่วยความจำขนาดเล็กและเร็วมากภายใน CPU ใช้เก็บข้อมูลที่กำลังประมวลผล หรือข้อมูลที่ใช้บ่อย
- Accumulator (ACC): รีจิสเตอร์หลักที่ใช้ในการคำนวณ
- Data Registers: รีจิสเตอร์สำหรับเก็บข้อมูลทั่วไป
- Address Registers: รีจิสเตอร์สำหรับเก็บตำแหน่งในหน่วยความจำ
- Program Counter (PC): รีจิสเตอร์ที่เก็บตำแหน่งของคำสั่งถัดไปที่จะถูกเรียกมาประมวลผล
- Stack Pointer (SP): รีจิสเตอร์ที่ชี้ไปยังตำแหน่งบนสุดของ Stack (พื้นที่ในหน่วยความจำ RAM ที่ใช้เก็บข้อมูลชั่วคราวแบบ LIFO – Last In, First Out)
- Instruction Register (IR): (อาจไม่แสดงใน Block Diagram บางแบบ) รีจิสเตอร์ที่เก็บคำสั่งปัจจุบันที่กำลังถูกถอดรหัส
- Control Unit: ควบคุมการทำงานของส่วนต่างๆ ภายใน CPU และการติดต่อกับหน่วยความจำและ I/O
- ภาพประกอบ:
- ALU: ค้นหา “ALU block diagram” จะพบภาพที่แสดงการทำงานภายใน
- Registers: ค้นหา “CPU registers” หรือ “microcontroller registers”
- Program Counter & Stack Pointer: ค้นหา “program counter stack pointer” จะมีภาพอธิบายการทำงาน
2.2 หน่วยความจำ (Memory)
- หน้าที่: เก็บโปรแกรม (Instructions) และข้อมูล (Data) ที่ไมโครคอนโทรลเลอร์ใช้ในการทำงาน
- ประเภทของหน่วยความจำ:
- ROM (Read-Only Memory):
- ลักษณะ: เก็บข้อมูลแบบถาวร ไม่สามารถแก้ไขได้ (โดยทั่วไป) ใช้เก็บโปรแกรมหลัก (Firmware)
- ประเภท:
- Mask ROM: โปรแกรมถูกกำหนดมาจากโรงงาน ไม่สามารถเปลี่ยนแปลงได้
- PROM (Programmable ROM): สามารถโปรแกรมได้ครั้งเดียว
- EPROM (Erasable Programmable ROM): ลบได้ด้วยแสง UV และโปรแกรมใหม่ได้
- EEPROM (Electrically Erasable Programmable ROM): ลบและเขียนใหม่ได้ด้วยไฟฟ้า (จำนวนครั้งจำกัด)
- Flash Memory: คล้าย EEPROM แต่ลบและเขียนได้เร็วกว่าและจำนวนครั้งมากกว่า (ใช้แทน ROM ได้)
- RAM (Random Access Memory):
- ลักษณะ: เก็บข้อมูลแบบชั่วคราว ข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง ใช้เก็บข้อมูลระหว่างการประมวลผล
- ประเภท:
- SRAM (Static RAM): เร็ว แต่ใช้พลังงานมากกว่า และราคาแพงกว่า
- DRAM (Dynamic RAM): ช้ากว่า SRAM แต่ใช้พลังงานน้อยกว่า และราคาถูกกว่า (ไม่ค่อยใช้ในไมโครคอนโทรลเลอร์)
- ภาพประกอบ:
- Memory Map: ค้นหา “microcontroller memory map” จะพบภาพแสดงการจัดสรรพื้นที่หน่วยความจำ (สำคัญมากในการเขียนโปรแกรม)
- ROM vs RAM: ค้นหา “ROM vs RAM” จะได้ภาพ Infographic เปรียบเทียบ
- Flash Memory: ค้นหา “flash memory microcontroller”
2.3 I/O Ports (Input/Output Ports)
- หน้าที่: เป็นช่องทางสำหรับไมโครคอนโทรลเลอร์ในการรับข้อมูลจากภายนอก (Input) และส่งข้อมูลออกไปควบคุมอุปกรณ์ภายนอก (Output)
- การทำงาน:
- Digital Input: อ่านค่าสถานะทางดิจิทัล (0 หรือ 1, High หรือ Low) จากสวิตช์, เซ็นเซอร์ดิจิทัล
- Digital Output: ส่งค่าสถานะทางดิจิทัล (0 หรือ 1) เพื่อเปิด/ปิด LED, รีเลย์, มอเตอร์
- Analog Input (ผ่าน ADC): อ่านค่าแรงดันไฟฟ้า (Analog) จากเซ็นเซอร์อนาล็อก
- Analog Output (ผ่าน DAC): ส่งค่าแรงดันไฟฟ้า (Analog) เพื่อควบคุมอุปกรณ์
- การกำหนดค่า (Configuration):
- ต้องกำหนดว่าแต่ละพอร์ตจะใช้เป็น Input หรือ Output
- อาจต้องกำหนดค่า Pull-up หรือ Pull-down Resistors (สำหรับ Input)
- ภาพประกอบ:
- I/O Port Diagram: ค้นหา “[ชื่อไมโครคอนโทรลเลอร์] pinout” หรือ “[ชื่อไมโครคอนโทรลเลอร์] I/O port” (เช่น “Arduino Uno pinout”)
- การต่อ LED, Switch กับ I/O Port: ค้นหา “connect LED to microcontroller”, “connect switch to microcontroller”
2.4 Timers/Counters
- หน้าที่:
- Timer: สร้างสัญญาณเวลา (Delay) หรือจับเวลา
- Counter: นับจำนวนเหตุการณ์ (Event) ที่เกิดขึ้นภายนอก
- โหมดการทำงาน:
- Timer Mode: นับเวลาจากสัญญาณนาฬิกาภายใน (Internal Clock)
- Counter Mode: นับสัญญาณพัลส์ (Pulse) จากภายนอก
- การประยุกต์ใช้:
- สร้าง Delay
- วัดความถี่
- สร้างสัญญาณ PWM (Pulse Width Modulation) สำหรับควบคุมความเร็วมอเตอร์, ความสว่าง LED
- สร้าง Real-Time Clock (RTC)
- ภาพประกอบ:
- Timer/Counter Block Diagram: ค้นหา “microcontroller timer counter”
- PWM Waveform: ค้นหา “PWM signal”
2.5 Interrupts
- หน้าที่: เป็นกลไกที่ทำให้อุปกรณ์ภายนอก (หรือ Timer ภายใน) สามารถขัดจังหวะการทำงานปกติของ CPU เพื่อให้ CPU หันมา 처리สิ่งที่สำคัญก่อน (Interrupt Service Routine – ISR)
- ประเภทของ Interrupts:
- External Interrupt: เกิดจากสัญญาณภายนอก (เช่น กดสวิตช์)
- Timer Interrupt: เกิดจาก Timer ครบตามเวลาที่กำหนด
- Serial Communication Interrupt: เกิดเมื่อรับ/ส่งข้อมูลผ่าน Serial Port เสร็จ
- ADC Interrupt: เกิดเมื่อ ADC แปลงสัญญาณเสร็จ
- การจัดการ Interrupts:
- ต้องเปิดใช้งาน Interrupt (Enable)
- กำหนด Priority (ลำดับความสำคัญ) ของ Interrupt
- เขียน Interrupt Service Routine (ISR) ซึ่งเป็นโปรแกรมย่อยที่จะทำงานเมื่อเกิด Interrupt
- ภาพประกอบ:
- Interrupt Flowchart/Diagram: ค้นหา “microcontroller interrupt flowchart” หรือ “interrupt handling process” จะมีภาพขั้นตอนการทำงาน
แหล่งข้อมูลเพิ่มเติม:
- Datasheet ของไมโครคอนโทรลเลอร์: เอกสารสำคัญที่สุด! จะมีรายละเอียดทั้งหมดเกี่ยวกับโครงสร้างภายใน, รีจิสเตอร์, การตั้งค่าต่างๆ (ดาวน์โหลดได้จากเว็บไซต์ผู้ผลิต)
- Application Notes: เอกสารจากผู้ผลิตที่อธิบายการใช้งานเฉพาะด้าน
- หนังสือ, บทความ, และเว็บไซต์: ค้นหาโดยใช้คำหลักที่เกี่ยวข้อง เช่น “microcontroller architecture”, “[ชื่อไมโครคอนโทรลเลอร์] tutorial”