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”