Interrupt ของ CH32V003 คืออะไร

Interrupt ใน CH32V003 คือ กลไกที่ทำให้ CPU หยุดงานปัจจุบันทันที เพื่อไปจัดการกับงานสำคัญที่เข้ามาก่อน (เช่น Timer หมดเวลา, UART รับข้อมูลเสร็จ, ขา GPIO มีการเปลี่ยนสถานะ) แล้วค่อยกลับมาทำงานเดิม

โดย CH32V003 มีระบบอินเทอร์รัปต์ที่ควบคุมโดย PFIC (Fast Programmable Interrupt Controller)【9:1.4.7†source】


จุดเด่นของระบบ Interrupt บน CH32V003

  • PFIC Controller ภายใน MCU ควบคุมการจัดการ Interrupt
  • รองรับ สูงสุด 255 อินเทอร์รัปต์เวกเตอร์ (4 เป็น Core Private + 23 เป็น Peripheral Interrupt)【9:1.4.7†source】
  • รองรับ 2 ระดับการซ้อน (Interrupt Nesting) ทำให้อินเทอร์รัปต์ที่สำคัญกว่าสามารถแทรกเข้ามาได้【9:1.4.7†source】
  • รองรับ Non-Maskable Interrupt (NMI) คืออินเทอร์รัปต์ที่ไม่สามารถถูกปิดได้
  • Hardware Stack รองรับการ Save/Restore Context อัตโนมัติ ลดภาระ CPU【11:Features†source】
  • Vector Table สามารถทำได้ทั้งแบบ Address Mode หรือ Command Mode【11:2.2†source】
  • มีระบบ Fast Interrupt (VTF) สำหรับอินเทอร์รัปต์ความเร็วสูง
  • สามารถใช้ 1-Wire SDI Debug เพื่อตรวจสอบพฤติกรรมอินเทอร์รัปต์ได้ระหว่างดีบั๊ก

ภาพรวมการทำงาน (Flow)

  1. เกิดเหตุการณ์ที่ต้องการอินเทอร์รัปต์ เช่น Timer หมดเวลา
  2. Peripheral นั้นส่งสัญญาณ Interrupt Request (IRQ) ไปที่ PFIC
  3. PFIC เช็ค Priority → ถ้าอนุญาต → สั่ง CPU กระโดดไปทำฟังก์ชัน Interrupt Handler
  4. ฟังก์ชัน Handler จะทำงาน
  5. ใช้คำสั่ง mret เพื่อกลับไปทำงานต่อจากที่ถูกขัดจังหวะ

Peripheral ที่สามารถสร้าง Interrupt ได้ใน CH32V003 เช่น

  • TIM1, TIM2 (Timer)
  • USART1 (Serial Communication)
  • I2C1 (I2C Bus)
  • SPI1 (SPI Bus)
  • ADC (Analog to Digital Converter)
  • EXTI (External Interrupt from GPIO pin)

สรุปเข้าใจง่าย

Interrupt ของ CH32V003 =
“ระบบขัดจังหวะ CPU ทันที เพื่อให้ไปทำงานสำคัญก่อนได้อย่างรวดเร็ว โดยมี PFIC คอยจัดการอย่างมีประสิทธิภาพ พร้อมรองรับการซ้อนอินเทอร์รัปต์ และรองรับอินเทอร์รัปต์ได้หลายชนิด”