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

Tài liệu PIC 18f4520

100 3,5K 25

Đ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 100
Dung lượng 3,94 MB

Nội dung

Các thanh ghi, sơ đồ khối điều khiển hoạt động vào ra Có 5 cổng vào/ra PortsA, B, C, D, E các chân được thiết lập thành các chức năng khác nhau phụ thuộc vào các thanh ghi điều khiển -

Trang 1

Trang: 1

MỤC LỤC

I Tổng quan về vi điều khiển pic18f4520 3

1 Sơ đồ chân vi điều khiển pic18f4520 4

2 Các thông số về vi điều khiển pic18f4520 4

II Ngắt 8

1 Khái niệm 8

2 Hoạt động ngắt ở vi điều khiển Pic 18f4520 8

3 Các thanh ghi điều khiển ngắt 9

III Hoạt động vào ra ở các Port (I/O Ports) 13

1 Các thanh ghi, sơ đồ khối điều khiển hoạt động vào ra 13

2 PORTA 14

3 PORTB 16

4 PORTC 17

5 PORTD 18

6 PORTE 19

IV Hoạt động các bộ Timer 20

1 Timer0 20

1.1 Đặc điểm, các thanh ghi điều khiển, sơ đồ khối Timer0 20

1.2 Các chế độ hoạt động của Timer0 23

2 TIMER1 23

2.1 Đặc điểm, các thanh ghi điều khiển, sơ đồ khối Timer1 23

2.2 Các chế độ hoạt động của Timer1 26

3 TIMER2 27

3.1 Đặc điểm, các thanh ghi điều khiển, sơ đồ khối Timer1 27

3.2 Chế độ hoạt động của Timer2 29

V PWM 29

1 Khái niệm 29

2 PWM ở pic 18f4520 30

VI ADC 33

1 Khái niệm 33

Trang 2

Trang: 2

2 Các thanh ghi điều khiển hoạt động của ADC 34

VII Truyền thông nối tiếp 37

1 giới thiệu 37

2 Tổng quan về khối MSSP 37

2.1 SPI 37

2.2 I2C 44

3 EUSART 78

3.0 Tổng quan về khối EUSART 78

3.1 Các thanh ghi 79

3.2 Bộ phát tốc độ baud (BRG) 83

3.3 Chế độ EUSART bất đồng bộ 89

3.4 EUSART đồng bộ 94

Trang 3

Trang: 3

Datasheet PIC 18f4520

I Tổng quan về vi điều khiển pic18f4520

Bộ vi điều khiển ghi tắt là Micro-controller là mạch tích hợp trên một chip có thể lập trình được, dùng để điều khiển hoạt động của hệ thống Theo các tập lệnh của người lập trình, bộ vi điêu khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian

và tiến hành đóng mở một cơ cấu nào đó

Trong các thiết bị điện và điện tử các bộ vi điều khiển điều khiển hoạt động của ti vi, máy giặt, đầu đọc lase, lò vi ba, điện thoại …Trong hệ thống sản xuất tự động, bộ vi điều khiển sử dụng trong robot, các hệ thống đo lường giám sát Các hệ thống càng thông minh thì vai trò của vi điều khiển ngày càng quan trọng Hiện nay trên thị trường

có rất nhiều họ vi điều khiển như: 6811 của Motorola, 8051 của Intel, Z8 của Zilog, PIC của Microchip Technology …

Trong đề tài này nghiên cứu về pic18f4520 vì nó có nhiều ưu điểm hơn các loại vi điều khiển các như : ADC 10 BÍT, PWM 10 BÍT, EEPROM 256 BYTE, COMPARATER, …ngoài ra nó còn được các trường đại học trên thế giới đặc biệt là ở các nước Châu Âu hầu hết xem PIC là 1 môn học trong bộ môn vi diều khiển nói vậy các bạn cũng thấy sự phổ biến rộng rãi của nó Ngoài ra PIC còn được rất nhiều nhà sản xuat phần mềm tạo ra các ngôn ngữ hổ trợ cho việc lập trình ngoài ngôn ngữ Asembly như :MPLAB, CCSC, HTPIC, MIRKROBASIC,…

Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau :

 8/16 bít CPU, xây dựng theo kiến trúc trên kiến trúc Harvard sửa đổi, với tập lệnh rút gọn (do vậy PIC thuộc loại RISC)

 Flash và Rom có thể tuỳ chọn 256 byte đến 256 kbybe

 Các cổng xuất/nhập (mức lôgic thường từ 0v đến 5v, ứng với mức logic 0 và 1)

 8/16 bít timer

 Các chuẩn giao tiếp ngoại vi nối tiếp đồng bộ/ không đồng bộ

 Bộ so sánh điện áp

 MSSP Pripheral dùng cho các giao tiếp I2C, SPI

 Bộ nhớ nội EEPROM - có thể ghi/ xoá lên tới hàng triệu lần

Trang 4

Trang: 4

 Modul điều khiển động cơ, đọc encoder

 Hỗ trợ giao tiếp USB

 Hỗ trợ điều khiển Ethernet

 Hỗ trợ giao tiếp CAN

 Hỗ trợ giao tiếp LIN

 Hỗ trợ giao tiếp IRDA

 DSP những tính năng xử lý tín hiệu số

1 Sơ đồ chân vi điều khiển pic18f4520

2 Các thông số về vi điều khiển pic18f4520

CPU tốc độ cao có 75 cấu trúc lệnh, nếu được cho phép có thể kéo dài đến 83 cấu

trúc lệnh

 Hầu hết các cấu trúc lệnh chỉ mất một chu kỳ máy, ngoại trừ lệnh rẽ nhánh chương trình mất hai chu kỳ máy

 Tốc độ làm việc: xung clock đến 40MHz, tốc độ thực thi lệnh 125ns

 Bộ nhớ chương trình ( flash program memory) là 32kbyte

 Bộ nhớ dữ liệu SRAM là 1536 byte

 Bộ nhớ dữ liệu EEPROM là 256 byte

Trang 5

Trang: 5

 5 port Vào hoặc ra

 4 bộ timer

 Giao tiếp nối tiếp : MSSP, enhanced USART

 Cổng giao tiếp song song

 13 bộ Analog to Digital module 10 bít

Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:

+ Bộ nhớ Flash có khả năng ghi xoá được 100.000 lần

+ Bộ nhớ EEPROM với khả năng ghi xoá được 1.000.000 lần

+ Flash/Dữ liệu bộ nhớ EEPROM có thể lưu trữ hàng 100 năm

+ Khả năng tự nạp chương trình với sự điều khiển của phần mềm

+ Watchdog timer với bộ dao động trong

+ Chức năng bảo mật mã chương trình

+ Chế độ SLEEP

+ Có thể hoạt động với nhiều dạng Oscillator khác nhau

Trang 6

Trang: 6

3 Sơ đồ khối của vi điều khiển pic18f4520

4 Sơ đồ khối bộ nhớ dữ liệu pic18f4520

Trang 7

Trang: 7

Trang 8

Trang: 8

II Ngắt

1 Khái niệm

Ngắt là một sự kiện bên trong hay bên ngoài làm ngắt bộ vi điều khiển để báo cho

nó biết rằng thiết bị cần dịch vụ của nó Trong phương pháp sử dụng các ngắt thì mỗi khi có một thiết bị bất kỳ cần đến dịch vụ của nó thì nó báo cho bộ vi điều khiển bằng cách gửi một tín hiệu ngắt Khi nhận đựợc tín hiệu ngắt thì bộ vi điều khiển ngắt tất cả những gì nó đang thực hiện để chuyển sang phục vụ thiết bị Chương trình đi cùng với ngắt được gọi là trình dịch vụ ngắt ISR (Interrupt Service Routine) hay còn gọi là trình quản lí ngắt (Interupt handler)

2 Hoạt động ngắt ở vi điều khiển Pic 18f4520

Sơ đồ hoạt động ngắt ở Pic 18f4520:

Trong hoạt động ngắt của 18f4520 được chia ra 2 loại: ngắt có mức ưu tiên cao (ngắt cao) và ngắt có mức ưu tiên thấp (ngắt thấp) Việc 1 ngắt được sử dụng là ngắt cao hay ngắt thấp có thể được thiết lập bằng phần mềm

Trang 9

Trang: 9

Khác với các dòng vi điều khiển khác như 8051 hay AVR, Pic không có vecto ngắt cụ thể dẫn đến từng ngắt mà chỉ có vecto dẫn đến ngắt cao (0x08) hoặc ngắt thấp (0x18) Khi vi điều khiển đang thực hiện một trình phục vụ ngắt thuộc một ngắt nào đó thì lại có một ngắt khác được kích hoạt Trong những trường hợp như vậy thì một ngắt

có mức ưu tiên cao hơn có thể ngắt một ngắt có mức ưu tiên thấp hơn Lúc này ISR của ngắt có mức ưu tiên cao hơn sẽ được thực thi Khi thực hiện xong ISR của ngắt có mức

ưu tiên cao hơn thì nó mới quay lại phục vụ tiếp ISR của ngắt có mức ưu tiên thấp hơn trước khi trở về chương trình chính Đây gọi là ngắt trong ngắt Không thể làm gián đoạn 1 ngắt có mức ưu tiên cao

Chú ý: Giả định là khi một ISR nào đó đang thực thi thì xảy ra một yêu cầu ngắt

từ một ISR khác có mức ưu tiên thấp hơn thì ISR có mức ưu tiên thấp hơn không được phục vụ, nhưng nó sẽ không bị bỏ qua mà ở trạng thái chờ Nghĩa là ngay sau khi ISR

có mức ưu tiên cao hơn thực thi xong thì đến lượt ISR có mức ưu tiên thấp hơn sẽ được phục vụ

3 Các thanh ghi điều khiển ngắt

Trong Robocon, thường chỉ cần quan tâm đến ngắt ngoài (để đọc giá trị từ

encorder), có thể 1 số trường hợp sẽ dùng ngắt timer Vì vậy tôi sẽ tập trung giới thiệu

về cách sử dụng 2 loại ngắt này, từ đó, bạn có thể dễ dàng tìm hiểu về các loại ngắt khác như: ngắt do ADC, ngắt từ truyền thông nối tiếp, song song…

Trước hết để sử dụng ngắt ta cần set bit IPEN trong thanh ghi RCON lên 1

Thanh ghi INTCON:

Với giá trị RCONbits.IPEN=1

GIE/GIEH: 1 = Cho phép ngắt có mức ưu tiên cao

Trang 10

Thanh ghi INTCON2:

INTEDGE0:Chọn sườn gây ngắt cho INT0

1 = Ngắt khi có 1 sườn lên ở chân INT0 ( từ 0 lên 1)

0 = Ngắt khi có 1 sườn xuống ở chân INT0 ( từ 1 xuống 0)

INTEDGE1:Chọn sườn gây ngắt cho INT1

1 = Ngắt khi có 1 sườn lên ở chân INT1 ( từ 0 lên 1)

0 = Ngắt khi có 1 sườn xuống ở chân INT1 ( từ 1 xuống 0)

INTEDGE2:Chọn sườn gây ngắt cho INT2

1 = Ngắt khi có 1 sườn lên ở chân INT2 ( từ 0 lên 1)

0 = Ngắt khi có 1 sườn xuống ở chân INT2 ( từ 1 xuống 0)

INTEDGE3:Chọn sườn gây ngắt cho INT3

1 = Ngắt khi có 1 sườn lên ở chân INT3 ( từ 0 lên 1)

0 = Ngắt khi có 1 sườn xuống ở chân INT3 ( từ 1 xuống 0)

TMR0IP: Chọn mức ưu tiên ngắt timer 0

1 = ưu tiên cao

0 = ưu tiên thấp

Trang 11

Trang: 11

INT3IP: Chọn mức ưu tiên ngắt INT3

1 = ưu tiên cao

0 = ưu tiên thấp

Thanh ghi INTCON3

INT2IP: Chọn mức ưu tiên ngắt INT3

1 = ưu tiên cao

0 = ưu tiên thấp

INT1IP: Chọn mức ưu tiên ngắt INT3

1 = ưu tiên cao

INT3IF: cờ ngắt ngoài 3, được set lên 1 khi xảy ra ngắt, xóa bằng phần mềm

INT2IF: cờ ngắt ngoài 2, được set lên 1 khi xảy ra ngắt, xóa bằng phần mềm

INT1IF: cờ ngắt ngoài 1, được set lên 1 khi xảy ra ngắt, xóa bằng phần mềm

Thanh ghi PIR1:

TMR2IF: cờ ngắt timer 2, được set lên 1 khi xảy ra ngắt, xóa bằng phần mềm TMR1IF: cờ ngắt timer 1, được set lên 1 khi xảy ra ngắt, xóa bằng phần mềm

Trang 12

Trang: 12

Thanh ghi PIR2:

TMR3IF: cờ ngắt timer 3, được set lên 1 khi xảy ra ngắt, xóa bằng phần mềm

Thanh ghi PIE1:

TMR2IE: 1 = cho phép ngắt timer 2

0 = cấm ngắt timer 2

TMR1IE: 1 = cho phép ngắt timer 1

0 = cấm ngắt timer 1

Thanh ghi PIE2:

TMR3IE: 1 = cho phép ngắt timer 3

0 = cấm ngắt timer 3

Thanh ghi IPR1:

TMR2IP: Chọn mức ưu tiên ngắt timer 2

1 = ưu tiên cao

0 = ưu tiên thấp

TMR1IP: Chọn mức ưu tiên ngắt timer 1

1 = ưu tiên cao

0 = ưu tiên thấp

Thanh ghi IPR2:

Trang 13

Trang: 13

TMR3IP: Chọn mức ưu tiên ngắt timer 3

1 = ưu tiên cao

0 = ưu tiên thấp

III Hoạt động vào ra ở các Port (I/O Ports)

1 Các thanh ghi, sơ đồ khối điều khiển hoạt động vào ra

Có 5 cổng vào/ra PortsA, B, C, D, E các chân được thiết lập thành các chức năng khác nhau phụ thuộc vào các thanh ghi điều khiển

- PORT là thanh ghi dữ liệu được định địa chỉ theo Bytes và theo bit

- LAT chốt dữ liệu đầu ra, (=1 đầu ra được chốt mức 1, = 0 chốt mức 0)

- TRIS thanh ghi hướng dữ liệu(đặt = 0 có chiều ra, = 1 có chiều vào )

Trang 14

Trang: 14

- Sơ đồ mô tả của một chân vào ra

2 PORTA

- Gồm có 8 chân từ RA0 đến RA7 có thể cấu thành các đầu vào ra số hay đầu vào tương

tự và các chức năng khác phụ thuộc vào các thanh ghi điều khiển, đặc biệt nó còn có RA6:RA7 là đầu vào của bộ dao động bên ngoài phụ thuộc vào việc thiết đặt cấu hình cho bộ dao động

Trang 15

Trang: 15

- Bảng chức năng của các chân ở PortA

Trang 16

Trang: 16

- Các thanh ghi liên quan

Chú thích: ( - ) và ô đươc tô đen không sử dụng ở PortA

ADCON1 là thanh ghi điều khiển A/D, thiết lập các đầu vào là số hay tương tự (xem phần A/D )

CMCON là thanh ghi điều khiển bộ so sánh (xem phần So Sánh)

CVRCON là thanh ghi điều khiển điện áp tham chiếu của bộ so sánh (xem phần So Sánh)

Chú ý: RA6:RA7 chốt và hướng dữ liệu của chúng kết hợp cả với cấu hình bộ phát xung

3 PORTB

- Gồm có 8 chân từ RB0 đến RB7 có thể cấu thành các đầu vào ra số hay đầu vào tương

tự và các chức năng khác phụ thuộc vào các thanh ghi điều khiển

Trang 17

Trang: 17

- Bảng chức năng của các chân ở PortB

- Các thanh ghi liên quan đến PortB

INTCON, INTCON2, INTCON3 là 3 thanh ghi điều khiển ngắt(xem phần ngắt)

ADCON1 là thanh ghi điều khiển A/D, thiết lập các đầu vào là số hay tương tự (xem phần A/D )

4 PORTC

- Gồm có 8 chân từ RC0 đến RC7 có thể cấu thành các đầu vào ra dữ liệu số hay đầu vào ra cho các bộ Timer, PWM và các chức năng đặc biệt khác phụ thuộc vào các thanh ghi điều khiển

- Bảng chức năng của các chân ở PortC

Trang 19

Trang: 19

- Bảng chức năng của các chân ở PortD

- Các thanh ghi liên quan

- Bảng chức năng của các chân ở PortE

Trang 20

Trang: 20

- Các thanh ghi liên quan

Chú thích:

- Thanh ghi TRISE

IV Hoạt động các bộ Timer

1 Timer0

1.1 Đặc điểm, các thanh ghi điều khiển, sơ đồ khối Timer0

- Đặc điểm của Timer0

+ Lựa chọn chế độ hoạt động Timer hay Counter ở chế độ 8 hoạc 16 bit

+ Thanh ghi có thể đọc hoạc ghi

+ Có thể lựa chọn nguồn xung hệ thống hoạc bên ngoài

Trang 21

Trang: 21

+ Có thể thiết lập ngắt dùng Timer

- Thanh ghi điều khiển Timer: T0CON

Trang 22

Trang: 22

- Sơ đồ khối Timer0 ở chế độ 8 bit

- Sơ đồ khối Timer0 ở chế độ 16 bit

- Các thanh ghi liên quan tới Timer0

TMR0L thanh ghi chứa byte thấp của Timer0

TMR0H thanh ghi chứa byte cao của Timer0

INTCON thanh ghi điều khiển ngắt (xem phần ngắt)

T0CON thanh ghi điều khiển Timer0

TRISA thanh ghi điều khiển hướng dữ liệu PORTA (xem phần I/O)

Trang 23

Trang: 23

1.2 Các chế độ hoạt động của Timer0

- Lựa chọn chế độ Timer/Counter

+ Timer để lựa chọ chế độ này đặt bit T0CS=0 (T0CON<5>) sau đó lựa chọn chế

độ chia tần bằng bit PSA (=1 không qua bộ chia tần,=0 qua bộ chia tần), nếu sử dụng chia tần chọn hệ số chia bằng bit P0PS0: P0PS2

+ Counter để lựa chọ chế độ này đặt bit T0CS=1 (T0CON<5>) sau đó lựa chọn chế độ chia tần bằng bit PSA (=1 không qua bộ chia tần,=0 qua bộ chia tần), nếu sử dụng chia tần chọn hệ số chia bằng bit P0PS0: P0PS2, sau đó chọn sườn xung bằng bit T0SE (T0CON<4>)

- Timer0 8 bit/16 bit: Timer0 ở chế độ 8 bit T08BIT = 1 còn chế độ 16 thì bit T08BIT =

0, ở chế độ 16 của Timer0 việc đọc và ghi vào thanh ghi TMR0H phụ thuộc và thanh ghi TMR0L

+ Đọc ở thanh ghi TMR0H, giá trị của thanh ghi TMR0H được đọc ra giá trị mới nhất sau lệnh đọc ở thanh ghi TMR0L

+ Ghi vào thanh ghi TMR0H, giá trị của bộ đệm TMR0H sẽ được ghi vào bytes cao của bộ đếm sau lệnh ghi vào thanh ghi TMR0L

- Ngắt tràn Timer0

Ngắt Timer0 xảy ra khi tràn thanh ghi TMR0 khi đếm từ 0xFF sang 0x00 ở chế

độ 8 bit hoạc 0xFFFF sang 0x0000 ở chế độ 16 bit khi đó cờ báo tràn TMR0IF =1, để thiết đặt chế độ ngắt từ Timer0 đặt bit TMR0IE =1 (INTCON<5>) (xem phần ngắt)

2 TIMER1

2.1 Đặc điểm, các thanh ghi điều khiển, sơ đồ khối Timer1

- Đặc điểm và các tính năng của Timer1

+ Lựa chọn chế độ hoạt động Timer hay Counter ở chế độ 16 bit

+ Thanh ghi có thể đọc hoạc ghi

+ Có thể lựa chọn nguồn xung cho bộ Timer1 từ hệ thống hoạc bên ngoài, nguồn xung ngoài có thể lựa chọn từ bộ phát xung timer1 (chân T1OSO và T1OSI) hoạc

nguồn xung bên ngoài chân T13CKI

+ Có thể thiết lập ngắt do tràn Timer1

+ Có thể lựa chọn Counter ở chế độ đếm đồng bộ hoạc không đồng bộ

Trang 24

Trang: 24

+ Reset on CCP Special Event Trigger

+ Device clock status flag (T1RUN)

- Thanh ghi điều khiển Timer1 T1CON

Trang 25

Trang: 25

- Các thanh ghi có liên quan tới Timer1

+ INTCON: thanh ghi điều khiển ngắt

GIE/GIEH là bit cho phép ngắt khi được đặt bằng 1, cấm tất cả các ngắt khi đặt băng 0

PEIE/GIEL là bit cho phép ngắt ngoại vi khi đặt bằng 1, cấm ngắt ngoại vi khi đặt bằng 0

+ PIR1: thanh ghi cờ yêu cầu ngắt ngoại vi, bit cờ được thiết lập TMR1IF = 1 khi tràn Timer1, bit này phải được xóa bằng phần mềm

+ PIE1: thanh ghi cho phép ngắt, bit TMR1IE là bit cho phép ngắt khi xảy ra tràn Timer1

+ IPR1: thanh ghi ưu tiên ngắt, bit ưu tiên ngắt TMR1IP = 1, ngắt tràn Timer1 được

ưu tiên ở mức cao TMR1IP = 0 ưu tiên ngắt ở mức thấp

+ TMR1L: chứa bytes thấp của bộ Timer1

+ TMR1H: chứa bytes cao của bộ Timer1

+ T1CON: là thanh ghi điều khiển Timer1

Trang 26

Trang: 26

- Sơ đồ khối Timer1

2.2 Các chế độ hoạt động của Timer1

- Chế độ Timer với nguồn xung clock lấy từ xung hệ thống Fosc/4 (xung hệ thống đưa

và đầu vào của bộ timer được chia 4)

 Chọn hệ số chia tần bằng 2 bit T1CKPS1: T1CKPS0 với các hệ số chia 1, 2, 4, 8

 T1SYNC là bit lựa chon chế độ đồng bộ cho xung ngoài, ở đây ta không cần chọn chế độ đồng bộ cho xung hệ thống đặt T1SYNC = 1

 Thiết đặt chế độ đọc/ ghi 1 lần 16 bit, hay 2 lần 8 bit

- Chế độ Timer với nguồn xung clock lấy từ bộ phát xung Timer1 được nối với hai chân (T1OSO/RC0 và T1OSI/RC1)

 T1OSCEN = 1 lựa chọn nguồn xung từ bộ phát xung ngoại ở hai chân

(T1OSO/RC0 và T1OSI/RC1)

 Chọn hệ số chia tần bằng 2 bit T1CKPS1: T1CKPS0 với các hệ số chia 1, 2, 4, 8

 T1SYNC là bit lựa chon chế độ đồng ( = 0 chế độ đồng bộ, = 1 không đồng bộ)

 Thiết đặt chế độ đọc/ ghi 1 lần 16 bit, hay 2 lần 8 bit

Trang 27

Trang: 27

- Chế độ Counter tín hiệu được đưa vào từ chân T13CKI/RC0

 Chọn hệ số chia tần bằng 2 bit T1CKPS1: T1CKPS0 với các hệ số chia 1, 2, 4, 8

 T1SYNC là bit lựa chon chế độ đồng ( = 0 chế độ đồng bộ, = 1 không đồng bộ)

 Thiết đặt chế độ đọc/ ghi 1 lần 16 bit, hay 2 lần 8 bit

- Chế độ đọc ghi 1 lần 16 bit hay 2 lần 8 bit của thanh ghi TMR1

 Khi bit RD16 = 1 (T1CON<7>) lựa chọn đọc ghi 1 lần 16 bit, khi có lệnh đọc bytes thấp TMR1L thì giá tri của bytes cao của thanh ghi TMR1 tự động được ghi vào thanh ghi TMR1H khi có lệnh ghi vào thanh ghi TMR1L thì giá trị của thanh ghi TMR1H cũng được ghi vào bytes của thanh ghi TMR1

 Khi bit RD16 = 0 (T1CON<7>) lựa chọn đọc ghi 2 lần 8 bit, lúc này ta phải

đọc/ghi lần lượt bytes cao và bytes thấp vào thanh ghi TMR1

3 TIMER2

3.1 Đặc điểm, các thanh ghi điều khiển, sơ đồ khối Timer1

- Đặc điểm của Timer2

+ Có thanh ghi đếm TMR2(timer) và thanh ghi chu kỳ PR2(period)

+ Hai thanh ghi TMR2 và PR2 có thể đọc ghi trực tiếp bằng phần mềm

+ Thiết đặt được hệ số chia tần số đầu vào(prescaler) bằng phần mềm với hệ số chia (1:1, 1:4, 1:16)

+ Thiết đặt được hệ số chia tần đầu sau bộ so sánh(postscaler) (1:1 đến 1:16)

+ Ngắt của Timer2 phụ thuộc vào bộ so sánh (Comparator) của thanh ghi TMR2 với PR2 và bộ chia tần số sau bộ so sánh

+ Đầu ra của bộ so sánh có thể được sử dụng làm xung dịch (shift clock) cho bộ MSSP hay đầu vào cho bộ PWM

- Các thanh ghi điều khiển Timer2 T2CON

Trang 28

- Các thanh ghi liên quan tới Timer2

+ INTCON: thanh ghi điều khiển ngắt

GIE/GIEH là bit cho phép ngắt khi được đặt bằng 1, cấm tất cả các ngắt khi đặt băng 0

PEIE/GIEL là bit cho phép ngắt ngoại vi khi đặt bằng 1, cấm ngắt ngoại vi khi đặt bằng 0

+ PIR1: thanh ghi cờ yêu cầu ngắt ngoại vi, bit cờ được thiết lập TMR1IF = 1 khi tràn Timer1, bit này phải được xóa bằng phần mềm

+ PIE1: thanh ghi cho phép ngắt, bit TMR1IE là bit cho phép ngắt khi xảy ra tràn Timer1

+ IPR1: thanh ghi ưu tiên ngắt, bit ưu tiên ngắt TMR1IP = 1, ngắt tràn Timer1 được

ưu tiên ở mức cao TMR1IP = 0 ưu tiên ngắt ở mức thấp

TMR2 Thanh ghi đếm Timer2 8 bit

T2CON Thanh ghi điều khiển Timer2

PR2 Thanh ghi chu kỳ của Timer2 8bit

- Sơ đồ khối Timer2

Trang 29

Trang: 29

3.2 Chế độ hoạt động của Timer2

- Nguồn xung đầu vào cho bộ đếm được đưa qua bộ chia tần số (Prescaler) với các hệ số chia 1:1, 1:4, 1:16 hệ số chia lựa chon bằng 2 bit T2CKPS1:T2CKPS0

- Thanh ghi đếm TMR2 8 bit, giá trị đếm của thanh ghi này được so sánh với giá trị của thanh ghi PR2(chứa giá trị so sánh được đặt trước)

- Bộ so sánh(Comparator), giá trị trong thanh ghi TMR2 được đếm tăng và liên tục được so sánh với PR2, khi TMR2 > PR2 đầu ra bộ so sánh sẽ reset TMR2 về 0x00 và phát ra một xung đưa vào bộ chia tần(Postscaler) đầu ra bộ chia tần số này dùng để thiết lập cờ ngắt

- Đầu ra của bộ chia tần(Postscaler) dùng để thiết lập cờ ngắt với các hệ số chia 1 đến

16, hệ số được thiết lập bằng 3 bit T2OUTPS3:T2OUTPS0

- Thời điểm cờ ngắt được thiết lập là lúc reset TMR2, bộ chia tần(Postscaler) đếm số lần reset bộ đếm TMR2 đẻ thiết lập cờ ngắt

V PWM

1 Khái niệm

PWM là phương pháp điều khiển tốc độ động cơ bằng cách thay đổi độ rộng xung, từ đó thay đổi điện áp trung bình cấp cho động cơ => điều chỉnh tốc độ động cơ theo ý muốn

Trang 30

Trang: 30

2 PWM ở pic 18f4520

18f4520 có 2 kênh PWM: CCP1 và CCP2 Các thanh ghi điều khiển hoạt động PWM ở 18f4520:

Thanh ghi CCPxCON (x= 1 hoặc 2)

DCxB1:DCxB0: 2 bit thấp (bit 0 và 1) trong 10 bit giá trị độ rộng xung PWM 8

bit cao (bit 9 đến bit 2) trong 10 bit giá trị độ rộng xung được lưu trong thanh ghi

CCPxL

Trang 31

Trang: 31

CCPxM3:CCPxM0: Chọn chế độ hoạt động cho CCPx (pwm, compare, hay

capture) ở đây ta chỉ cần quan tâm đến chế độ pwm ứng với giá trị: 11xx (x = 0 hoặc 1)

Trang 32

Trang: 32

Sơ đồ khối hoạt động PWM:

Ở 18f4520 sử dụng timer dùng cho hoạt động PWM là timer 2, tương ứng là thanh ghi PR2 để điều khiển tần số xung PWM

Trang 33

Trang: 33

Chu kì xung PWM được tạo ra được tính theo công thức:

Trong đó: PWM Period: chu kì PWM

PR2: giá trị thanh ghi PR2 do ta thiết lập ( 0 – 255)

Tosc: chu kì bộ dao động thạch anh

TMR2 Prescale Value: bộ chia timer 2 (=1:1,4,16)

Trong trình biên dịch Mplab đã hỗ trợ chúng ta thư viện điều khiển pwm Các hàm có trong thư viện <pwm.h>:

ClosePWMx(): Cấm hoạt động PWM kênh x(1 hoặc 2)

OpenPWMx(char period): Cấu hình chế độ hoạt động PWM kênh x

period: chu kì(chính là giá trị của thanh ghi PR2) chu kì pwm = (period+1)*4*Tosc*(TMR2 prescale) SetDCPWMx: Cấp giá trị độ rộng xung cho PWM (từ 0 – ((PR2+1)*4))

VI ADC

1 Khái niệm

Bộ chuyển đổi tương tự - số (Analog Digital Converter) có tác dụng chuyển đổi tín hiệu từ tương tự sang tín hiệu số Pic18f4520 có 16 chân thu tín hiệu ADC (từ AN0 -

> AN15), độ phân giải của modules ADC ở vi điều khiển này là 10 bit Có nghĩa là với

1 tín hiệu tương tự nằm trong giải từ 0v đến điện áp tham chiếu Vref (thường là VDD) sau khi chuyển đổi sẽ nằm trong khoảng 0 – 1023, theo công thức:

X = (V/Vref) * 1023

Trong đó: X: giá trị thu được sau khi convert

V: giá trị điện áp đầu vào

Vref: điện áp tham chiếu

Trang 34

Trang: 34

2 Các thanh ghi điều khiển hoạt động của ADC

Thanh ghi ADCON0:

CHS3 - CHS0: Chọn chân làm đầu vào chuyển đổi cho ADC

0000

AN0

0001 AN1

0010 AN2

0011 AN3

0100 AN4

0101 AN5

0110 AN6

0111 AN7

1000

AN8

1001 AN9

1010 AN10

1011 AN11

1100 AN12

1101 AN13

1110 AN14

1111 AN15

GO/DONE: Bit trạng thái của bộ ADC

1 = ADC đang hoạt động (đang chuyển đổi)

0 = ADC không hoạt động

0 = Cấm ADC hoạt động

Thanh ghi ADCON1:

VCFG1 và VCFG0: Chọn điện áp tham chiếu cho bộ ADC Chọn bằng 0 (Vref- = 0v;

Vref+ = VDD)

PCFG3 – PCFG0: Cấu hình các chân ADC (là ngõ vào ra số hay ngõ vào tương tự)

Trang 35

Trang: 35

Thanh ghi ADCON2:

ADFM: Định dạng kết quả của đầu ra ADC Do bộ ADC ở 18f4520 có 10 bit 1023), không thể lưu trữ trong 1 thanh ghi 8bit (ADRESH hoặc ADRESL); vì vậy kết quả sẽ được lưu 8 bit vào thanh ghi ADRESL và 2 bit còn lại được lưu vào 2 bit 0 và 1 của thanh ghi ADRESH Do đó, ta sẽ có 2 cách sắp xếp:

(0-+ Lưu 8 bit thấp của kết quả vào thanh ghi ADRESL và 2 bit còn lại (có trọng số cao) sẽ được lưu vào thanh ghi ADRESH (đây là chế độ Right justified)

Ứng với ADFM = 1

+ Lưu 8 bit cao của kết quả vào thanh ghi ADRESL và 2 bit còn lại (có trọng số thấp) sẽ được lưu vào thanh ghi ADRESH (đây là chế độ Left justified)

Ứng với ADFM = 0

Trang 37

MSSP là khối giao diện đồng bộ nối tiếp, được sử dụng để giao tiếp với các thiết

bị ngoại vi khác hoặc các vi điều khiển khác Các thiết bị ngoại vi như là EFPROM, thanh ghi dịch, điều khiển hiện thị, các khối chuyển đổi A/D,

Thanh ghi điều khiển

Khối MSSP có 3 thanh ghi liên quan đến đó là : thanh ghi trạng thái (SSPSTAT),

và 2 thanh ghi điều khiển (SSPCON1 và SSPCON2 ) Thiết lập các thanh ghi để xác định chế độ làm việc của khối MSSP là SPI hoặc I2

C

2.1 SPI

2.1.1 Giới thiệu về giao tiếp SPI

Chế độ SPI cho phép 8 bít dữ liệu được truyền và nhận đồng thời Tất cả 4 chế độ

của khối SPI đều được hỗ trợ Có 3 chân điển hình cho chuẩn giao tiếp này :

+ Ngõ ra dữ liệu dạng nối tiếp RC5/SDO

+ Ngõ vào dữ liệu dạng nối tiếp RC4/SDI/SDA

+ xung đồng bộ nối tiếp RC3/SCK/SCL

Trang 38

Trang: 38

Trong chế độ tớ chân thứ 4 có thể được sử dụng để điều khiển đó là : Chân chọn đối

Hình 1:

Biểu diễn sơ đồ khối của khối MSSP khi điều khiển trong khối SPI

2.1.2 Khởi tạo chế độ SPI

Khi khởi tạo chế độ SPI ta cần thiết đặt cho các bít SSPCON<5:0> và SSPSTAT<7:6> để cho phép các chế độ hoạt động và các đặc tính trong chế độ SPI, đó

là :

+ Chế độ chủ

+ Chế độ tớ

+ Cực tính xung clock

+ Pha lấy mẫu dữ liệu vào

+ Sườn xung clock

+ Xung nhip ( chỉ có trong chế độ chủ )

+ Lựa chọn chế độ tớ (chỉ có trong chế độ tớ )

Trang 39

Trang: 39

MSSP bao gồm thanh ghi dịch truyền nhận (SSPSR) và thanh ghi đệm (SSPBUF) , SSPSR dùng để dịch dữ liệu vào và ra, đầu tiên là bít msb Khi quá trình nhận dữ liệu sẵn sàng, dữ liệu sẽ được ghi vào SSPSR sau đó dữ liệu sẽ được giữ ở SSPBUF Khi phát hiền bộ đệm đầy cờ BF (SSPSTAT<0>) và bít cho phép ngắt được đặt lên Bộ đệm

dữ liệu 2 lớp cho phép nhận tiếp 1 byte dữ liệu trước khi đọc bất kỳ sự ghi nào tới thanh ghi SSPBUF trong thời gian truyền nhận dữ liệu sẽ bị lờ đi và bít phát hiện xung đột WCOL (SSPCON1<7>) sẽ được đặt lên Bít WCOL phải được xóa bằng phần mềm

để xác định việc ghi tiếp theo lên thanh ghi SSPBUF SSPSR không thể đọc hoặc ghi trực tiếp mà chỉ có thể truy cập thông qua thanh ghi SSPBUF

2.1.3 Thanh ghi

Khối MSSP có 4 thanh ghi điều khiển khi hoạt động ở chế độ SPI :

+ Thanh ghi điều khiển 1 ( SSPCON1)

+ Thanh ghi trạng thái ( SSPSTAT )

+ Thanh ghi đệm truyền hoặc nhận (SSPBUF)

+ Thanh ghi dịch dữ liệu ( SSPSR) ( không trực tiếp điều khiển được )

SSPCON1 và SSPSTAT là thanh ghi điều khiển và thanh ghi trạng thái trong chế độ SPI Thanh ghi SSPCON1 có thể đọc và ghi 6 bít dưới của thanh ghi SSPSTAT chỉ có thể đọc, 2 bít trên có thể đọc và ghi

Hình 2 SSPSTAT : Thanh ghi trạng thái (chế độ SPI )

Bít 7 SMP : bít lấy mẫu

SPI chế độ chủ :

1= lấy mẫu dữ liệu vào thời điểm cuối của dữ liệu ra

0= lấy mẫu dữ liệu vào thời điểm giữa của dữ liệu ra

SPI chế độ tớ :

SMP phải được xóa khi SPI được sử dụng ở chế độ tớ

Bít 6 CKE : bít chọn xung clock

1= Truyền khi xuất hiện sự chuyển tiếp từ tích cực đến trạng thái nghỉ

0= Truyền khi xuất hiện sự chuyển tiếp từ trạng thái nghỉ lên tích cực

Trang 40

Bít 0 BF : bít trạng thái báo đầy bộ đệm ( duy nhất ở chế độ truyền )

1= Truyền hoàn tất ( SSPBUF đầy )

0= Truyền không hoàn tất ( SSPBUF rỗng)

Hình 3 SSPCON1 : Thanh ghi điều khiển khối MSSP (trong chế độ SPI)

Bít 7 WCOL : bít phát hiện xung đột khi ghi

1= Thanh ghi SSPxBUF được ghi trong khi vẫn có sự truyền từ trước

0= không có sự tràn xẩy ra

Bít 5 SSPEN : bít cho phép truyền thông nối tiếp

1= cho phép cổng nối tiếp và thiết lập SCK, SDO, SDI, và SS như là các chân của cổng nối tiếp

0= không cho phép cổng nối tiếp và thiết lập các chân như là chân vào hoặc ra Bít 4 CKP : bít chọn cực tính xung clock

Ngày đăng: 05/09/2016, 00:11

TỪ KHÓA LIÊN QUAN

w