วันศุกร์ที่ 14 พฤษภาคม พ.ศ. 2553

PWM fault pins

FLTA และ FLTB เป็น 2 fault pin ที่ทำงานร่วมกับ pwm module เมื่อถูกเรียกใช้จะสามารถขับ pwm i/o pin ได้ตามสภาวะที่กำหนด การกระทำนี้เกิดขึ้นโดยปราศจากการแทรกแซงชุดคำสั่ง ดังนั้น fault event จึงสามารถจัดการได้อย่างรวดเร็ว
fault pin อาจมี multiplex fucntion ขึ้นกับแต่ละรุ่นของ dsPIC เมื่อทำหน้าที่เป็น fault pin แต่ละ pin สามารถอ่านค่าได้ผ่านทางรีจิสเตอร์ที่สัมพันธ์กัน FLTA และ FLTB เป็นอินพุตแบบ active-low ดังนั้นจึงง่ายต่อการเขียนไปที่ค่าอินพุตเดียวกันผ่านทางตัวต้านทาน pull-up ภายนอก เมื่อไม่ใช้ร่วมกับ pwm module ตัว pin นี้อาจใช้เป็น i/o ทั่วไปหรือใช้เป็น multiplex function ในแต่ละ fault pin จะมี interrupt vector, interrupt flag, บิตเปิดใช้งาน interrupt เป็นของตัวเองและมีบิตบอกลำดับความสำคัญด้วย
การทำงานของ FLTA pin ถูกควบคุมดดยรีจิสเตอร์ FLTACON และการทำงานของ FLTB pin ถูกควบคุมโดยรีจิสเตอร์ FLTBCON

PWM output pin reset states

บิต PWMPIN ใช้ตรวจจับพฤติกรรมของ pwm output pin ตอนอุปกรณ์รีเซตและสามารถใช้กำจัดตัวต้านทาน pull-up/pull-down ที่ต่อภายนอกกับอุปกรณ์ที่ควบคุมโดย pwm module
ถ้าบิต PWMPIN เซตเป็น '1' บิต PENxx จะถูกเคลียร์เมื่ออุปกรณ์รีเซต ตามลำดับแล้วเอาต์พุตของ pwm ทั้งหมดจะมี 3 สภาวะและถูกควบคุมโดยรีจิสเตอร์ PORT และ TRIS ที่สัมพันธ์กัน
ถ้าบิต PWMPIN เซตเป็น '0' บิต PENxx จะถูกเซตเมื่ออุปกรณ์รีเซต pwm pin ทั้งหมดจะเปิดให้ pwm output เวลาที่อุปกรณ์รีเซตและจะยังคงสภาวะที่ inactive ตามที่กำหนดไว้ในบิต HPOL แล LOPOL

Output polarity control

polarity ของ pwm i/o pin จะเซตขณะอุปกรณ์ทำงานผ่านบิต HPOL และ LPOL ในรีจิสเตอร์ FPORBOR โดยบิต HPOL เซต output polarity ของ PWM1H-PWM4H ส่วนบิต LPOL เซต output polarity ของ PWM1L-PWM4L
ถ้าบิต 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

บิต PENxx ในรีจิสเตอร์ PWMCON1 ใช้เพื่อเปิดใช้งาน pwm output pin เมื่อตัว pin เปิดใช้งานร่วมกับเอาต์พุตของ pwm แล้ว รีจิสเตอร์ PORT และ TRIS ที่ควบคุม pwm output pin ก็จะถูกเปิดใช้งาน
นอกจากบิตควบคุม PENxx ยังมีอีก 3 บิตในรีจิสเตอร์ FBORPOR ที่มีไว้สำหรับควบคุม pwm output pin
  • บิต HPOL
  • บิต LPOL
  • บิต PWMPIN
เป็น 3 บิตที่ทำงานประสานกันกับบิตควบคุม pwm (PENxx) ภายในรีจิสเตอร์ PWMCON1 บิตดังกล่าวเป็นตัวยืนยันว่า pwm pin อยู่ในสถาวะที่ถูกต้องหลังจากรีเซตอุปกรณ์

Output override examples

ภาพที่ 15-19 แสดงตัวอย่างรูปคลื่นที่ผลิตได้จาก pwm output override ในภาพแสดงลำดับการสับเปลี่ยนทั้ง 6 ขั้นของ BLDC motor ซึ่งขับผ่านอินเวอร์เตอร์ 3 เฟส ดังแสดงในภาพที่ 15-13 เมื่อตรวจจับตำแหน่งของโรเตอร์ที่จุดเปลี่ยนได้ เอาต์พุตของ pwm จะเปลี่ยนไปเป็นรูปแบบต่อไปตามลำดับขั้น ในตัวอย่างนี้ เอาต์พุตของ pwm จะถูกขับไปที่ logic state ที่ระบุไว้ ค่าในรีจิสเตอร์ OVDCON นำมาใช้ผลิตสัญญาณในภาพที่ 15-19 ที่ได้จากตารางที่ 15-6
รีจิสเตอร์ pwm duty cycle ทำงานเชื่อมต่อกันกับรีจิสเตอร์ OVDCON โดยรีจิสเตอร์ pwm duty cycle ควบคุมกระแสที่ส่งไปที่โหลดและรีจิสเตอร์ OVDCON ควบคุมการสับเปลี่ยน (ภาพที่ 15-20 แสดงตัวอย่าง) ค่าในรีจิสเตอร์ OVDCON ใช้ผลิตสัญญาณในภาพที่ 15-20 ที่ได้จากตารางที่ 15-7

Override synchronization

เมื่อเซตบิต OSYNC (บิตที่ 1 ของรีจิสเตอร์ PWMCON2) เอาต์พุตทั้งหมดที่ override ผ่านรีจิสเตอร์ OVDCON จะถูก synchronize กับ pwm time base เอาต์พุตที่ถูก synchronize และ override จะเกิดขึ้น ณ เวลาต่อไปนี้:
  • edge aligned mode, เมื่อ PTMR เป็น 0
  • center aligned mode, เมื่อ PTMR เป็น 0 หรือ
  • เมื่อค่า PTMR ตรงกับ PTPER
หน้าที่ของ override synchronization คือสามารถหลีกเลี่ยง narrow pulse ใน pwm output pin

Override control for complementary output mode

ตัว pwm module จะไม่ทำ override เมื่อคู่ของ pwm i/o pin กำลังทำงานใน complementary mode (PMODx=0) ตัว module จะไม่ยอม ให้คู่ pwm i/o pin เปลี่ยนสภาวะเป็น active พร้อมกัน และ high-side pin ในแต่ละ pwm i/o pin จะมีความสำคัญลำดับต้นๆ เสมอ
note: การแทรก dead time จะยังทำอยู่ เมื่อ pwm channel ทำ override แบบควบคุมโดยผู้ใช้งาน

ลักษณะของ OVDCON register

OVDCON: override control 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 อนุญาตให้ผู้ใช้งานขับ pwm i/o pin โดยตัวผู้ใช้งานเอง เพื่อระบุ logic state โดยเป็นอิสระจากชุด duty cycle comparison บิต pwm override มีประโยชน์เมื่อต้องควบคุม electrically commuted motors หลายชนิด
บิตที่ใช้ควบคุม pwm output override ทั้งหมดบรรจุอยู่รีจิสเตอร์ OVDCON ครึ่งบนของรีจิสเตอร์ OVDCON ประกอบมี 8 บิต (POVDxx) เป็นตัวเลือกว่า pwm i/o pins ใหนจะถูก override ส่วนครึ่งล่างของรีจิสเตอร์ OVDCON มี 8 บิต (POUTxx) เป็นตัวเลือกว่า pwm i/o pins เพื่อทำการ overrid ผ่านบิต POVDxx
บิต POVD เป็นบิตแบบ active-low เมื่อเซตบิต POVD บิต POUTxx ที่สมพันธ์กันจะไม่มีผลต่อเอาต์พุตของ pwm เมื่อบิตใดบิตหนึ่งของ POVD ถูกเคลียร์ เอาต์พุตของ pwm i/o pin ที่ถูกสัมพันธ์กันจะขึ้นอยู่กับสภาวะของบิต POUT เมื่อบิต POUT ถูกเซต สัญญาณ pwm จะอยู่ในสภาวะ active และเมื่อบิต POUT ถูกเคลียร์ สัญญาณ pwm จะอยู่ในสภาวะ inactive

Independent PWM output mode

independent pwm output mode ใช้ขับโหลดดังแสดงในภาพที่ 15-17 ซึ่ง pwm output pair จะแยกกันทำงานใน independnet output mode โดยการเซตบิต PMOD ใน PWMCON1 register ตัว dead time generators จะไม่ทำงานในโหมดนี้และไม่มีผลต่อสภาวะของ output pin pair

Dead time distortion

สำรับ pwm ที่ความถี่สูง อัตราระหว่าง dead time กับเวลาที่ pwm อยู่ในสภาวะ active อาจมีค่าสูง ในกรณีที่มากเกินไปถ้า duty cycle น้อยกว่าหรือเท่ากับ programmed duty cycle จะไม่มีการสร้างสัญญาณ pwm กรณีนี้ dead time ที่แทรกอยู่จึงจะเริ่มรบกวนสัญญาณจาก pwm module ผู้ใช้งานมั่นใจได้ว่า dead time distortion จะมีผลน้อยมากถ้ารักษาระดับ pwm duty cycle ไว้อย่างน้อย 3 เท่าของ dead time และยังสามารถแก้ไข dead time distortion ได้หลายทาง เช่น ใช้ closed loop current control
ผลกระทบแบบเดียวกันนี้เกิดเมื่อ 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

แต่ละ complementary output pair ของ pwm module มีตัวนับลงขนาด 6 บิต ใช้สำหรับสร้าง dead time ดังแสดงในภาพที่ 15-15 dead time แต่ละชุดมีตัวตรวจจับ rising และ falling edge ต่อเข้ากับ duty comparison output
หนึ่งในสอง dead time ถูกโหลดไปที่ตัว timer ใน pwm edge event ที่ตรวจจับได้ ขึ้นกับว่า pwm edge จะเป็นช่วงขาขึ้นหรือขาลง การทำงานของ complementary output สัญญาณหนึ่งจะถูกหน่วงจนกระทั่ง timer นับลงไปถึง 0 แผนภาพเวลาชี้ dead time ที่แทรกใน pwm output pair แสดงในภาพที่ 15-16 การใช้ dead time 2 แบบทั้งขอบขาขึ้นและและขอบขาลงได้ขยายความไว้ในภาพเพื่อความกระจ่าง

Dead time control

เมื่อ pwm ทำงานใน complementary output mode จะให้กำเนิด dead time โดยอัตโนมัติ เนื่อจาก power output device ไม่สามารถเปลี่ยนสภาวะได้ทันทีทันใด ต้องมีช่วงเวลาคั่นระหว่างตอน inactive และ active ของคู่ pwm output
6-output pwm module ควบคุม dead time ได้แบบเดียว 8-output pwm module ควบคุม dead time ได้สองแบบ dead time ทั้งสองอาจจะใช้งานได้หนึ่งหรือสองวิธีดังอธิบายด้านล่างเพื่อเพิ่มความยืดหยุ่น
  • 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

complementary pwm output mode ใช้สำหรับขับโหลดอินเวอร์เตอร์แบบแสดงในภาพที่ 15-13 ปกติ inverter topologies นำไปใช้งานใน ACIM และ BLDC ที่ complementary output mode คู่ของ pwm ไม่สามารถอยู่ในสภาวะ active ได้ในเวลาเดียวกัน ขาของ pwm output แต่ละ pwm channel มีโครงสร้างภายในดังแสดงในภาพที่ 15-14 อาจใส่ dead time เป็นตัวเสริมทำให้คู่ของ pwm อยู่ในสภาวะ inactive เป็นเวลาสั้นๆ ขณะกำลังสวิตช์ (รายละเอียดใน section 15.6 "dead time control")
complementary mode จะเลือกเอาคู่ของขา pwm i/o โดยเคลียร์บิต PMODx ในรีจิสเตอร์ PWMCON1 ขา pwm i/o เซตเป็น complementary mode เริ่มต้นมาพร้อมอุปกรณ์

PWM duty cycle immediate updates

เมื่ออนุญาต immediate update (IUE=1) อะไรที่เขียนใน duty cycle register จะปรับปรุงค่า duty cycle ในทันที ความสามารถนี้ให้ทางเลือกแก่ผู้ใช้งานสามารถปรับปรุง pwm duty cycle registers ทันทีโดยไม่รอให้จบ time base period ก่อน โดย immediate update นี้นำไปใช้พัฒนาเสถียรภาพของ closed loop servo โดยลดการหน่วงระหว่างการทำงานและคำสั่งที่ออกมา
ถ้า pwm ขาออกมีสภาวะ active ตอนที่เขียน duty cycle ใหม่และ duty cycle ใหม่น้อยกว่าค่า time base ปัจจุบัน ความกว้างของ pwm จะสั้นลง ถ้า pwm ขาออกมีสภาวะ active ตอนที่เขียน duty cycle ใหม่และ duty cycle ใหม่มากกว่าค่า time base ปัจจุบัน ความกว้างของ pwm จะยังคงเดิม ถ้า pwm ขาออกมีสภาวะ inactive ตอนที่เขียน duty cycle ใหม่และ duty cycle ใหม่มากกว่าค่า time base ปัจจุบัน pwm ขาออกจะเปลี่ยนเป็น active โดยทันทีและอยู่ใน duty cycle นั้นจนกว่าจะเขียนค่า duty cycle ใหม่
ภาพที่ 15-12 ชี้เวลาที่เกิดการปรับปรุง duty cycle เมื่ออนุญาต immediate updates (IUE=1)
Note: บิต IUE ใช้งานไม่ได้ใน dsPIC30F6010

Duty cycle register buffering

รีจิสเตอร์กำหนด pwm duty cycle (PDC1-PDC4) ใช้เก็บค่าเพื่อให้การปรับปรุงค่าสัญญาณ pwm ไม่เกิดความผิดพลาด แต่ละแหล่งกำเนิดมีรีจิสเตอร์ PDCx (รีจิสเตอร์บัฟเฟอร์) ที่เข้าถึงได้โดยผู้ใช้งานและ non-memory duty cycle ที่เก็บค่าขณะทำงาน pwm duty cycle จะปรับปรุงค่าด้วยค่าในรีจิสเตอร์ PDCx ตามเวลาที่ระบุไว้ใน pwm period เพื่อป้องกัน glitchless ในสัญญาณ pwm ขาออก
เมื่อ 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 ถูกตั้งค่าให้เป็นโหมด up/down counting (PTMOD=1x) โมดูล pwm จะสร้างสัญญาณแบบ 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

เมื่อฐานเวลา pwm ถูกกำหนดให้เป็นโหมด single event (PMOD=01) โมดูล pwm จะสร้างพัลส์เดี่ยว โหมดการทำนี้ใช้ได้ดีสำหรับขับมอเตอร์ประเภท electronically commuted โดยเฉพาะการทำงานของมอเตอร์ประเภท high-speed SR สัญญาณที่สร้างจากโหมด single event มีลักษณะเป็นแบบ edge alinged เท่านั้น
ในโหมด single event ขาอินพุตและเอาต์พุตจะมีสัญญาณก็ต่อเมื่อเซตบิต PTEN เมื่อค่าของรีจิสเตอร์ PTMR และ PTPER ตรงกัน ขาอินพุต/เอาต์พุตจะไม่มีสัญญาณ เพราะมีการเคลียร์รีจิสเตอร์ PTMR พร้อมกับบิต PTEN ถูกเคลียร์และมีอินเตอร์รัปต์เกิดขึ้น โมดูล pwm จะหยุดทำงานจนกระทั่งมีการเซตบิต PTEN อีกครั้งในชุดคำสั่ง

Edge aligned PWM

สัญญาณ edge aligned pwm ผลิตโดย module MCPWM เมื่อฐานเวลา pwm ทำงานในโมหด free running สัญญาณเอาต์พุตจาก pwm channel ที่ให้มามีคาบเวลาที่ได้จากรีจิสเตอร์ PTPER และค่า duty cycle ที่ได้จากการกำหนดรีจิสเตอร์ PDCx (ดูในรูปที่ 15-7) สมมติว่ากำหนดให้เป็น non-zero duty cycle และไม่มีการปรับปรุงค่าทันทีทันใด (IUE=0) แต่ละเอาต์พุตของ pwm จะหยุดทำงานเมื่อค่าของ PTMR ตรงกับค่า duty cycle ของตัวกำเนิดสัญญาณ pwm เอาต์พุตของตัวกำเนิด pwm จะเริ่มมีสัญญาณที่จุดเริ่มต้นของคาบเวลา pwm (PTMR=0) เอาต์พุตของแต่ละ pwm จะไม่มีสัญญาณเมื่อค่าของ PTMR ตรงกับค่า duty cycle ของตัวกำเนิด pwm
ถ้าค่าในรีจิสเตอร์ PDCx เท่ากับ 0 จะไม่มีสัญญาณเอาต์พุตที่ขา pwm นั้น โดยจะมีสัญญาณเอาต์พุตที่ขา pwm ก็ต่อเมื่อค่าในรีจิสเตอร์ PDCx มากกว่าค่าที่เก็บอยู่ในรีจิสเตอร์ PTPER
ถ้าอนุญาตให้ปรับปรุงค่าทันทีทันใด (IUE=1) ค่าดิวตี้ไซเกิลใหม่จะถูกใช้งานที่เวลาที่ค่าใหม่เขียนไปที่รีจิสเตอร์ PDC ใดๆ ที่ทำงานอยู่

PWM duty cycle resolution

ความละเอียดสูงสุด (ในหน่วยบิต) ในตัวกำเนิดความถี่ที่ให้มาและความถี่ pwm สามารถหาได้โดยสูตรคำนวณตามสมการ
...
ตารางที่ 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

โมดูล MCPWM มีตัวกำเนิดสัญญาณ pwm 4 ชุด มีฟังก์ชันพิเศษขนาด 16 บิต 4 ชุด ใช้สำหรับกำหนดค่า duty cycle ให้กับตัวกำเนิดสัญญาณ pwm
  • PDC1
  • PDC2
  • PDC3
  • PDC4
PDCx เป็นการอ้างถึงรีจิสเตอร์ของ PWM duty cycle ใดๆ ทั้งสี่ โดยจะอธิบายในภายหลัง

PWM period

รีจิสเตอร์ PTPER เป็นตัวกำหนดช่วงการนับให้กับรีจิสเตอร์ PTMR ผู้ใช้งานต้องกำหนดค่าบิตทั้ง 15 บิตของ PTPER (ตั้งแต่บิตที่ 14 ถึง 0) เมื่อค่าใน PTMR ตรงกับค่าใน PTPER ฐานเวลาอาจจะรีเซตค่าเป็น 0 หรือกลับทิศทางการนับบนขอบของสัญญาณนาฬิกาลูกถัดไป ทั้งนี้ขึ้นอยู่กับการทำงานในแต่ละโหมด
เพื่อให้เปลี่ยนแปลงสัญญาณ pwm ได้โดยทันทีโดยสัญญาณไม่เสียหาย จะเก็บค่าคาบเวลาไว้ล่วงหน้าสองคาบ ตัวรีจิสเตอร์ PTPER ทำหน้าที่เป็นบัฟเฟอร์รีจิสเตอร์ให้กับรีจิสเตอร์คาบฐานเวลาจริง (actual time base period register) ซึ่งไม่สามารถเข้าถึงได้โดยผู้ใช้งาน ข้อมูลในรีจิสเตอร์ PTPER ถูกดึงมาเก็บไว้ในรีจิสเตอร์คาบฐานเวลาจริง เมื่ออยู่ในโหมด free running, single event และ up/down counting
  • โหมด free running และ single event: เมื่อรีจิสเตอร์ PTMR รีเซตเป็น 0 หลังจากค่าตรงกับรีจิสเตอร์ PTPER
  • โหมด up/down counting:เมื่อรีจิสเตอร์ PTMR เป็น 0
ค่าที่อยูในรีจิสเตอร์ PTPER จะถูกดึงมาไว้ในรีจิสเตอร์ฐานเวลา (time base register) โดยอัตโนมัติเมื่อไม่อนุญาตให้ใช้ฐานเวลา pwm (PTEN=0)

PWM time base interrupts

โหมดสัญญาณ pwm ที่สร้างโดยฐานเวลา pwm ขึ้นอยู่กับการเลือกบิต PTMOD ภายในรีจิสเตอร์ PTCON (บิต 1 ถึงบิต 0) และบิตเลือก postscaler PTOPS ภายในรีจิสเตอร์ PTCON (บิต 7 ถึงบิต 4)
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

เอาต์พุตจาก PTMR สามารถปรับแต่งผ่าน postscale โดยกำหนดบิต postscaler 4 บิต (ให้ความละเอียดได้จาก 1:1 ถึง 1:16) เพื่อสร้างอินเตอร์รัปต์ postscaler นำไปใช้เมื่อไม่ต้องการให้ pwm duty cycle ปรับปรุงค่าทุกๆ รอบ pwm
การนับ postscaler จะถูกยกเลิกเมื่อเกิดเหตุการณ์ดังต่อไปนี้
- เขียนถึงรีจิสเตอร์ PTMR
- เขียนถึงรีจิสเตอร์ PTCON
- อุปกรณ์ใดๆ รีเซต
รีจิสเตอร์ PTMR จะไม่ถูกลบเมื่อเขียนรีจิสเตอร์ PTCON

PWM time base prescaler

สัญญาณนาฬิกาที่ PTMR (Tcy) มีตัวเลือก prescaler เป็น 1:1, 1:4, 1:16 และ 1:64 เลือกได้โดยการกำหนดบิต PTCKPS (บิต 1 ถึง 0) ภายในรีจิสเตอร์ PTCON การนับ prescaler จะถูกยกเลิกเมื่อเกิดเหตุการณ์ดังต่อไปนี้
- เขียนถึงรีจิสเตอร์ PTMR
- เขียนถึงรีจิสเตอร์ PTCON
- อุปกรณ์ใดๆ รีเซต
รีจิสเตอร์ PTMR จะไม่ถูกลบเมื่อเขียนรีจิสเตอร์ PTCON

UP/DOWN counting modes

สำหรับ continuous up/down counting modes ฐานเวลา PWM จะนับขึ้นจนกระทั่งค่าตรงกับรีจิสเตอร์ PTPER จากนั้นฐานเวลา PWM จะเริ่มนับลงที่ขอบของสัญญาณนาฬิกาขณะนั้นจนกระทั่งไปถึงค่า 0 บิต PTDIR (บิต 15) ของรีจิสเตอร์ PTMR เป็นบิตที่ใช้อ่านอย่างเดียวและเป็นตัวชี้ทิศทางการนับ โดยบิต PTDIR จะถูกเขียนเมื่อฐานเวลานับลง

PWM in single event mode

ใน single event mode ฐานเวลา pwm เริ่มนับขึ้นเมื่อบิต PTEN ถูกเขียน เมื่อค่าใน PTMR ตรงกับค่าใน PTPER ค่าที่อยู่ใน PTMR จะถูกรีเซตในขอบของสัญญาณนาฬิกาที่เข้าในตอนนั้น จะนั้นบิต PTEN จะถูกลบว่าโดยวงจรภายในเพื่อหยุดฐานเวลา

PWM in free running mode

ขณะ free running mode ตัวฐานเวลาจะนับขึ้นจนกระทั่งตรงกับค่าในรีจิสเจอร์ PTPER และจะเริ่มใหม่ตรงขอบของสัญญาณนาฬิกาที่เข้ามาและจะนับขึ้นวนไปเรื่อยๆ เท่าที่บิต PTEN ยังคงเซตอยู่