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)
- เกิดเหตุการณ์ที่ต้องการอินเทอร์รัปต์ เช่น Timer หมดเวลา
- Peripheral นั้นส่งสัญญาณ Interrupt Request (IRQ) ไปที่ PFIC
- PFIC เช็ค Priority → ถ้าอนุญาต → สั่ง CPU กระโดดไปทำฟังก์ชัน Interrupt Handler
- ฟังก์ชัน Handler จะทำงาน
- ใช้คำสั่ง
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 คอยจัดการอย่างมีประสิทธิภาพ พร้อมรองรับการซ้อนอินเทอร์รัปต์ และรองรับอินเทอร์รัปต์ได้หลายชนิด”