วันศุกร์ที่ 14 พฤษภาคม พ.ศ. 2553
PWM fault pins
PWM output pin reset states
Output polarity control
ถ้าบิต palarity เซตเป็น '1' pwm i/o pin ที่สัมพันธ์กันจะมี active-high output polarity ถ้าบิต palarity เซตเป็น '0' pwm i/o pin ที่สัมพันธ์กันจะมี active-low output polarity
PWM output and polarity control
- บิต HPOL
- บิต LPOL
- บิต PWMPIN
Output override examples
รีจิสเตอร์ pwm duty cycle ทำงานเชื่อมต่อกันกับรีจิสเตอร์ OVDCON โดยรีจิสเตอร์ pwm duty cycle ควบคุมกระแสที่ส่งไปที่โหลดและรีจิสเตอร์ OVDCON ควบคุมการสับเปลี่ยน (ภาพที่ 15-20 แสดงตัวอย่าง) ค่าในรีจิสเตอร์ OVDCON ใช้ผลิตสัญญาณในภาพที่ 15-20 ที่ได้จากตารางที่ 15-7
Override synchronization
- edge aligned mode, เมื่อ PTMR เป็น 0
- center aligned mode, เมื่อ PTMR เป็น 0 หรือ
- เมื่อค่า PTMR ตรงกับ PTPER
Override control for complementary output mode
ลักษณะของ OVDCON register
bit 15-8 POVD4H-POVD1L: pwm output override bits
1=output on PWMxx i/o pin is controlled by the pwm generator
0=output on PWMxx i/o pin is controlled by the value in the corresponding POUTxx bit
bit 7-0 POUT4H-POUT1L: pwm manual output bits
1=PWMxx i/o pin is driven ACTIVE when the corresponding POVDxx bit is cleared
0=PWMxx i/o pin is driven INACTIVE when the corresponding POVDxx bit is cleared
---------
---------
OVDCON register ประกอบด้วย
<15:8>
POVD4H, POVD4L, POVD3H, POVD3L, POVD2H, POVD2L, POVD1H, POVD1L
<7:0>
POUT4H, POUT4H, POUT3H, POUT3L, POUT2H, POUT2L, POUT1H, POUT1L
บิต POVD เป็นตัวเลือกว่าให้ควบคุมโดย pwm generator (set 1) หรือ manual (set 0) ส่วน POUT เป็นตัวเลือกว่าจะให้ช่องใหนควบคุมแบบ manual
PWM output override
บิตที่ใช้ควบคุม pwm output override ทั้งหมดบรรจุอยู่รีจิสเตอร์ OVDCON ครึ่งบนของรีจิสเตอร์ OVDCON ประกอบมี 8 บิต (POVDxx) เป็นตัวเลือกว่า pwm i/o pins ใหนจะถูก override ส่วนครึ่งล่างของรีจิสเตอร์ OVDCON มี 8 บิต (POUTxx) เป็นตัวเลือกว่า pwm i/o pins เพื่อทำการ overrid ผ่านบิต POVDxx
Dead time distortion
ผลกระทบแบบเดียวกันนี้เกิดเมื่อ duty cycle เข้าใกล้ 100% ดังนั้นค่า duty cycle สูงสุดของ pwm sinal ควรมีช่วงสภาวะ inactive ที่น้อยที่สุดเป็นอย่างน้อย 3 เท่าของ dead time
Dead time ranges
Dead time A และ dead time B ถูกกำหนดด้วยค่า input clock prescaler และค่า dead time ความละเอียด 6 บิตแบบไม่นับเครื่องหมาย เพื่อให้ได้ค่า dead time ที่พอดีอิงตามความถี่ของอุปกรณ์ขณะทำงาน จะมี input clock prescaler ให้เลือก 4 ค่า และตัว clock prescaler สามารถกำหนดได้อิสระในแต่ละ dead time โดยใช้บิต DTAPS และ DTBPS ใน DTCON1 SFR และแต่ละ clock prescaler ดังกล่าวมีค่า:
- Tcy
- 2Tcy
- 4Tcy
- 8Tcy
ตารางที่ 15-5 แสดงตัวอย่างขนาด dead time ตาม clock prescaler และความถี่ของอุปกรณ์ขณะทำงาน
Dead time assignment
note: ตัว dead time assignment logic ใช้งานได้กับเฉพาะ DSC dsPIC variants ที่ประกอบด้วย 8-output pwm module ส่วน 6-output pwm module ใช้ dead time A เท่านั้น
ตัว DTCON2 register มี control bit ที่ใช้อนุญาติ dead time ให้ทำงานในแต่ละ complementary outputs จะมีสองบิตใช้กำหนด dead time ของแต่ละ complementary outputs ตัวอย่างเช่น บิต DTS1A และ DTS1I ใช้กำหนด dead time ให้กับ PWM1H/PWM1L complementary output pair บิตคู่ดังกล่าวกล่าวได้ว่าเป็นบิต 'dead-time-select-active' และ 'dead-time-select-inactive' ตามลำดับ หน้าที่ของแต่ละบิตเป็นดังนี้:
- DTSxA control bit ใช้กำหนด dead time ที่แทรกอยู่ก่อนที่ high-side จะเปลี่ยนสถานะเป็น active
- DTSzI control bit ใช้กำหนด dead time ที่แทรกอยู่ก่นที่ low-side จะเปลี่ยนสถานะเป็น active
ตารางที่ 15-4 รวมหน้าที่ของแต่ละบิตควบคุม dead time
วันพฤหัสบดีที่ 13 พฤษภาคม พ.ศ. 2553
Dead time generators
Dead time control
- pwm output signals สามารถปรับได้ระหว่างช่วง turn-off time ใน high-side และ low-side transister dead time ตัวแรกจะแทรกระหว่าง turn-off event ของ lower transistor ใน complementary pair และ turn-on event ของ upper transister ส่วน dead time ตัวที่สองจะแทรกระหว่าง turn-off event ของ upper transister และ turn-on event ของ lower transister
- dead time ตัวที่สองสามารถทำงานแยกได้แต่ละ pwm i/o pin pair การทำงานในโหมดนี้อนุญาตให้ pwm module ขับแยกกันแต่ละ transister/load ร่วมกับ complementary pwm i/o pin pair
Complementary PWM output mode
PWM duty cycle immediate updates
ภาพที่ 15-12 ชี้เวลาที่เกิดการปรับปรุง duty cycle เมื่ออนุญาต immediate updates (IUE=1)
Note: บิต IUE ใช้งานไม่ได้ใน dsPIC30F6010
Duty cycle register buffering
เมื่อ pwm time base ทำงานใน free running mode หรือ single event mode (PTMOD=0x) เมื่อไหร่ก็ตามที่ PTMR เท่ากับ PTPER จะมีการปรับปรุงค่า pwm duty cycle และ PTMR จะรีเซตเป็น '0'
Note: อะไรที่เขียนในรีจิสเตอร์ PDCx จะปรับปรุงค่า pwm duty cycle โดยทันทีเมื่อไม่อนุญาต pwm time base (PTEN=0) ซึ่งทำให้ duty cycle เปลี่ยนโดยมีผลก่อนอนุญาต pwm time base (PTEN=1)
เมื่อ pwm time base ทำงานใน up/down counting mode (PTMOD=10) จะมีการปรับปรุงค่า duty cycle เมื่อค่า PTMR register เป็น 0 และ pwm time base เริ่มนับขึ้น ภาพที่ 15-10 ชี้เวลาที่เกิดการปรับปรุง pwm duty cycle ในโหมด pwm time base นี้
เมื่อ pwm time base อยู่ใน up/down counting mode with double updates (PTMOD=11) จะมีการปรับปรุงค่า duty cycle เมื่อค่า PTMR register เป็น 0 และค่า PTMR register ตรงกับค่า PTPER register ภาพที่ 15-11 ชี้เวลาที่เกิดการปรับปรุง duty cycle ในโหมด pwm time base นี้
Center aligned PWM
สัญญาณ pwm จะอยู่ในสถานะ active เมื่อค่า PTMR ตรงกับค่า PDCx ขณะฐานเวลานับลง (PTDIR=1) และสัญญาณ pwm จะอยู่ในสถานะ inactive เมื่อค่า PTMR ตรงกับค่า PDCx ขณะฐานเวลานับขึ้น (PTDIR=0)
ถ้าค่าในรีจิสเตอร์ PDCx เป็น 0 สัญญาณที่ขาเอาต์พุต pwm จะมีสถานะเป็น inactive ตลอดคาบเวลาของ pwm นั้น แต่ถ้าค่าในรีจิสเตอร์ PDCx มากกว่าค่าที่เก็บในรีจิสเตอร์ PTPER สัญญาณที่ขาเอาต์พุต pwm จะอยู่ในสภาวะ active
วันพุธที่ 12 พฤษภาคม พ.ศ. 2553
Single event PWM operation
ในโหมด single event ขาอินพุตและเอาต์พุตจะมีสัญญาณก็ต่อเมื่อเซตบิต PTEN เมื่อค่าของรีจิสเตอร์ PTMR และ PTPER ตรงกัน ขาอินพุต/เอาต์พุตจะไม่มีสัญญาณ เพราะมีการเคลียร์รีจิสเตอร์ PTMR พร้อมกับบิต PTEN ถูกเคลียร์และมีอินเตอร์รัปต์เกิดขึ้น โมดูล pwm จะหยุดทำงานจนกระทั่งมีการเซตบิต PTEN อีกครั้งในชุดคำสั่ง
Edge aligned PWM
ถ้าค่าในรีจิสเตอร์ PDCx เท่ากับ 0 จะไม่มีสัญญาณเอาต์พุตที่ขา pwm นั้น โดยจะมีสัญญาณเอาต์พุตที่ขา pwm ก็ต่อเมื่อค่าในรีจิสเตอร์ PDCx มากกว่าค่าที่เก็บอยู่ในรีจิสเตอร์ PTPER
ถ้าอนุญาตให้ปรับปรุงค่าทันทีทันใด (IUE=1) ค่าดิวตี้ไซเกิลใหม่จะถูกใช้งานที่เวลาที่ค่าใหม่เขียนไปที่รีจิสเตอร์ PDC ใดๆ ที่ทำงานอยู่
PWM duty cycle resolution
...
ตารางที่ 15-2 แสดงความละเอียดและความถี่ของสัญญาณ pwm กับการเลือกใช้ความเร็วและค่า PTPER ความถี่ของสัญญาณ pwm ในตารางเป็นความถี่ในโหมด free running ส่วนโหมด center aligned ความถี่จะมีค่าเป็นครึ่งหนึงดังแสดงในตารางที่ 15-3
...
...
สำหรับโหมด freen running และ up/down counting ค่า duty cycle สามารถคำนวณโดยใช้สมการที่ 15-4
...
โมดูล MCPWM มีความสามารถในการผลิตขอบสัญญาณที่มีความละเอียดเท่ากับ Tcy/2 โดย PTMR เพิ่มขึ้นทุกๆ Tcy ที่ prescaler 1:1 เพื่อให้ได้ความละเอียด Tcy/2 รีจิสเตอร์ PDCx ถูกเปรียบเทียบกับรีจิสเตอร์ PTMR เพื่อหาค่า duty cycle รีจิสเตอร์ PDCx (ที่บิต 0) เป็นตัวหาว่าขอบสัญญาณ pwm จะเกิดขึ้นที่ช่วง Tcy หรือ Tcy/2 เมื่อนำ prescaler ที่ 1:4, 1:16 หรือ 1:64 มาใช้กับฐานเวลา pwm รีจิสเตอร์ PDCx (ที่บิต 0) จะเปรียบเทียบกับ MSb ของตัวนับสัญญาณนาฬิกา prescaler เพื่อหาเมื่อไหร่ที่ขอบสัญญาณ pwm จะเกิด
ความละเอียดของ PTMR และ PDCx แสดงในภาพที่ 15-5 แสดงให้เห็นถึงความละเอียดของ PTMR คือ Tcy และ PDCx มีความละเอียดเป็น Tcy/2 เมื่อเลือก prescaler เป็น 1:1
...ภาพที่ 15-5...
...ภาพที่ 15-6...
PWM duty cycle comparison units
- PDC1
- PDC2
- PDC3
- PDC4
PWM period
- โหมด free running และ single event: เมื่อรีจิสเตอร์ PTMR รีเซตเป็น 0 หลังจากค่าตรงกับรีจิสเตอร์ PTPER
- โหมด up/down counting:เมื่อรีจิสเตอร์ PTMR เป็น 0
PWM time base interrupts
free running mode
เมื่อฐานเวลา pwm อยู่ในโหมด free running (PMOD=00) อินเตอร์รัปต์ถูกสร้างขึ้นเมื่อรีจิสเตอร์ PTMR รีเซตเป็น 0 ซึ่งตรงกับรีจิสเตอร์ PTPER ส่วนบิตเลือก postscaler จะใช้ในโหมดนี้เพื่อลดความถี่ของการเกิดอินเตอร์รัปต์
single event mode
เมื่อฐานเวลา pwm อยู่ในโหมด single event (PMOD=01) อินเตอร์รัปต์ถูกสร้างขึ้นเมื่อรีจิสเตอร์ PTMR รีเซตเป็น 0 ซึ่งตรงกับรีจิสเตอร์ PTPER และบิต PTEN (บิตที่ 15 ของรีจิสเตอร์ PTCON) จะถูกลบค่าด้วยในเวลาเดียวกันเพื่อหยุดการนับของ PTMR ส่วนบิตเลือก postscaler ไม่มีผลต่อโหมดนี้
up/down counting mode
ในโหมด up/down counting (PMOD=10) แต่ละครั้งที่ค่าของรีจิสเตอร์ PTMR มีค่าเท่ากับ 0 อินเตอร์รัปต์จะถูกสร้างขึ้นมาและฐานเวลา pwm จะเริ่มนับขึ้น ส่วนบิตเลือก postscaler จะใช้ในโหมดนี้เพื่อลดความถี่ของการเกิดอินเตอร์รัปต์
up/down counting mode with double updates
ในโหมด double update (PMOD=11) แต่ละครั้งที่ค่าของรีจิสเตอร์ PTMR มีค่าเท่ากับ 0 และเกิดคาบเวลาตรงกัน อินเตอร์รัปต์จะถูกสร้างขึ้นมา ส่วนบิตเลือก postscaler ไม่มีผลต่อโหมดนี้
*โหมด bouble update ทำให้ control loop bandwidth มีค่าเป็นสองเท่าเนื่องจาก pwm duty cycle ปรับปรุงค่าได้สองครั้งในหนึ่งคาบ ทุกๆ ขอบขาขึ้นและขอบขาลงของสัญญาณ pwm สามารถควบคุมได้โดยใช้โหมด double update
PWM time base postscaler
การนับ postscaler จะถูกยกเลิกเมื่อเกิดเหตุการณ์ดังต่อไปนี้
- เขียนถึงรีจิสเตอร์ PTMR
- เขียนถึงรีจิสเตอร์ PTCON
- อุปกรณ์ใดๆ รีเซต
รีจิสเตอร์ PTMR จะไม่ถูกลบเมื่อเขียนรีจิสเตอร์ PTCON
PWM time base prescaler
- เขียนถึงรีจิสเตอร์ PTMR
- เขียนถึงรีจิสเตอร์ PTCON
- อุปกรณ์ใดๆ รีเซต
รีจิสเตอร์ PTMR จะไม่ถูกลบเมื่อเขียนรีจิสเตอร์ PTCON