IV. NGÀY HOÀN THÀNH NHIỆM VỤ :
2.1.3.7.5 Thanh ghi cho phép điện trở kéo
Mối bít của thanh ghi PxREN cho phép hoặc không cho phép điện trở kéo: Bit = 1 điện trỏ kéo lên.
Bit = 0 điện trở kéo xuốNg.
2.1.3.7.6 Thanh ghi lựa chọn chức năng PxSEL và PxSEL2:
Các chân của mỗi port đều có nhiều chức năng tương ứng với các module ngoại vi khác nhau. Mỗi bít của thanh ghi PxSEL và PxSEL2 được sử dụng để
PxSEL2 PXSEL Chức năng của chân
0 0 Chức năng xuất nhập
0 1 Module đầu tiên được lựa chọn
1 0 Đăng ký trước
1 1 Module ngoại vi thứ 2 được lựa chọn
Chú ý: Khi PxSEL =1 các ngắt của P1, P2 bị cấm. Khi bất kỳ bit nào của thanh ghi P1SELx hoặc P2SELx được set, các ngắt tương ứng với các chân này sẽ bị cấm.
2.1.3.7.7 Các ngắt P1 và P2:
Mỗi chân của port P1 và P2 đều có khả năng ngắt. Các ngắt được cấu hình bởi các thanh ghi PxIFG, PxIE VÀ PxIES. Tất cả các chân của port P1 một nguyên nhân tương ứng với một vector ngắt. Tất cả các chân của port 2 có nhiều hơn một nguyên nhân khác nhau tương ứng với 1 vector. Có thể sử dụng thanh ghi PxIFG để xác định nguyên nhân các ngắt port P1 và P2.
a) Thanh ghi cờ ngắt P1IFG và P2IFG:
- Mỗi bit của thanh ghi PxIFGx là một cờ ngắt tương ứng với chân xuất/ nhập và khi có cạnh xung tín hiệu tại các chân. Tất cả các cờ ngắt của thanh ghi PxIFGx đòi hỏi một ngắt tương ứng với các bit PxIE và GIE được set. Mỗi cờ ngắt đòi hỏi phải reset bằng phần mềm. Phần mềm cũng có thể set cờ ngắt:
+ Bit =0 Không có ngắt nào đang chờ. + Bit =1 Có 1 ngắt đang chờ được phục vụ.
Chú ý: Khi thay đổi thanh ghi PxOUT và PxDIP có nghĩa là bạn đang set cờ ngắt tương ứng.
b) Thanh ghi lựa chọn ngắt theo sườn xung P1IES, P2IES:
- Mỗi bit của thanh ghi PxIES lựa chọn ngắt theo cạnh lên hay cạnh xuống tương ứng với mỗi chân xuất/ nhập:
+ Bit = 0 Cờ ngắt được set khi có cạnh lên của xung. + Bit = 1 Cò ngắt được set khi có cạnh xuống của xung. c) Thanh ghi cho phép ngắt P1IE và P2IE:
- Mỗi bít PxIE cho phép hay cấm ngắt và liên quan đến cờ ngắt tương ứng:
+ Bit = 0: Cấm ngắt. + Bit = 1: Cho phép ngắt.
2.1.3.7.8 Địa chỉ các thanh ghi xuất/nhập số:
MSP 430 được cấu hình để làm việc với BYTE, điều này sẽ gây khó khăn cho người lập quen làm việc với BIT. Để có thể làm việc với BIT ta phải định nghĩa lại địa chỉ của thanh ghi điều khiển PORT.
Bảng 3: Địa chỉ thanh ghi xuất nhập
2.1.4 Bộ định thời:
MSP 340 có hai bộ định thời 16 Bit là Timer_A và Timer_B nó cũng đồng thời đóng vai trò là bộ đếm.
2.1.4.1 Timer_A:
2.1.4.1.1 Đặc tính của Timer_A:
Là một bộ Timer/Counter 16 bit. Với ba thanh ghi lưu trữ và 3 thanh ghi so sánh. Là một Timer đa chức năng. Đếm thời gian, so sánh, PWM . Timer_A cũng có khả năng ngắt khi counter đếm tràn hoặc mỗi thanh ghi đếm tràn. Các đặc tính chính của Timer_A bao gồm:
+ Là một Timer/counter 16 Bit không đồng bộ với 4 chế độ hoạt động. + Có thể lựa chọn và cấu hình nguồn xung
+ Hai tới 3 thanh ghi có thể cấu hình capture/compare + Cấu hình đầu ra với chế độ PWM
Hình 9: Sơ đồ khối của Timer_A
2.1.4.1.2 Timer hoạt động ở chế độ Counter 16 Bit:
Ở chế độ Counter giá trị thanh ghi TAR tăng hoặc giảm theo cạnh lên của xung clock (tùy thuộc vào chế độ hoạt động). Giá trị của thanh ghi TAR có thể được ghi hoặc đọc bởi phần mềm. Nó có khả năng tạo ra một ngắt khi đếm tràn.
Thanh ghi TAR có thể bị xóa khi set bit TACLR. Việc set bit TACLR đồng thời cũng xóa giá trị lựa chọn cho bộ chia xung hoặc chế độ đếm lên hay đếm xuống.
2.1.4.1.3 Lựa chọn nguồn xung và bộ chia xung:
Timer có thể lựa chọn nguồn từ xung từ ACLK, SMCLK hoặc sử dụng nguồn xung ngoài thông qua TACLK hoặc INCLK. Nguồn xung được lựa chọn nhờ bít TASSELx. Các nguồn xung được chọn có thể đã được chia 2, 4 hoặc 8. Bộ chia xung được reset khi set bit TACLR.
2.1.4.1.4 Kích hoạt Timer:
+ Timer đếm khi MCx > 0 và nguồn xung đã được kích hoạt.
+ Khi timer đang hoạt động ở chế độ đếm lên hoặc đếm xuống. Có thể dừng timer bằng cách ghi TACCR0 = 0. Timer sẽ kích hoạt trở lại khi giá trị ghi vào TACCR0 khác 0. Giá trị đếm lên sẽ bắt đầu từ 0.
2.1.4.1.5 Các chế độ hoạt động của Timer:
Timer hoạt động ở 4 chế độ: Chế độ dừng, chế độ đếm lên, chế độ tiếp tục, chế độ đếm lên/xuống. Các chế độ này được lựa chọn bằng bit MCx.
MCx Mode Hoạt động
00 Stop Timer được tạm dừng
01 Up Timer đếm từ 0 tới giá trị đỉnh của TACCR0 10 Continuous Timer đếm từ 0 tới 0FFFFh
11 Up/down Timer đếm từ 0 đến giá trị đỉnh của TACCR0 rồi đếm về 0
2.1.4.1.6 Các ngắt của Timer_A:
Có hai ngắt được tạo ra do Timer_A:
+ Vector ngắt TACCR0 cho TRCCR0 CCIFG.
+ Vector ngắt TAIV cho tất cả các cờ ngắt CCIFG khác và TAIFG.
Trong chế độ lưu trữ CCIFG được set khi giá trị của timer được lưu trữ do thanh ghi TACCRx. Trong chế độ so sánh bất kỳ cờ CCIFG được set nếu TAR đếm tới giá trị TACCRx. Có thể sử dụng phần mềm để set hoặc xóa bất kỳ cờ ngắt CCIFG nào. Tất cả các cờ ngắt CCIFG yêu cầu một ngắt khi bit CCIE và GIE được set.
Ngắt TACCR0 CCIFG là ngắt của Timer_A có mức ưu tiên cao nhất. Cờ ngắt TACCR0 CCIFG tự động reset khi ngắt TACCR0 được phục vụ.
Hình 10: Cờ ngắt chế độ trong chế độ so sánh và lưu trữ
Bảng 4: Bảng liệt kê các thanh ghi điều khiển Timer_A
Thanh ghi điều khiển TACTL:
+ Bit 15-10: Không sử dụng.
+ TASSELx Bit 9-8: Lựa chọn nguồn xung clock: 00 TACLK
01 ACLK 10 SMCLK 11 INCLK
+ Idx Bit 7-6: Lựa chọn bộ chia trước: 00 /1
01 /210 /4 10 /4 11 /8
+ MCx Bit 5-4: Lựa chọn chế độ hoạt động: 0 Dừng chế độ
1 Chế độ lên 10 Tiếp tục chế độ 11 Chế độ lên/xuống
+ TACLR Bit 2: Xóa Timer_A. Khi bit này được set, giá trị đếm, giá trị bộ chia trước đều được reset.
+ TAIE Bit 1: Cho phép ngắt. Khi bit =1 cho phép ngắt, bit = 0 cấm ngắt. + TAIFG Bit 0: Cờ ngắt của Timer_A:
Bit = 0 Không có ngắt nào đang chờ Bit = 1 Có ngắt đang chờ phục vụ
Các thanh ghi còn lại các bạn có thể tham khảo trong datasheet.
2.1.4.2 Timer_B:
Timer_B là bộ định thời 16 bít có thể hoạt động ở 2 chế độ Timer và counter. Timer_B đáp ứng đa chức năng capture/ so sánh, PWM. Timer_B cũng có khả năng tạo ra ngắt khi nó đếm tràn, hoặc các thanh ghi capture/ so sánh.
2.1.4.2.1 Các đặc tính của Timer_B:
+ Là một Timer/counter 16 Bit không đồng bộ với 4 chế độ hoạt động. + Có thể lựa chọn và cấu hình nguồn xung.
+ Có từ 3 tới 7 thanh ghi có thể cấu hình capture/compare. + Cấu hình đầu ra với chế độ PWM.
2.1.4.2.2 Những điểm giống và khác nhau giữu Timer_A và Timer_B:
Timer_B mang đầy đủ đặc điểm của Timer_A ngoài ra Timer_B có các đặc tính đặc biệt sau:
+ Kích thước của Timer có thể lập trình được có độ dài 8, 10, 12 hoặc 16 Bit.
+ Thanh ghi TBCCRx là 2 bộ đệm có thể được nhóm lại.
+ Tất cả các đầu ra của Timer_B đều có thể đặt ở trạng thái tổng trở cao. + Chức năng của bit SCCI không được thực hiện trong Timer_B.
2.1.4.2.3 Hoạt động của Timer_B:
Timer hoạt động ở chế độ Counter: Khi hoạt động ở chế độ đếm giá trị thanh ghi TBR tăng hoặc giảm (tùy thuộc vào chế độ hoạt động) theo cạnh lên của xung clock. Thanh ghi TBR có thể ghi hoặc đọc. Timer_B có thể tạo ra ngắt khi đếm tràn.
Thanh ghi TBR cũng có thể được xóa bằng cách set bit TBCLR. Khi bít này được set đồng thời cũng reset lại giá trị của bộ chia và giá trị đếm.
Chú ý: Bạn nên dừng hoạt động của Timer trước khi muốn chỉnh sửa. Những thay đổi ghi vào TRB sẽ được thực thi ngay lập tức vì vậy nếu thay đổi giá trị khi timer đang hoạt động có thể hoạt động của nó không còn chính xác. Có thể đọc giá trị của Timer khi nó đang hoạt động.
Độ dài thanh ghi TBR:Xung cấp cho Timer có thể lấy từ nguồn xung ACLK hoặc SMCLK hoặc từ nguồn xung ngoài TBCLK. Nguồn xung được lựa chọn nhờ bit TBSSELx, nguồn xung được lựa chọn có thể đã được chi trước 2, 4, hoặc 8. Giá trị của bộ chia bị reset khi set bit TBCLR.
2.1.4.2.4 Kích hoạt timer:
Timer có thể được khởi động hoặc khởi động lại bằng các cách sau: + Timer đếm khi MCx >0 và nguồn xung clock hoạt động.
+ Khi timer hoạt động ở một trong hai chế độ up, up/down. Có thể dừng hoạt động của timer bằng cách đặt TBCL0=0. Timer được kích hoạt trở lại khi giá trị này khác 0. Khi kích hoạt trở lại giá trị của timer bắt đầu từ 0.
2.1.4.2.5 Các chế độ hoạt động của Timer:
Timer_B hoạt động ở 4 chế độ, các chế được lựa chọn nhờ bit MCx. MCx Mode Hoạt động
00 Stop Tạm dừng Timer
01 Up Timer đếm từ 0 tới giá trị đỉnh của TBCL0 10 Continuous Timer đếm từ 0 tới giá trị được lựa chọn bởi bít
CNTLx
11 Up/down Timer đếm từ 0 đến giá trị đỉnh của TBCL0 rồi đếm xuống về 0
2.1.4.2.6 Các ngắt của Timer_B:
Timer_B có thể tạo ra 2 ngắt:
Vector ngắt TBCCR0:Vector ngắt TBCCR0 là ngắt có mức độ ưu tiên cao nhất do Timer_B tạo ra. Cờ ngắt TBCCR0 CCIFG tự động reset khi ngắt TBCCR0 được phục vụ.
Hình 12: Cờ ngắt TBCCR0
2.1.4.2.7 Các thanh ghi của Timer_B:
Thanh ghi điều khiển TBCTL: + Bit 15: không sử dụng
+ CNTLx Bit 12-11: Độ dài của bộ đếm: 0 16-bit,TBR(max) = 0FFFFh 1 12-bit,TBR(max) = 0FFFh 10 10-bit,TBR(max) = 03FFh 11 8-bit,TBR(max) = 0FFh
+ TBSSELx bit 9-8: Lựa chọn nguồn xung clock: 00 TBCLK
01 ACLK 10 SMCLK 11 Đảo TBCLK
+ IDx Bit 7-6: lựa chọn bộ chia xung: 00 /1
01 /2 10 /4 11 /8
+ MCx Bit 5-4: Lựa chọn chế độ điều khiển: 00 Dừng chế độ
01 Chế độ lên 10 Tiếp tục chế độ 11 Chế độ lên/xuống
+ TBCLR : Xóa Timer_B Khi bit này được set, giá trị bộ đếm, bộ chia xung đều được xóa về 0.
+ TBIE Bit 1: Cho phép ngắt Timer_B. Bit =1 cho phép ngắt, bit = 0 cấm ngắt.
+ TBIFG Bit 0: Cờ ngắt. Bit = 0 không có ngắt nào chờ, bit = 1 có ngắt đang chờ phục vụ. Khi ngắt đã được phục vụ Bit tự động được xóa về 0.
2.1.5 Bộ khuếch đại thuật toán OA:
MSP 430 có 2 bộ khuếch đại thuật toán với nhiều kênh khác nhau. Đặc tính của các bộ khuếch đại thuật toán:
+ Nguồn đơn, hoạt động ở chế độ dòng thấp. + Có thể lựa chọn cấu hình bằng phần mềm.
Hình 13: Sơ đồ khối của OA
2.1.6 Các kênh chuyển đổi ADC:
MSP 430 có 2 kênh chuyển đổi ADC 10 bit, ADC10 và ADC12.
2.1.6.1 Kênh chuyển đổi ADC10:
Các đặc tính của kênh chuyển đổi ADC10:
+ Tốc độ chuyển đổi lớn nhất lớn hơn 200ksps. + Bộ chuyển đổi 10 bit đơn không bị lỗi mã.
+ Lấy mẫu và chốt với thời gian lấy mẫu được lập trình.
+ Quá trình chuyển đổi được khởi tạo bằng phần mềm hoặc Timer_A.
+ Có thể sử dụng phần mềm để lựa chọn điện áp tham chiếu (1.5V hoặc 2.5V).
+ Có 8 kênh đầu vào tương tự, riêng với MSP 340x22xx có tới 12 kênh đầu vào tương tự.
+ Các kênh chuyển đổi cho cảm biến nhiệt độ bên trong, Vcc, và điện áp tham chiếu ngoài.
+ Lựa chọn nguồn xung clock.
+ Tự động điều khiển quá trình huyển đổi dữ liệu và lưu kết quả chuyển đổi .
Hình 14: Sơ đồ khối của ADC10
2.1.6.1.1 Hoạt động của bộ chuyển đổi ADC10:
Kênh ADC10 chuyển đổi một tín hiệu tương tự sang tín hiệu số có độ dài 10 bit, kết quả chuyển đổi được lưu vào thanh ghi ADC10MEM. Sử dụng điện áp tham chiếu VR+ và VR- để xác định giới hạn trên và giới hạn dưới của bộ chuyển đổi. Kết quả chuyển đổi số có giá trị NADC = 03FFh khi đó Vinput > = VR+ (khi đầy) hoặc NADC = 0 khi Vinput< = VR-. Kết quả chuyển đổi được tính bằng công thức như sau:
Bộ chuyển đổi ADC10 được điều khiển bởi 2 thanh ghi ADC10CTL0 và ADC10CTL1. ADC10ON là bit cho phép chuyển đổi. Khi bạn muốn thay đổi
các giá trị điều khiển chuyển đổi bạn phải đặt ENC = 0. Khi điều chỉnh xong lưu ý set bit ENC = 1 để quá trình chuyển đổi bắt đầu.
2.1.6.1.2 Lựa chọn nguồn xung clock ADC10CLK:
Để lựa chọn nguồn xung điều khiển ta sử dụng bit ADC10SSELx. Có thể sử dụng bộ chia trước bắng bit ADC10DIVx. ADC10CLK có thể lấy xung từ các nguồn SMCLK, MCLK, ACLK hoặc sử dụng bội xung nội ADC10OSC phục vụ riêng cho nó.
Tần số chuyển đổi có thể lên tới 5-MHz, nhung giá trị này cũng tùy thuộc vào nguồn cấp, nhiệt độ và thay đổi do lập trình. Phải luôn cấp xung clock trong quá trình chuyển đổi, nếu ngắt nguồn xung bộ chuyển đổi không hoạt động hoặc kết quả chuyển đổi không chính xác.
Hình 15: Bộ đa hợp ngõ vào ADC10
Kênh chuyển đổi ADC10 có tất cả 12 ngõ vào tương tự, 8 ngõ vào tương tự ngoài và 4 ngõ vào nội, các ngõ vào được lựa chọn chuyển đổi bằng bộ đa hợp.
2.1.6.1.3 Lựa chọn kênh tương tự:
Các ngõ vào tương tự Ax, VeREF+, and VREF− + động thời cũng là các chân xuất/nhập. Các chân này là dạng cổng CMOS, khi được lựa chọn làm ngõ vào chuyển đổi có thể tạo ra dòng điện ký sinh có giá trị rất nhỏ từ Vcc về GND. Có thể cấm khuếch đại dòng ký sinh này bằng cách sử dụng bit ADC10Aex.
2.1.6.1.4 Điện áp tham chiếu:
Ta có thể lựa chọn điện áp tham chiếu nội bằng cách set bit REFON = 1, khi REFON = 0 lựa chọn điện áp tham chiếu ngoài VRFE+. Bit RFE2_5V lựa chọn giá trị điện áp tham chiếu nội. Khi REF2_5V = 1điện áp tham chiếu nội là 2.5 V. Khi REF2_5V = 0 điện áp tham chiếu nội là 1.5 V.
2.1.6.1.5 Đặc tính công suất thấp của điện áp tham chiếu nội:
Mọi thiết kế của MSP 430 đếu hướng tới tiêu chí tiết kiệm năng lượng. Kênh ADC10 tự chuyển sang chế độ tiết kiệm năng lượng khi điện áp tương tự ngõ vào không đổi, nó kích hoạt trở lại khi cần thiết. Khi không có nguồn xung clock dòng chuyển đổi bằng 0.
2.1.6.1.6 Thời gian lấy mẫu và chuyển đổi:
Bit SHTx được sử dụng để lựa chọn thời gian lấy mẫu, thời gian lấy mẫu có thể là 4, 8, 16 hoặc 64 chu kỳ xung, thời gian chuyển đổi là 13 chu kỳ xung.
Hình 16: Thời gian lấy mẫu
2.1.6.1.7 Tính toán thời gian lấy mẫu:
Khi SAMPCON = 0 tất cả các ngõ vào tương tự Ax đều ở trạng thái tổng trở cao. Khi SAMPCON = 1 tín hiệu tương tự ngõ vào được đưa qua một mạch lọc thông thấp RC. Sơ đồ tương đương như sau:
Nội trở của nguồn Rs và Ri ảnh hưởng đến thời gian lấy mẫu. Thời gian lấy mẫu tối thiểu có thể được tính theo phương trình sau đây:
Nếu Rs = 10kΩ thì thời gian lấy mẫu lớn hơn 2.47 µs.