Mỗi port I/O có một thanh ghi dữ liệu, có thể được sửa đổi giá trị hiện thời khi chạy chương trình để thay đổi mức tín hiệu ra. Nếu GPxDAT.bit = 0 thì tín hiệu ra ở mức thấp và ngược lại sẽ ở mức cao.
4.3.2. Bộ qu n lý s ki n.
DSP TMS320F2812 có 2 khối quản lý sự kiện giống nhau (EVA và EVB), chúng có thể hoạt động độc lập. Các khối này bao gồm: bộđịnh thời đa dụng (GP Timer),
đơn vị so sánh tạo xung PWM, đơn vị đo độ rộng xung, bộđếm xung (QEP)… và
Quản lý các khối Bộ quản lý sự kiện A (EVA) Bộ quản lý sự kiện B (EVB) Các khối Chức năng Các khối Chức năng Bộđịnh thời chung GP Timer 1 GP Timer 2 T1PWM/T1CMP T2PWM/T2CMP GP Timer 3 GP Timer 4 T3PWM/T3CMP T4PWM/T4CMP Bộ so sánh So sánh 1 So sánh 2 So sánh 3 PWM1/2 PWM3/4 PWM5/6 So sánh 4 So sánh 5 So sánh 6 PWM7/8 PWM9/10 PWM11/12 Bộ lấy mẫu Lấy mẫu 1 Lấy mẫu 2 Lấy mẫu 3 CAP1 CAP2 CAP3 Lấy mẫu 4 Lấy mẫu 5 Lấy mẫu 6 CAP4 CAP5 CAP6 Bộđọc Encoder QEP1 QEP2 QEPI1 QEP1 QEP2 QEP3 QEP4 QEPI2 QEP3 QEP4
Bảng 4.1: Các chức năng của bộ quản lý sự kiện.
4.3.2.1. Bộ định th i chung General Purpose Timer – GP Timer.
Do bộ định thời được dùng cho nhiều mục đích nên được gọi là bộ định thời dùng chung (GP timer). Mỗi bộ quản lý sự kiện có 2 GP timer và hoạt động được thiết lập bởi các thanh ghi sau:
- Thanh ghi TxCNT: đặt giá trị bắt đầu của bộđếm. - Thanh ghi TxCMPR: cài đặt giá trịđể so sánh. - Thanh ghi TxPR: cài đặt chu kỳ cho bộđếm.
- Thanh ghi TxCON: chọn chếđộ hoạt động của Timer.
Bit 1: cho phép bộ so sánh hoạt động. Bit 4.5: chọn xung cấp cho GP Timer
00: chọn xung cao HSPCLK của DSP. 01: chọn nguồn cấp xung ở ngoài. Bit 6: cho phép Timerx hoạt động
Bit 11, 12 của thanh ghi quyết định chếđộđếm 00: có chức năng đếm lên.
01: có chức năng đếm lên, rồi đếm xuống. 10: có chức năng đếm xuống.
11: chức năngnày được chọn khi có dùng Encoder hồi tiếp tốc độ. - Thanh ghi GPTCONA/B: điều khiển hoạt động của bộ quản lý sự kiện.
Thanh ghi này dùng để tạo ra TxPWM nhưng ta không dùng chức năng này trong
luận văn nên Disable nó bằng cách set bit 6 = 0.
4.3.2.2. Điều rộng xung TxPWM.
Điều rộng xung là một phần cơ bản quan trọng trong vấn đề điều khiển các khóa
đóng ngắt của các bộđiều khiển công suất cũng như trong các thiết bị điều khiển số. Với sự hỗ trợ của bộ vi xử lý, việc tạo ra các xung có độ rộng phức tạp trở nên dễ
08 07 06 05 04 03 02 01 00
10 09
15 14 13 12 11
TPS0 T2SWT1 TENABLE TCLKS1 TCLKS0 TCLD1 TCLD0 TECMPR TSELT1PR TPS2 TPS1
FREE SOFT RESE TMODE1 TMODE2
15 14 13 12 11 10-09 08-07 06 05 04 03-02 01-00
dàng hơn. Nội dung được mô tảở đây cần thiết cho tính toán và điều khiển cho một
kênh PWM cơ sở.
-Tính chu kỳ, tần số cho bộđ m.
Tần sốđược điều khiển bằng cách gán giá trị cho thanh ghi TxPR như hình 4.9.
Với giá trị gán TxPR=4 cho các kiểu đếm lên, xuống, và lên xuống thì chu kỳ và tần sốcó được như hình sau. Độlớn của bậc thời gian tùy thuộc vào tần số của xung vào GP timer. Timer clock có thể là xung clock ngoài hoặc xung clock cao HSPCLK. Bộ đếm bắt đầu đếm khi bit 6 của thanh ghi TxCON được set lên mức 1.
Hình 4.5: Thanh ghi GP timer.
Từ hình 4.8 thì chu kỳ và tần số được tính như sau:
W 2 P M CLK T TxPR T (4.1) W W 1 P M P M f T (4.2) -Định d ng bộđ m.
Dạng sóng đếm của GP Timer có thể được điều khiển thông qua việc cài
đặt bit 11 – 12 cho thanh ghi TxCON để tạo ra trạng thái hoạt động của bộđếm. Bộ đếm tăng đến khi bằng giá trị được cài đặt trong thanh ghi TxPR thì tự động được
reset về 0 và tiếp tục chu kỳ tiếp theo.
-Cài đặt giá trị so sánh.
Mỗi GP Timer có một thanh ghi TxCMPR chứa giá trị so sánh và một chân tạo ra các xung TxPWM tương ứng. Thao tác so sánh được cho phép bởi bit 1 của thanh ghi TxCON. Giá trị bộ đếm liên tục so sánh với giá trị thanh ghi TxCMPR. Khi điều kiện bằng xảy ra thì tạo ra các sự kiện sau:
TxCON[6] Timer Clock
- Cờ ngắt so sánh được bật lên trong một chu kỳ xung clock.
- Nếu cài đặt bit 0 – 3 của thanh ghi GPTCONA/B thích hợp sẽ tạo xung ở các
chân TxPWM.
- Nếu cài đặt bit 7 –10 của thanh ghi GPTCONA/B thích hợp thì tín hiệu kích ADC được tạo cùng lúc với cờ ngắt so sánh được set.
-Ngắt GP Timer.
Việc ngắt là cần thiết khi ta muốn thay đổi trạng thái xung TxPWM. điều này thực hiện thông qua việc ngắt GP Timer, sau đó CPU rẽnhánh đến một chương trình con ISR để thực hiện việc cập nhật các giá trị hồi tiếp, xong tính toán theo giải thuật của người lập trình. Giá trị trả về sau cùng sẽđem lại sựthay đổi cho tín hiệu TxPWM.
Có 16 cờ ngắt cho 4 GP Timer nằm trong các thanh ghi EVAIFRA, EVAIFRB, EVBIFRA, và EVBIFRB. Mỗi GP Timer có thể tạo ra 4 sự kiện ngắt như sau:
- Tràn trên: TxOFINT. - Tràn dưới: TxUFINT.
- Ngắt so sánh: TxCINT.
- Ngắt chu kỳ: TxPINT.
Sự kiện so sánh xảy ra khi giá trị bộ đếm bằng với giá trị trong thanh ghi so sánh. Cờ ngắt so sánh tương ứng sẽ được set một chu kỳ xung clock nếu hoạt động
so sánh được cho phép.
Sự kiện tràn trên và tràn dưới khi mà giá trị bộ đếm tiến đến FFFFh và 0000h.
Tương tự, sự kiện ngắt chu kỳ xảy ra khi giá trị bộđếm bằng với giá trị trong thanh ghi chu kỳ. Cờ ngắt cho các sự kiện này bật một chu kỳ sau mỗi sự kiện xuất hiện. Chú ý rằng việc định nghĩa tràn trên và tràn dưới ở đây khác với định nghĩa thông thường.
GP Timer là thuộc khối quản lý sự kiện, mà các ngắt khối quản lý sự kiện được tổ chức vào trong 3 nhóm: A, B, C. Mỗi nhóm liên kết với một thanh ghi cờ và thanh ghi cho phép ngắt khác nhau.
Có một thanh ghi cờ ngắt và thanh ghi mặt nạ ngắt tương ứng cho mỗi nhóm trong khối sự kiện. Có nghĩa là một cờ ngắt EVAIFRx (x = A, B, C) sẽ bị che lại (tức
không tạo ra yêu cầu ngắt) nếu bit tương ứng trong thanh ghi mặt nạ của nó EVAIMRx là bằng 0. Vậy, muốn gửi yêu cầu ngắt đến bộ điều khiển PIE thì phải set
bit tương ứng trong EVAIMRx lên 1.
Thanh ghi EVAIFRA, địa chỉ @0x742F:
Thanh ghi EVAIFRB, địa chỉ @0x7430:
Thanh ghi EVAIFRA, địa chỉ @0x7431:
4.3.2.3. Bộ điều rộng xung PWM.
Tương tự với khối tạo xung TxPWM, thì 6 xung PWM cũng có nguyên tắc hoạt
động, cách thiết lập kiểu sóng tam giác, chu kỳ đếm và tần số của sóng tam giác… đều được thiết lập tương tự. Tuy nhiên mỗi bộ quản lý sự kiện chỉ có 1 GP timer
được dùng, GP timer 1 (EVA), GP timer 2 (EVB).
Một điểm khác biệt nữa so với khối tạo xung TxPWM, bộ tạo xung này đồng thời so sánh giá trị của sóng tam giác với 3 giá trị so sánh khác. Kết quả so sánh của một giá trị so sánh với sóng tam giác xuất ra một cặp xung. Ta có thể lựa chọn mức tích cực cho từng xung của một cặp nhờ vào thanh ghi ACTRA và thiết lập thời gian chết (dead time) cho tín hiệu xuất ra từ thanh ghi DBTCONA.
Hình 4.6: Cách tạo xung PWM. 08 09 10 15 14 13 12 11 07 06 05 04 03 02 01 00 - - -
- - - - - - - - - - CAP3INT CAP2INT CAP1INT T T1CINT
T1UFINT T1OFINT
T1PINT CMP3INT CMP2INT CMP1INT PDPINT
08 09
10
15 14 13 12 11 07 06 05 04 03 02 01 00
T2OFINT T2UFINT T2CINT T2PINT
08 09 10 15 14 13 12 11 07 06 05 04 03 02 01 00 TPWM Period Compare Counter TPWM/TCMP Interrupts
Ngoài việc thiết lập các thanh ghi tạo sóng tam giác như khối TxPWM ta cần phải thiết lập thêm một số thanh ghi khi sử dụng chếđộ này chỉxét EVA (EVB tương tự):
- Thanh ghi CMPR1, CMPR2, CMPR3: chứa 3 giá trị so sánh.
- Thanh ghi COMCONA: điều khiển chế độ hoạt động của bộ so sánh.
Bit 15 sẽ cho phép CMPR1, CMPR2, CMPR3 so sánh với Timer1.
- Thanh ghi ACTRA: chọn mức tích cực cho xung PWM.
Kết quả khi so sánh của 3 thanh ghi CMPR với timer sẽ cho ra các xung
PWMx, xung này ta phải chọn mức tích cực. Việc set mức tích cực dựa vào 2 bit
CMPxACT 1-0, và PWMx ở mức thấp nếu được set CMPxACT 1 –0 = 01, PWMx ở mức cao nếu CMPxACT 1 – 0 = 10.
- Thanh ghi DBTCONA thiết lập thời gian chết cho các cặp xung.
Hình 4. 7: Dead time của 2 xung.
Và Dead time được tính như công thức (4.3) sau:
Dead time = DB period * DB prescaler * CPUCLK period (4.3) Trong đó:
DB period: được tính từ việc thiết lập 4 bit DBTCONA 8 – 11, DB prescaler: được tính từ việc thiết lập 2 bit DBTCONA 3 – 4, CPUCLK period: tần số cấp cho Dead time, nó phụ thuộc vào HSPCLK và CPUCLK period = 1/HSPCLK.
CENABLE CLD1 CLD0 SVENABLE ACTRLD1 ACTRLD0 FCOMPOE PDPINTA RESE RESE RESE RESE RESE RESE RESE RESE
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
SVRDIR D2 D1 D0 CMP6ACT1 CMP6ACT0 CMP5ACT1 CMP5ACT0 CMP4ACT1 CMP4ACT0 CMP3ACT0-1 CMP2ACT0-1 CMP1ACT0-1
15 14 13 12 11 10 09 08 07 06 05-04 03-02 01-00 Clock PHx DT DTPHx DTPHx Dead time
RESE RESE RESE RESE DBT3 DBT2 DBT1 DBT0 EDBT3 EDBT2 EDBT1 EDBT0 DBTPS1 DBTPS1 RESE RESE
4.3.2.4. Đ m xung encoder – QEP.
Mỗi khối quản lý sự kiện có một bộ nhận xung encoder. Khi được cho phép, nó sẽ
giải mã và đếm tín hiệu xung mã hóa vào trên chân CAP1/QEP1 và CAP2/QEP2 (thuộc khối EVA) hoặc CAP4/QEP3 và CAP5/QEP4 (thuộc khối EVB).
Theo hình 4.13 thì có 2 tín hiệu cùng vào là CAP/QEP nên phải có thanh ghi lựa chọn xung đi vào, nó phụ thuộc vào bit 13 – 14 của thanh CAPCONA
Nếu 00: vô hiệu hóa chức năng CAP/QEP.
Nếu 01: chọn chức năng CAP.
Nếu 11: chọn chức năng QEP. -Bộđ m cơ b n.
Bộđếm cơ bản cho QEP được cung cấp bởi GP Timer 2 (GP Timer 4 cho EVB). GP Timer phải được cài đặt ở chếđộ đếm lên/xuống có hướng với nguồn xung clock là mạch QEP.
Hình 4.8: Sơ đồ khối của bộ QEP.
-Gi i mã hướng.
Vị trí góc và vận tốc của motor có thể được xác định bằng bộđếm xung và tần số xung. Còn xác định hướng thì thường phải giải mã cho tuần tự 2 xung có tần số thay đổi nhưng độ lệch pha không đổi bằng ¼ chu kỳ (900).
RESE CAP3EDGE CAP2EDGE CAP1EDGE CAP3TOADC CAP12TSEL CAP3TSEL CAP3EN RESE CAPQEPN CAPRES 01-00 03-02 05-04 07-06 08 09 10 12 11 13-14 15
Mức logic xác định hướng cho QEP trong khối EV được quy ước theo thứ tự xung vào đầu tiên. Bộđếm sẽ đếm lên nếu tín hiệu từchân QEP1 vào đầu tiên, hoặc
đếm xuống nếu QEP2 là tín hiệu vào đầu tiên. Đây là xét cho khối sự kiện EVA, đối với EVB thì tương tự.
Hình 4.9: Giải mã encoder.
Mạch QEP đếm cả 2 cạnh lên và xuống của mỗi xung QEP nên tín hiệu xung
clock bằng 4 lần tần số mỗi kênh. -Cài đặt QEP.
Để khởi động QEP trong khối EVA cần phải thực hiện các bước sau:
- Thiết lập giá trị mong muốn cho các thanh ghi trị đếm ban đầu, chu kỳ, trị so
sánh.
- Quan trọng đó là thiết lập chế độ đếm lên/xuống có hướng trong thanh ghi T2CON với nguồn xung clock từ mạch QEP, và cho phép timer này được chọn.
4.3.2.5. Bộ chuyển đ i tín hi u tương t sang số - ADC.
Module ADC có tất cả 16 kênh: 8 kênh cho sự kiện A (SEQ1) và 8 kênh cho sự kiện B (SEQ2). Chúng có thể hoạt động độc lập (Cascaded mode) hoặc phối hợp (Dual mode) để tạo module 16 kênh. Tất cả đều được đưa vào cùng 1 bộ chuyển đổi ADC. Kết quả chuyển đổi được lưu trong thanh ghi ADCRESULT tương ứng.
ADC có 3 thanh ghi điều khiển là ADCTRL1 – 3:
- Thanh ghi DACTRL1 có chức năng lựa chọn chếđộ vận hành cho ADC, dựa vào bit 4.
Nếu bit 4 = 0 thì ADC vận hành với chếđộ Dual. QEP_A QEP_CLK QEP_B RESE
RESE RESET SUSMOD1 SUSMOD0 ACQ_PS3-2 ACQ_PS1-0 CPS CONT_RUN SEQ1_OVRD SEQ_CASC RESE
03-02
Nếu bit 4 = 1 thì ADC vận hành với chếđộ Cascaded.
- Thanh ghi DACTRL2 có chức năng lựa chọn bộ sắp xếp, trong đó 8 bit cao dùng để thiết lặp cấu hình cho SEQ1 và 8 bit thấp sẽ cho SEQ2. Chú ý: việc lựa chọn chỉcó ý nghĩa khi ADC được chọn ở chếđộ Dual.
- Thanh ghi DACTRL3 có chức năng lựa chọn nguồn xung cấp cho ADC, dựa vào bit 1 – 4 và chức thực hiện chuyển đổi nhờ vào bit 0
Nếu bit 0 = 0 thì ADC thực hiện chuyển đổi lần lược từng tín hiệu. Nếu bit 0 = 1 thì ADC thực hiện chuyển đổi cùng lúc.
Hình 4.10: Sơ đồ khối của bộ ADC.
Đặc điểm của bộ chuyển đổi ADC như sau:
- Nhân ADC 12 bit để mã hóa mẫu analog.
- Có khả năng lấy mẫu đồng thời hay liên tiếp nhờ bộ sắp thứ tự (Auto sequencer).
- Tần số xung clock hoạt động tối đa 25MHz.
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
EVB_SOC
_SEQ RST_SEQ1 SOC_SEQ1 RESE INT_EVA _SEQ1 INT_MOD _SEQ1 RESE EVA_SOC _SEQ1 EXT_SOC _SEQ1 _SEQ2 RST _SEQ2 SOC RESE INT_EVA _SEQ2 INT_MOD _SEQ2 RESE EVA_SOC _SEQ2
15-08 07 06 05 04 03 02 01 00
Hình 4.11: Nguồn xung cấp cho bộ ADC.
- Có 16 kênh nhận tín hiệu Analog vào từ0V → 3V. và có 16 thanh ghi đểlưu
trữ kết quả chuyển đổi cho 16 kênh, và được tính như sau:
Digital Value = 0 khi Input = 0V
Input Analog Voltage - ADCL0
Digital Value = 4096 khi 0 < Input < 3V 3
Digital Value = 4095 khi Input > 3V
Nguồn kích để bắt đầu chuyển đổi (SOC) xếp theo thứ tự ưu tiên: S/W kích
bằng phần mềm, EVA, EVB, Chân kích bên ngoài (theo hình 4.15).
Khi kết thúc chuyển đổi thì cờ ngắt được bật lên khi ta set bit 10 của thanh ghi ADCTRL2.
Nguyên lý ho t động chuyển đ i.
Có 4 thanh ghi đưa tín hiệu ADC vào để chuyển đổi ADC Input Channel Select
Sequencing Control Register ADCCHSELSEQ 1-4, mỗi thanh ghi quản lý 4 CONV, có 16 CONV từ 00-15.(16 CONV chính là 16 chân ADC từ ngoài vào, và được sắp xếp vào 16 CHSEL từ 00-15 trong bộ SEQ).
ADCCHSELSEQ1 ADCCHSELSEQ2 ADCCHSELSEQ3 ADCCHSELSEQ4 CONV03 CONV02 CONV01 CONV00
CONV07 CONV06 CONV05 CONV04 CONV11 CONV10 CONV09 CONV08 CONV15 CONV14 CONV13 CONV12
Số lượng chuyển đổi các tín hiệu ADC dựa vào thanh ghi Maximum Conversion Channel Register ADCMAXCONV, đối với chế độ Dual ta dùng cả 7 bit, đối với chế độ Cascade ta chỉ dùng 4 bit cuối, 4 bit này đi từ 0000 -1111 sẽ thực hiện chuyển đổi được 16 chân ADC vào của DSP trong 1 chu kỳ.
Việc chuyển đổi được thực thi khi bit 6 của thanh ghi ADCTRL1 (Continuous