1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

71 430 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 3,02 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một trong số vi mạch được sử dụng đó là kỹthuật vi điều khiển.. 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 đượ

Trang 2

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

Trang 3

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

Trang 4

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ậptrì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áytính đã đem lại sự hoàn hảo, độ chính xác và tính mềm dẻo cao thông qua giao tiếpgiữ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áchthay đổi một số thông số của chương trình Vi điều khiển hoạt động theo chươngtrình đã nạp sẵn, đọc các tín hiệu từ bên ngoà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 ngoà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ácsả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 đèngiao 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à vđkDsPic33FJ12MC202

Trang 5

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ứccòn hạn chế nên quá 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!

Trang 6

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.

Trang 7

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

Vi điều khiển DsPic33FJ12MC202 Phần mềm MpLAB IDE.

Trang 8

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ácbiệ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 chipdsPIC 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ớinhiề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ệncác giải thuật tính toán đối với người lập trình không chuyên 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 toán một cách trựcquan 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

Trang 9

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 Ngoà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 EmbeddedTarget 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ệnEmbedded Target for Microchip dsPIC cung cấp các sơ đồ khối chức năng trên chipnhư 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ínhhãng Microchip cung cấp Với trình biên dịch MPLAB C30, người lập trình sẽ nắmvững được tổ chức phần cứng và phần mềm trên hệ nhúng dsPIC từ đó có thể pháttriển những firmware riêng cho dự án của mình hoặc sử dụng những firmware dochính hãng cung cấp

3 DsPic33FJ12MC202

Đặc điểm chính:

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

Trang 10

Thuộc dòng dsPic33

 FJ: flash program memory 3.3V

 MC2: motor control family

 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)

 Dòng điện cho phép trên tất cả các chân: 4mA

Trang 11

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àchạy ở tối đa 40MIPS Như vậy: tần số xung lệnh Fcy = Fosc/2, với Fosc là xung

Trang 12

nhịp sau PLL.

Hình 2.2: biểu đồ thời gian xung lệnhViệ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

Trang 13

Trong đó: PLLDIV, PLLPRE, PLLPOST là các nhóm bít nằm trong 2 thanh ghi CLKDIV, PLLFBD, Fin = Fosc.

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 = 40MhzLựa chọn nguồn động được trình MPLAB hỗ trợ cấu hình trên giao diện

Tính toán bộ PLL:

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

Trang 14

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ânoutput: nếu bit nào trong thanh ghi bằng 0 thì pin đó là output, bằng 1 thì

là input

Trang 15

 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 ChangeNotification nằm trong 2 thanh ghi CNPU1 và CNPU2 tương ứng với 21 tín hiệuCNx

Ngoà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 Chophép điện áp ra cao hơn VDD bằng việc kéo lên nguồn 5V qua điện trở ngoà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 6kênh đầu vào tương tự) được cấu hình bởi thanh ghi AD1CFGL có giá trị mặc địnhban đầ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

3 Ngắt ngoài

Có 3 ngắt ngoài là INT0, INT1, INT2

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

Các bước cấu hình ngắt ngoài:

 Chọn chân ngắt ngoài

Trang 16

 Chọn bảng vector ngắt //thanh ghi INTCONx

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

Trang 17

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ênloạ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 ngoài IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức0-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ênngoà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ờiTimer 16 bit: Timer1, Timer2, Timer3

Cả 3 bộ timer đều có thể hoạt động ở chế độ 16 bit, ngoài ra còn có thể ghép nốitimer2 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ộ)

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…

Trang 18

Hình 2.5: Sơ đồ khối bộ timer1Theo 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 ghiT1CON

 Đặt chế độ Đồng hồ và Chế độ Ghép bằng cách sử dụng TCS và bitTGATE trong thanh ghi T1CON

 Đặt hoặc xóa bit TSYNC trong T1CON để chọn hoạt động đồng bộ hoặckhông đồng bộ

 Đưa giá trị thời gian hẹn giờ hay chu kì vào thanh ghi PR1

 Nếu ngắt được yêu cầu, thiết lập cho phép ngắt bit, T1IE Sử dụng cácbit ưu tiên, T1IP <2: 0>, để đặt ưu tiên ngắt

Trang 19

 Khi hoạt đông giá trị trong thanh ghi TMR1 sẽ đếm tăng từ 0, nếu bằnggiá 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ếptheo, 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)

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

Trang 20

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

bit 2 TSYNC: chọn Đồng bộ hóa đầu vào với xung ngoài bên ngoài

Khi TCS = 1: 1 = Đồng bộ hóa đầu vào đồng hồ bên ngoà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à bitT1IF trong thanh ghi IFS0

Trang 21

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

Ngoài ra còn có thể đặt lại mức ưu tiên cho ngắt bằng 3bit T1IP<3:0> trongthanh 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àobiế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

Hàm khởi tạo:

Trang 22

Trong ISR:

Kết quả mô phỏng:

Trang 23

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

Trang 24

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

Trang 25

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ạngthá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

Trang 26

Mô-đun So sánh đầu ra có nhiều chế độ hoạt động:

1 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp One-Shot tích c c m c th p ực mức thấp ức thấp ấp

2 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp One-Shot tích c c m c cao ực mức thấp ức thấp

3 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp đảo trạng thái o tr ng thái ạng thái

4 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp One-Shot có tr ễ

5 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp xung liên t c ục

6 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp PWM không có b o v l i ảo trạng thái ệ lỗi ỗi

7 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp PWM có b o v l i ảo trạng thái ệ lỗi ỗi

Hình 2.8: Biểu đồ khối của module output compare

Như vậy ở đây chỉ có timer2 hoặc timer3 được sử dụng

2 thanh ghi so sánh với giá trị của timer là OcxRS và OcxR

X = 1, 2 do dsPic33fj12MC202 có 2 bộ output compare

Chân đầu ra là được lựa chọn là outPut pinmap như sau

Trang 27

Chế độ của Output compare 1->7 được lựa chọn bởi 3bit OCM<2:0> được nhưdưới đây.

Compare

5.2 Các thanh ghi liên quan

* thanh ghi điều khiển

Trang 28

bit 13 OCSIDL: dừng trong chế độ nghỉ hay không

1 = dừng trong chế độ CPU nhàn rỗi

0 = tiếp tục hoạt động ở chế độ Nhàn rỗi CPU

bit 4 OCFLT: Bit trạng thái điều kiện lỗi PWM

1 = Điều kiện lỗi PWM đã xảy ra (chỉ xóa trong phần cứng)

0 = Không có lỗi PWM xảy ra (bit này chỉ được sử dụng khi OCM <2:0> = 111)

bit 3 OCTSEL: bit chọn Timer

1 = Timer3 là nguồn đồng hồ cho Output Compare x

0 = Timer2 là nguồn đồng hồ cho Output Compare x

bit 2-0 OCM <2: 0>: bit chọn chế độ

*2 thanh ghi để nạp giá trị so sánh với giá trị đếm trong timer

Trang 29

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

Hình 2.9: trang thái chân đầu ra trong OC

5.4 Cụ thể về chế độ thường sử dụng PWM mode (OCM =110)

Trang 30

Hình 2.10: giản đồ xung hoat động của OC chế đô PWM

Tại thời điểm số

1 Giá tr h s i u ch (duty cycle) c a chu kì ị hệ số điều chế (duty cycle) của chu kì đầu tiên được viết vào ệ lỗi ố điều chế (duty cycle) của chu kì đầu tiên được viết vào đ ều chế (duty cycle) của chu kì đầu tiên được viết vào ế độ One-Shot tích cực mức thấp ủa chu kì đầu tiên được viết vào đầu tiên được viết vào u tiên được viết vào c vi t v o ế độ One-Shot tích cực mức thấp ào thanh ghi OcxR tr ước khi enable PWM mode c khi enable PWM mode.

2 Duty cycle th c a chu khi th 2 ức thấp ủa chu kì đầu tiên được viết vào ức thấp được viết vào c vi t v o trong thanh ghi OcxRS ế độ One-Shot tích cực mức thấp ào

3 Ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp PWM được viết vào c ch n, chân ra Ocx l m c th p n u OcxR = 0, l ọn, chân ra Ocx là mức thấp nếu OcxR = 0, là ào ức thấp ấp ế độ One-Shot tích cực mức thấp ào

m c cao n u OcxR khác 0 ức thấp ế độ One-Shot tích cực mức thấp

4 Timer được viết vào c enable v b t ào ắt đầu đếm tăng đầu tiên được viết vào đế độ One-Shot tích cực mức thấp u m t ng ăng

5 Trong ch ế độ One-Shot tích cực mức thấp độ One-Shot tích cực mức thấp so sánh, chân Ocx m c th p ở mức thấp ức thấp ấp

6 ở mức thấp th i i u cu i chu kì, giá tr trong OcxRS đ ểu cuối chu kì, giá trị trong OcxRS được sao vào trong thanh ố điều chế (duty cycle) của chu kì đầu tiên được viết vào ị hệ số điều chế (duty cycle) của chu kì đầu tiên được viết vào được viết vào c sao v o trong thanh ào ghi OcxR Chân Ocx l m c 1 n u OcxR = 0, l m c 0 n u OcxR ào ức thấp ế độ One-Shot tích cực mức thấp ào ức thấp ế độ One-Shot tích cực mức thấp khác 0

7 duty cycle cho chu kì th 3 ức thấp được viết vào c ghi v o thanh ghi OcxRS ào

VD: tạo xung có duty cycle = 0.5 trên chân RB2 sử dụng OC1

Tạo chu kì 1ms Giá trị trong PR2 của timer2 là 5000

Giá trị so sánh OC1RS là 2500 nên duty = 0.5

Trang 31

Kết quả mô phỏng:

Trang 32

Hình 2.11: Mô phỏng PWM trong OutputCompare

6 UART, SPI, I2C

6.1 UART

Dspic33FJ12MC202 chỉ có 1 bộ truyền thông không đồng bộ UART1

a Đặc điểm chung

 Truyền nhận song công qua 2 chân UxTX và UxRX

 Lựa chọn chế độ data 8 bit, chọn bít kiểm tra chẵn lẻ hoặc không

 1 hoặc 2 bit stop

 Điều khiển phần cứng qua 2 tín hiệu UxCTS và UxRTS

 Baurate từ 10Mbps đến 38bps tại 40 MIPS

 4 bộ đệm truyền nhận FIFO

b Các thanh ghi liên quan

Thanh ghi chọn chế độ UART

Bit 15: UARTEN enable hoặc disable module uart

Bit 1,2 PDSEL<1:0>: chọn bít chẵn lẻ

Bit 0: STSEL: chọn bit stop

Thanh ghi trạng thái

Trang 33

URXEN: enable hoặc disable nhận uart

UTXEN: enable hoặc disable truyền uart

URXSEL<1:0>: chọn chế độ báo ngắt 1byte, 2 byte hay 4 byte

URXDA: bít báo trạng thái dữ liệu khả dụng

Thanh ghi nhận dữ liệu UxRXREG

Thanh ghi truyền dữ liệu UxTXREG

Thanh ghi cấu hình Baurate UxBRG

Công thức tính toán baurate:

Trong đó Fp = Fcy là tần số xung lệnh

Truyền nhận uart

Trang 34

Hình 2.12: sơ đồ khối truyền uart

Các bước cấu hình truyền uart

1 Khởi tạo baurate

2 Chọn chế độ data 8 hay 9 bit, có bít chẵn lẻ không, 1 hay 2 bit stop

3 Có thể cấu hình ngắt truyền trong thanh ghi IEC0x

4 Mức ưu tiên ngắt nếu sử dụng ngắt

5 Enable UART module bằng việc set UARTEN bit (UxMODE<15>)

6 Enable truyền qua việc set UTXEN (UxSTA<10>)

7 UxTXIF nên được xóa trong chương trình ISR

8 Load dữ liệu vào trong thanh ghi UxTXREG

Trang 35

Hình 2.13: sơ đồ khối nhận uart

Các bước cấu hình nhận uart tương tự như nhận uart

6.2 SPI

a Đặc điểm chung

SPI (Serial Peripheral Interface) module là giao tiếp nối tiếp đồng bộ được sửdụng cho giao tiếp với ngoài vi và thiết bị vi xử điều khiển khác Các thiết bị này cóthể là EEPROM, thanh ghi dịch, chuyển đổi ADC…

Ngày đăng: 24/06/2019, 16:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w