Tải bản đầy đủ (.pdf) (72 trang)

TÌM HIỂU và ỨNG DỤNG của VI điều KHIỂN DSPIC33FJ12MC202

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.52 MB, 72 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
*****

BÁO CÁO ĐỒ ÁN 2
TÌM HIỂU VÀ ỨNG DỤNG CỦA VI ĐIỀU KHIỂN
DSPIC33FJ12MC202

Nhóm sinh viên thực hiện:
1. Trần Quang Thái MSSV: 20153360
2. Mông Văn Sắp

MSSV: 20153163

Giảng viên hướng dẫn: TS. Vũ Vân Hà

Hà Nội, tháng 12, năm 2018


Mục lục
LỜI MỞ ĐẦU.........................................................................................................3
Phần I: TỔNG QUAN ĐỀ TÀI...............................................................................5
1.

Lý do chọn đề tài:..............................................................................5

2.

Mục đích:..........................................................................................5

3.



Đối tượng nghiên cứu:.......................................................................5

4.

Phạm vi nghiên cứu:..........................................................................6

Phần 2: NỘI DUNG................................................................................................7
Chương 1: Tổng quan về Họ vđk dsPic33 và vđk
DsPic33FJ12MC202............................................................................7
1. Họ VĐK DsPic.............................................................................................7
2 Trình dịch......................................................................................................7
3. DsPic33FJ12MC202.....................................................................................8
Chương 2: DsPic33FJ12MC202 và các module cơ bản.....................11
1. Cấu hình thạch anh.....................................................................................11
2. Các cổng vào ra I/O....................................................................................13
3. Ngắt ngoài.................................................................................................15
4. Bộ đếm, bộ định thời..................................................................................16
4.1 Bộ định thời/bộ đếm (Timer/Counter) là gì...........................................16
4.2 Bộ định thời/bộ đếm trong dspic33fj12mc202......................................17
5. OutputCompare..........................................................................................25
5.1 Đặc điểm chung.....................................................................................25
5.2 Các thanh ghi liên quan.........................................................................27
5.3

Trạng thái chân đầu ra.....................................................................29

5.4 Cụ thể về chế độ thường sử dụng PWM mode (OCM =110)................29
6. UART, SPI, I2C.........................................................................................32
6.1 UART....................................................................................................32

6.2 SPI.........................................................................................................35
6.3 I2C.........................................................................................................38
7. ADC...........................................................................................................40


7.1 Đặc điểm chung.....................................................................................41
7.2 Các thanh ghi liên quan.........................................................................42
Chương 3: Ứng dụng lập trình và mơ phỏng với các ngoại vi...........48
1. Mở rộng ngõ ra với 74HC595.....................................................................48
2. Giao tiếp với bàn phím ma trận..................................................................50
2.1 Kỹ thuật quét phím................................................................................50
2.2 Kỹ thuật đảo dây...................................................................................52
3. Giao tiếp led 7 đoạn....................................................................................54
4. Giao tiếp Lcd 16x2 qua PCF8574...............................................................58
5. Giao tiếp EEPROM25LC256 qua SPI........................................................61
6. Giao tiếp với led Matrix..............................................................................66
Phần 3: KẾT LUẬN..............................................................................................70


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

LỜI MỞ ĐẦU
Ngày nay đại đa số các lĩnh vực sản xuất, điều khiển, giám sát, đo lường…
đều được trang bị hệ thống tự động hóa. Một trong số vi mạch được sử dụng đó là kỹ
thuật vi điều khiển. Nhờ tính năng ưu việt của bộ vi điều khiển như: khả năng lập
trình phù hợp với thiết kế nhỏ và lớn cũ như giao tiếp với các thiết bị ngoại vi và máy
tính đã đem lại sự hồn hảo, độ chính xác và tính mềm dẻo cao thơng qua giao tiếp
giữa người và máy.

Vi điều khiển quản lý và điều khiển hoạt động của hệ thống qua phần mềm,
nhờ vậy mà ta có thể mở rộng và thay đổi hoạt động một cách dễ dàng bằng cách
thay đổi một số thông số của chương trình. Vi điều khiển hoạt động theo chương
trình đã nạp sẵn, đọc các tín hiệu từ bên ngồi đưa vào sau đó lưu trữ và xử lý. Trên
cơ sở đó đưa ra thơng báo, tín hiệu điều khiển các thiết bị bên ngồi hoạt động theo
đúng thơng số và yêu cầu của hệ thống. Ngoài ra, vi điều khiển cũng có mặt trong các
sản phẩm cơng nghiệp và tiêu dùng như: lò vi ba, lò sưởi, máy giặt, hệ thống đèn
giao thông… và trong nhiều thiết bị công nghiệp khác.
Vậy trong đồ án lần này chúng em quyết định chọn đề tài tìm hiểu dịng vi
điều DsPIC cụ thể là DsPIC33fj12mc202 để hiểu được cấu tạo, nguyên lý hoạt động
va ứng dụng của một con vi điều điều khiển cụ thể.
Đồ án gồm các phần:
Lời nói đầu
Phần I: Tổng quan đề tài
Phần II: Nội dung
Chương

1:

Tổng

quan

về

Họ

vđk

dsPic33




vđk

DsPic33FJ12MC202
Chương 2: DsPic33FJ12MC202 và các module cơ bản

3


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Chương 3: Ứng dụng lập trình và mơ phỏng với các ngoại vi
Phần III: Kết luận
Tài liệu tham khảo

Chúng em xin cảm ơn thầy Vũ Vân Hà đã hướng dẫn và cho phép chúng em
được thực hiện đề tài này trong đồ án 2. Với khoảng thời gian có hạn và kiến thức
cịn hạn chế nên q trình tìm hiểu cịn nhiều thiết sót mong thầy nhận xét và góp ý
để kiến thức của chúng em được hoàn thiện hơn!

Chúng em xin chân thành cảm ơn!

4


Báo cáo đồ án 2


GVHD: TS. Vũ Vân Hà

Phần I: TỔNG QUAN ĐỀ TÀI
1. Lý do chọn đề tài:

Ngày nay khoa học CN phát triển nhu cầu của con người ngày
càng cao. Việc nghiên cứu khoa học ngày càng được đầu tư để đáp ứng
nhu cầu đó, các ngành cơng nghệ kỹ thuật điện tử đã có sự phát triển
vượt bậc đưa khoa học vào kỷ nguyên mới. Kỹ thuật vi xử lý vi điều
khiển là một ứng dụng lớn của khoa học kỹ thuật vào cuộc sống phục vụ
trực tiếp cho con người. Ví dụ: Lập trình cho vi xử lý vi điều khiển điều
khiển mạch đèn giao thông, hệ thống quản lý mạng, các thiết bị điện tử
dân dụng…
Ở nhóm ngành Điện tử dân dụng hay thiết bị lập trình nhúng thì vi
xử lý vi điều khiển đã thâm nhập khá nhiều vào lĩnh vực này. Để trang bị
kiến thức về vi xử lí thì bắt đầu với những vi điều khiển có các module
ngoại vi cơ bản, hiểu được cấu trúc phần cứng, lập trình trên thanh ghi là
nền tảng để tiếp cận với các cấu trúc vi điều khiển phức tạp và có khả
năng mạnh mẽ. Do đó chúng em chọn vi điều khiển họ DsPic33 là một
trong những dòng vi điều khiển phù hợp với nghiên cứu của sinh viên và
cũng ứng dụng rất nhiều trong cơng nghiệp cũng như cuộc sống.
2. Mục đích:

Hiểu được cấu trúc của họ vi điều khiển DsPic33 nói chung và vi điều
khiển dsPic33fj12mc202 nói riêng. Biết cách lập trình dsPic trên phần
mềm MpLAP của Microchip, giao tiếp vi điều khiển với các ngoại vi cơ
bản.

5



Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

3. Đối tượng nghiên cứu:

Vi điều khiển DsPic33FJ12MC202. Phần mềm MpLAB IDE.
4. Phạm vi nghiên cứu:
Phạm vi của đề tài dừng ở mức tìm hiểu và mơ phỏng trên các phần mềm hỗ
trợ,
Hiểu và phần nào có kiến thức nền tảng để áp dụng vào thực tế sau này.

6


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Phần 2: NỘI DUNG
Chương 1: Tổng quan về Họ vđk dsPic33 và vđk DsPic33FJ12MC202
1. Họ VĐK DsPic
Họ VĐK PIC và dsPic do hãng Microchip chế tạo và sản xuât với công nghệ
hiện đại, phù hợp cho các ứng dụng đơn giản đến phức tạp. Đặc biệt ngồi ngơn ngữ
lập trình assembly như các MCU khác, người dùng có thể lập trình PIC trên ngôn
ngữ C quen thuộc thông qua các phần mềm hỗ trợ.
Cơ bản về dsPIC, chỉ xét riêng phần vi điều khiển, dsPIC giống như PIC24, là
các vi điều khiển 16-bit, dựa trên kiến trúc Harvard sửa đổi, với tập lệnh rút gọn (như

vậy dsPIC và PIC24 cũng thuộc loại RISC: Reduced Instruction Set Computer).
dsPIC hiện nay gồm có hai dòng: dsPIC30F và dsPIC33F.
DsPIC là một họ vi điều khiển số (Digital Signal Controller) 16-bit. Sự khác
biệt của dsPIC so với các vi điều khiển khác là dsPIC được tích hợp các cơng cụ xử
lý tín hiệu số. Tuy mới ra đời (từ năm 2005) nhưng dsPIC đã nhanh chóng chiếm
được thị phần lớn trong thị trường chip trên thế giới cũng như tại Việt Nam bởi chip
dsPIC có tốc độ xử lý cao, trên phiến tích hợp các module chức năng phù hợp với
nhiều ứng dụng khác nhau, đồng thời giá thành của dsPIC tương đối thấp. Những yếu
tố đó cho phép thực hiện các dự án trên dsPIC rất hiệu quả.
2 Trình dịch
Ngơn ngữ lập trình cho dsPIC có hai loại cơ bản là ngơn ngữ ASM và ngơn ngữ
C. Lập trình trên ASM cho phép tạo ra mã gọn nhẹ, tốc độ thực thi nhanh. Tuy nhiên,
nhược điểm của ngơn ngữ ASM là trình bày phức tạp, khó khăn cho việc thực hiện
các giải thuật tính tốn đối với người lập trình khơng chun. Trong khi đó ngôn ngữ
C với cấu trúc rõ ràng, khả năng module hóa cao, thực hiện thuật tốn một cách trực
quan sáng sủa đã thực sự trở thành một ngôn ngữ lý tưởng cho lập trình hệ nhúng.

7


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Hiện nay trình biên dịch sử dụng ngơn ngữ C cho dsPIC được nhiều hãng cung cấp,
như MikroC của MikroElectronika, MPLAB C30 của Microchip, CCS của CCS Inc...
Ngồi hai ngơn ngữ căn bản ASM và C ở trên, lập trình tạo mã cho dsPIC cịn
có thể thực hiện theo dạng sơ đồ khối chức năng thông qua thư viện Embedded
Target for Microchip dsPIC của MATLAB & SIMULINK. Cũng giống như các thư
viện Target for C6000/C2000, Target for Infi neon C166 trong MATLAB, thư viện

Embedded Target for Microchip dsPIC cung cấp các sơ đồ khối chức năng trên chip
như ADC, PWM, UART... cho phép người lập trình sử dụng sơ đồ khối SIMULINK
để thực hiện các nội dung lập trình cho dsPIC.
Trong những trình biên dịch kể trên, MPLAB C30 là trình biên dịch do chính
hãng Microchip cung cấp. Với trình biên dịch MPLAB C30, người lập trình sẽ nắm
vững được tổ chức phần cứng và phần mềm trên hệ nhúng dsPIC từ đó có thể phát
triển những firmware riêng cho dự án của mình hoặc sử dụng những firmware do
chính hãng cung cấp.
3. DsPic33FJ12MC202
Đặc điểm chính:

Hình 1.1: Xác minh sản phẩm

8


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Thuộc dòng dsPic33
 FJ: flash program memory 3.3V
 MC2: motor control family
 Bộ nhớ chương trình 12kB
 02: pin count 28Pin
 E: range -40° C to +125° C (Extended)

Bảng 1.1: Các module của dsPic33fj12mc202
Đặc trưng khác:
 Tốc độ CPU tối đa: 40 MIPS

 Dung lượng RAM: 1 Kbytes
 Phạm vi điện áp hoạt động: 3,0V đến 3,6V
 Có 21 chân I/O
 Điện áp chân đầu ra: từ 3,0V đến 3,6V (tối đa 5V chế độ open drain)

9


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

 Dòng điện cho phép trên tất cả các chân: 4mA
Chương 2: DsPic33FJ12MC202 và các module cơ bản
1. Cấu hình thạch anh
DsPic33 có 4 nguồn dao động: POSC, FRC, LPRC, SOSC
Bộ PLL
Bộ DOZE chạy ở chế độ tiết kiệm điện
Bộ giám sát lỗi dao động FSCM (Fail Safe Clock Monitor)

Hình 2.1: sơ đồ khối dao động
Bộ dao động vào của dsPIC33 thông qua bộ chia (nhân tần số) PLL, sau đó
dùng 2 chu kỳ để thực hiện 1 lệnh, dsPIC33 cho phép dao động FOSC tới 80MHz và

10


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà


chạy ở tối đa 40MIPS. Như vậy: tần số xung lệnh Fcy = Fosc/2, với Fosc là xung
nhịp

sau

PLL.

Hình 2.2: biểu đồ thời gian xung lệnh
Việc cấu hình bộ nhân chia PLL để đạt được tần số mong muốn cần thực hiện
theo nguyên tắc sơ đồ sau:

HÌnh 2.3: Sơ đồ bộ PLL

11


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Trong đó: PLLDIV, PLLPRE, PLLPOST là các nhóm bít nằm trong 2 thanh ghi
CLKDIV, PLLFBD, Fin = Fosc.
Lưu ý:
 Dao động XT: thạch anh 3-10MHz
 Dao động HS: thạch anh 10 - 40MHz
 Dao động EC: bộ dao động (thạch anh 4 chân hoặc lấy từ nguồn chip khác) từ
0.8 - 64MHz.
Giá trị Fcy = Fpllo được tính như sau:


VD: khởi tạo nguồn dao động sử dụng thạch anh ngoài là 8Mhz, tạo Fcy = 40Mhz
Lựa chọn nguồn động được trình MPLAB hỗ trợ cấu hình trên giao diện

Tính tốn bộ PLL:

2. Các cổng vào ra I/O

12


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Tất cả các chân của thiết bị (ngoại trừ VDD, VSS, MCLR và OSC1/CLKI,
AVDD, AVSS) được chia sẻ giữa các thiết bị ngoại vi và cổng I/O song song
(21pin).

Hình 2.4: Sơ đồ cấu trúc cổng vào ra
Tất cả các pin đều có 3 thanh ghi liên kết trực tiếp với chúng nếu là chức năng
số (digital).
 TRIS register (TRISx) xác định chân nào là 1 chân input hay chân
output: nếu bit nào trong thanh ghi bằng 0 thì pin đó là output, bằng 1 thì
là input.
 LAT register (LATx): ghi giá trị ra output

13


Báo cáo đồ án 2


GVHD: TS. Vũ Vân Hà

 PORT register (PORTx): đọc giá trị từ input
x = A hoặc B
Điện trở trong PULLUP: tương ứng với các chân có chức năng Input Change
Notification nằm trong 2 thanh ghi CNPU1 và CNPU2 tương ứng với 21 tín hiệu
CNx.
Ngồi ra DsPic33f còn hỗ trợ chế độ đầu ra Open-drain (để hở) ở một số pin.
Chế độ này được điều khiển bởi thanh ghi ODCx được liên kết với mỗi Port. Cho
phép điện áp ra cao hơn VDD bằng việc kéo lên nguồn 5V qua điện trở ngồi.
Cấu hình chân Analog: các chân có chức năng ANx (x = 0  5 tương ứng với 6
kênh đầu vào tương tự) được cấu hình bởi thanh ghi AD1CFGL có giá trị mặc định
ban đầu là 0x0000, sẽ là ở chế độ analog. Và khi đọc giá trị trong thanh ghi PORT sẽ
bằng 0.
VD: khởi tạo chân RB1 làm output, có điện trở kéo bên trong.
_TRISB1 = 0;

//output

_CN4PUE = 1;

//điện trở pullup

_LATB1 = 1;

//xuất mức 1.

3. Ngắt ngồi
Có 3 ngắt ngồi là INT0, INT1, INT2.

Trong đó INT0 mặc định là chân RB7. INT1 và INT2 có thể lựa chọn chân
thơng qua cấu hình thanh ghi RPINRx.

Các bước cấu hình ngắt ngồi:
 Chọn chân ngắt ngoài

14


Báo cáo đồ án 2

 Chọn bảng vector ngắt

GVHD: TS. Vũ Vân Hà

//thanh ghi INTCONx

 Chọn ngắt theo sườn lên hay sườn xuống //thanh ghi INTCONx
 Chọn mức ưu tiên ngắt

//thanh ghi IPC0

 Kích hoạt ngắt ngồi

//thanh ghi IECOx

Chương trình phục vụ ngắt:
 Xóa cờ ngắt

// thanh ghi IFS0x


 Thực hiện chương trình phục vụ ngắt
VD: tạo ngắt ngồi INT0 theo sườn xuống, chương trình phục vụ ngắt đảo
trạng thái chân RB1

4. Bộ đếm, bộ định thời
4.1 Bộ định thời/bộ đếm (Timer/Counter) là gì
Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếm các
xung nhịp. Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của bộ đếm sẽ
được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm đi 01 đơn vị (trong
chế độ đếm lùi/đếm xuống).

15


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Xung nhịp đưa vào đếm có thể là một trong hai loại:
Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao
động bên trong IC và các linh kiện phụ bên ngoài nối với IC. Trong trường hợp sử
dụng xung nhịp loại này, người ta gọi là các bộ định thời (timers). Do xung nhịp bên
loại này thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chính xác.
Xung nhịp bên ngồi IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức
0-1 và không nhất thiết phải là đều đặn. Trong trường hợp này người ta gọi là các bộ
đếm (counters). Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên
ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xe ra/vào kho bãi.
Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn” (overflow). Nó
được hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu diễn và

quay trở về giá trị 0. Với bộ đếm 8 bit, giá trị tối đa là 255 (tương đương với FF trong
hệ Hexa) và là 65535 (FFFFH) với bộ đếm 16 bit.
4.2 Bộ định thời/bộ đếm trong dspic33fj12mc202
Trong dspic33fj12mc202 (hoặc dspic33fj12mc201) cung cấp 3 bộ đinh thời
Timer 16 bit: Timer1, Timer2, Timer3
Cả 3 bộ timer đều có thể hoạt động ở chế độ 16 bit, ngồi ra cịn có thể ghép nối
timer2 vào 3 để tạo timer23 32 bit
* Timer1
Là 1 bộ hẹn giờ 16-bit, có 3 chế độ:
 16-bit Timer (chế độ timer)
 16-bit Synchronous Counter (chế độ counter đồng bộ)
 16-bit Asynchronous Counter (chế độ counter không đồng bộ)

16


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Timer1 cũng hỗ trợ các chức năng như: chọn hệ số chia cho xung nhịp đầu vào,
chạy trong chế độ sleep hay CPU idle, ngắt timer…

Hình 2.5: Sơ đồ khối bộ timer1
Theo sơ đồ trên, để hoạt động timer1 cần cấu hình một số bit sau:
 Đặt bit TON (= 1) trong thanh ghi T1CON.
 Chọn hệ số chia prescale bằng các bit TCKPS <1: 0> trong thanh ghi
T1CON.
 Đặt chế độ Đồng hồ và Chế độ Ghép bằng cách sử dụng TCS và bit
TGATE trong thanh ghi T1CON.

 Đặt hoặc xóa bit TSYNC trong T1CON để chọn hoạt động đồng bộ hoặc
không đồng bộ.
 Đưa giá trị thời gian hẹn giờ hay chu kì vào thanh ghi PR1

17


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

 Nếu ngắt được yêu cầu, thiết lập cho phép ngắt bit, T1IE. Sử dụng các
bit ưu tiên, T1IP <2: 0>, để đặt ưu tiên ngắt
 Khi hoạt đông giá trị trong thanh ghi TMR1 sẽ đếm tăng từ 0, nếu bằng
giá trị trong thanh ghi PR1 thì sẽ set cờ T1IF lên 1, đồng thời reset giá trị
trong TMR1.
 Người lập trình cần xóa bit T1IF để nhận biết sự thay đổi cho lần tiếp
theo, hoặc cho ngắt

bit 15 TON: Bật timer1 (bắt đầu đếm)
1 = Bắt đầu Timer 16 bit
0 = Dừng Timer 16 bit
bit 14 Chưa dùng: mặc định bằng 0
bit 13 TSIDL: Dừng ở chế độ Idle
1 = Ngừng hoạt động mô-đun khi thiết bị chuyển sang chế độ Idle
0 = Tiếp tục hoạt động mô-đun ở chế độ Idle
bit 12-7 Chưa dùng: mặc định bằng 0
bit 6 TGATE: bit Kích hoạt Timer1 Gated Time Accumulation (tich lũy thời
gian)


18


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Khi TCS = 1: Bit này bị bỏ qua.
Khi TCS = 0: 1 = Tích lũy thời gian được kích hoạt
0 = tích lũy thời gian khơng được kich hoạt
bit 5-4 TCKPS <1: 0>: Chọn hệ số chia Clock Prescale
11 = 1: 256
10 = 1:64
01 = 1: 8
00 = 1: 1
bit 3 Chưa dùng: mặc định bằng 0
bit 2 TSYNC: chọn Đồng bộ hóa đầu vào với xung ngồi bên ngồi
Khi TCS = 1: 1 = Đồng bộ hóa đầu vào đồng hồ bên ngồi
0 = Khơng đồng bộ hóa đầu vào đồng hồ bên ngoài
Khi TCS = 0: Bit này bị bỏ qua.
bit 1 TCS: Chọn Nguồn xung nhịp
1 = Đồng hồ bên ngoài từ pin T1CK (sườn lên)
0 = Đồng hồ bên trong (FCY)
bit 0 Chưa dùng: mặc định bằng 0
Nếu sử dụng ngắt timer1 thì sẽ cấu hình trong bit T1IE thanh ghi IEC0 và bit
T1IF trong thanh ghi IFS0

19



Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

T1IE = 0: không kich hoạt yêu cầu ngắt
= 1: kich hoạt yêu cầu ngắt
T1IF: cờ ngắt cần được xóa trong chương trình phục vụ ngắt
Ngồi ra cịn có thể đặt lại mức ưu tiên cho ngắt bằng 3bit T1IP<3:0> trong
thanh ghi IPC0
VD: sử dụng timer1 để đảo trạng thái chân RB0 sau mỗi 0.5s =500ms
Cách làm: sử dụng timer1 tạo ngắt mỗi 1ms, trong ISR sẽ đếm lên 1, khi nào
biến đếm bằng 500 thì đảo trạng thái bit LATB0,
Ví dụ Fcy = 40Mhz, chọn hệ số chia prescale 1:8 nên tần số đưa vào timer là
40/8 = 5 MHz
Để tạo trễ 1 ms thì thời gian nạp vào PR1= 1. 10^-3 * 5 * 10^-6 = 5000

20


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Hàm khởi tạo:

Trong ISR:

Kết quả mô phỏng:

21



Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Hình 2.6: mô phỏng sử dụng timer1
*Timer2 và Timer3
Ở chế độ 16bit thì timer2 hoặc timer3 đều tương tự như timer1
Các thanh ghi liên quan:
Timer2: T2CON
Timer3: T3CON
Ngắt: IEC0 và IFS0
*Ở chế độ 32 bit: ghép 2 timer2 và timer3 thành timer23
Trong thanh ghi T2CON của timer2 có bit T32
T32 = 0: timer 2 và timer3 hoạt động như 2 timer 16bit
= 1: time2 và timer3 hoạt động như timer 32 bit
Các bít cịn lại cấu hình tương tự như timer1
22


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

Sơ đồ khối thể hiện hoạt động của timer23

Hình 2.7: Sơ đồ khối bộ timer2,3
Thanh ghi nạp giá trị đếm là PR3 (16bit cao) va PR2 (16bit thấp)
Nếu kích hoạt yêu cầu ngắt thì sẽ cấu hình ngắt của time 3: T3IE và cờ ngắt

T3IF
23


Báo cáo đồ án 2

GVHD: TS. Vũ Vân Hà

VD: hàm khởi tạo timer23 32 bit

Giá trị đếm lúc này là 0x0001ffff là 1 giá trị 32 bit.
5. OutputCompare
5.1 Đặc điểm chung
Module Output compare so sánh giá trị của bộ đếm thời gian (timer) với giá trị
của một hoặc hai thanh ghi so sánh tùy thuộc vào hoạt động chế độ được chọn. Trạng
thái của pin đầu ra thay đổi khi giá trị bộ đếm thời gian khớp với giá trị đăng ký.
Module tạo ra một xung đầu ra đơn hoặc
chuỗi xung đầu ra, bằng cách thay đổi trạng thái của chân đầu ra trên các sự
kiện so sánh phù hợp.
Nó cũng có thể tạo ra các ngắt khi so sánh các sự kiện trùng khớp.
24


×