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

Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số

84 362 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 84
Dung lượng 2,15 MB

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

Nội dung

MSSP Cổng giao tiếp nối tiếp đồng bộ chủ PC Thanh ghi bộ đếm chương trình Period Chu kỳ PSP Cổng song song hoạt động ở chế độ Slave PWM Điều chế độ rộng xung SFG Thanh ghi có chức năng đ

Trang 1

1.1.2 Kiến trúc của vi điều khiển PIC 9

1.1.3 Các dòng vi điều khiển PIC: 13

Nếu phân chia theo độ rộng bus dữ liệu thì có 3 dòng vi điều khiển PIC: 13

1.1.3.1.Các dòng PIC 8bit bao gồm: 14

1.1.3.2.Vi điều khiển 16bit 15

1.1.3.2.2 Bộ điều khiển xử lý tín hiệu số 16-bit (dsPIC) 18

1.1.3.3 Vi điều khiển 32bit 20

2.2.Tài nguyên về vi điều khiển Pic 16F877A 27

2.6.ADC 43

2.7.CCP 46

PHỤ LỤC……….………72

Trang 2

DANH MỤC TỪ VIẾT TẮT

ADC Bộ chuyển đổi tương tự sang số.

ALU Bộ xử lý số học và logic

CISC Vi điều khiển có tập lệnh phức tạp CPU Bộ vi xử lý trung tâm

DMA Truy xuất bộ nhớ trực tiếp

GPR Thanh ghi mục đích chung.

MSSP Cổng giao tiếp nối tiếp đồng bộ chủ

PC Thanh ghi bộ đếm chương trình

Period Chu kỳ

PSP Cổng song song hoạt động ở chế độ Slave PWM Điều chế độ rộng xung

SFG Thanh ghi có chức năng đặc biệt

SPI Giao diện ngoại vi nối tiếp

RISC Vi điều khiển có tập lệnh đơn giản RAM Bộ nhớ truy xuất ngẫu nhiên

ROM Bộ nhớ chỉ đọc

UART Bộ truyền thông bất đồng bộ nối tiếp WDT Watchdog Timer.

IR Thanh ghi lệnh

Trang 3

DANH MỤC CÁC BẢNG

Bảng 2.1: Bit 5, 4 T1CKPS1:T1CKPS0 lựa chọn hệ số chia xung: 40

Bảng 2.2: Bảng các trường hợp đặc biệt trong ccp 47

Bảng 3.1: Bảng chức năng của LCD 16x2 54

Hình 3.12.Quan hệ giữa nhiệt độ và dữ liệu ra 63

Bảng 3.2: Một số mã lệnh thông dụng của DS18B20 66

Trang 4

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Hình 1.1.Kiến trúc Neuman 10

Hình 1.2.Kiến trúc Harvard 12

Hình 1.3.Các dòng vi điều khiển của Microchip 13

Hình 1.4.Sơ đồ khối vi điều khiển 8bit của Microchip 14

Hình 1.5.Sơ đồ khối của PIC24F 16

Hình 1.6.Sơ đồ khối của PIC24H 17

Hình 1.7.Sơ đồ khối của dsPIC 18

Hình 1.8.Sơ đồ khối củaPIC32 22

Hình 2.1.Sơ đồ bố trí chân 23

Hình 2.3.Sơ đồ bộ nhớ dữ liệu Pic16F877A 30

Hình 2.4.Sơ đồ khối Timer0 36

Hình 2.5:Thanh ghi OPTION_REG 38

Hình 2.6.Sơ đồ khối Timer1 39

Hình 2.8.Thanh ghi điều khiển Timer1 T1CON 40

Hình 2.7.Sơ đồ khối Timer2 42

Hình 2.9.Sơ khối bộ chuyển đổi ADC 45

Hình 2.10 :Các cách lưu kết quả chuyển đổi ADC 45

Hình 2.11.Sơ đồ khối ở chế độ Capture 47

Hình 2.12.Sơ đồ khối CCP(chế độ compare) 48

Hình 2.13.Sơ đồ khối CCP (PWM mode) 49

Hình 2.14.Các tham số chế độ pwm 49

Hình 2.15.Sơ đồ logic của tất cả các ngắt trong PIC 16F877A 51

Hình 3.1.Sơ đồ khối D_METER 52

Hình 3.2.Sơ đồ khối nguồn 52

Trang 5

Hình 3.3.Khối xử lý trung tâm 53

Hình 3.4.Khối hiển thị LCD 54

Hình 3.5.Khối đo điện áp 56

Hình 3.6.Khối tạo xung vuông 57

Hình 3.7.Khối đo nhiệt độ 58

Hình 3.8.IC DS18B20 59

Hình 3.9.Sơ đồ chân 60

Hình 3.10.Sơ đồ khối DS18B20 61

Hình 3.11.Format thanh ghi nhiệt độ ở chế độ 12 bit 62

Hình 3.13.Format thanh ghi TH và TL 63

Hình 3.14.Các kiểu cấp nguồn 65

Hình 3.16.Thanh ghi cấu hình 66

Hình 3.17.Thiết lập phần cứng 66

Hình 3.18.Dạng sóng khi giao tiếp 1 dây 68

Trang 6

LỜI NÓI ĐẦU

Ngày nay, chúng ta thấy có rất nhiều sản phẩm điện tử được dùngtrong công nghiệp và gia dụng như các bộ điều khiển từ xa, máy in hoá đơnđiện thoại, bộ điều chỉnh công suất tự động, máy giặt tự động hay bán tựđộng, lò vi sóng, các thiết bị đo, các thiết bị hiển thị và các sản phẩm khác.Điểm chung của các thiết bị này là phải có một linh kiện gọi là ‘vi điềukhiển’, cho phép điều khiển việc phân chia khoảng thời gian và sắp đặt trình

tự của các cơ cấu và quá trình xử lý, lưu giữ và xử lý dữ liệu trong hệ thốngđiều khiển

Việc sử dụng vi điều khiển không chỉ giảm chi phí cho quá trình tựđộng hoá mà còn làm cho quá trình trở nên linh hoạt hơn Nhà thiết kế bớtcăng thẳng hơn do việc ghép nối phức tạp với các thiết bị ngoại vi nhưADC/DAC … và có thể tập trung vào các đối tượng ứng dụng và nội dungphát triển Linh kiện này có thể lập trình được để làm cho hệ thống trở nênthông minh Điều này hoàn toàn là có thể bởi vì việc xử lý dữ liệu có liênquan đến dung lượng bộ nhớ của các vi điều khiển Các vi điều khiển cónhiều khối chức năng, có thể đáp ứng toàn bộ các yêu cầu chung của kỹ thuật

tự động hoá

Trong quá trình thực hiện đề tài, được sự hướng dẫn tận tình của thầygiáo Lê Mạnh Long và các thầy cô khác trong khoa em đã có cơ hội chuyển

kiến thức lý thuyết thành sản phẩm thực tế qua đề tài:“Ứng dụng vi điều

khiển thiết kế Volmet và bộ đếm tần số”, qua đó cũng đã hoàn thành được đề

tài của mình Tuy nhiên, với thời gian ngắn, trang thiết bị để phục vụ làm báocáo chưa đầy đủ nên báo cáo không tránh khỏi những thiếu sót và hạn chế, emrất mong nhận được sự đóng góp, góp ý kiến của các thầy và các thầy,côtrong khoa điện tử và các bạn để đồ án tốt nghiệp của em thêm hoàn thiện

Em xin chân thành cảm ơn!

Trang 7

CHƯƠNG 1: TỔNG QUAN VI ĐIỀU KHIỂN PIC

1.1 Giới thiệu về vi điều khiển PIC của Microchip

1.1.1 Vài nét về lịch sử phát triển:

PIC (Programmable Intelligent Computer) là một sản phẩm của hãngGeneral Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Vàothập kỷ 70 của thế kỷ 20, General Instrument và Honeywell kết hợp sản xuất

ra bộ vi xử lý 16 bit CP1600 Đây là một bộ vi xử lý khá mạnh vào thời điểm

đó nhưng lại hạn chế về hoạt động vào/ra PIC1650 được sản xuất để hỗ trợ vi

xử lý CP1600 trong các máy tính sử dụng bộ vi xử lý này

PIC1650 hoạt động với tập lệnh đơn giản nằm trong ROM Vào thờiđiểm đó chưa có khái niệm về RISC (Reduced Instructions Set Code), tuynhiên PIC1650 thực sự là một bộ vi điều khiển được thiết kế theo kiểu kiếntrúc RISC Tập lệnh của PIC1650 với khoảng 30 lệnh và độ dài của mỗi lệnh

là 14 bit Mỗi lệnh được PIC1650 thực hiện trong 1 chu kỳ máy (4 chu kỳ của

bộ dao động)

Năm 1985 General Instruments bán bộ phận sản xuất vi điện tử của họ

và chủ sở hữu mới hủy bỏ hầu hết các dự án liên quan (do các dự án lúc đó đãquá lỗi thời)

Năm 1989 Microchip Technology tiếp tục phát triển PIC, bắt đầu bằngviệc thêm bộ nhớ EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình.Tiếp đến là tích hợp các tính năng như ngắt , ADC (Analog DigitalConverter) để tạo thành các bộ vi điều khiển (Micocontroller)

Đến năm 1992 Microchip Technology đã cho ra đời 6 loại chip với 3dòng khác nhau:

- Dòng chip có độ dài mã lệnh bằng 12 bit gồm 4 chip PIC16C5x Cácchip này có từ 12 đến 28 chân vào/ra;

- Dòng chip độ dài mã lệnh bằng 14 bit là PIC16C71 Bộ vi điều khiểnnày đã được tích hợp thêm hai tài nguyên là ngắt và ADC

Trang 8

- Dòng chip độ dài mã lệnh bằng 16 bit là PIC17C41, tuy nhiên dòngchip này không được chú trọng phát triển vào thời điểm đó

Cùng thời gian này, hàng loạt các công cụ hỗ trợ cũng được các công tykhác nhau cho ra đời Điển hình là PICMASTER emulator, PIC Pro IIprogrammer và cả trình dịch C (C Compiler) Các công cụ này cùng với việcthay bộ nhớ OTP (one-time programmable parts) bằng bộ nhớ EEP(Electrically Erasable Parts) đã mang đến rất nhiều tiện lợi cho người lậptrình, ví dụ như: người lập trình có thể nạp mà không cần gỡ chip ra khỏimạch PIC16C84 là bộ vi điều khiển đầu tiên có bộ nhớ kiểu EEP

Không lâu sau đó Microchip Technology tiếp tục đưa vào bộ vi điềukhiển với mã lệnh dài 14 bit PIC16F877 tính năng gỡ rối (Flash debugging).Tính năng này cho phép người lập trình có thể kiểm soát từng thanh ghi, từngcâu lệnh trong chương trình Nhờ những cải tiến liên tiếp, PIC16F877 trởthành bộ vi điều khiển bán chạy nhất vào thời điểm đó (năm 1995 đến 1998).Đến năm 2000, Microchip Technology tái phát triển lại dòng chip có độ dài

mã lệnh bằng 16 bit đã có trước đó 8 năm Đại diện cho dòng chip này làPIC18F452 với tốc độ, dung lượng bộ nhớ được cải thiện và khá nhiều tínhnăng được bổ sung như các bộ định thời (Timer), truyền thông nối tiếp Dòng

vi điều khiển PIC 8 bit đã dẫn đầu về số lượng bộ bán ra mỗi năm liên tục từnăm 2002 đến nay

Trước nhu cầu về tốc độ xử lý cũng như các tính năng đặc biệt khác,Microchip Technology tiếp tục cho ra đời các dòng vi điều khiển tiên tiếnhơn như: PIC24, PIC33, dsPIC

Ngày nay đã có đến hàng chục dòng PIC với hàng trăm loại chip khácnhau Tại Việt Nam cũng như trên thế giới, họ vi điều khiển này được sửdụng khá rộng rãi Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu vàphát triển các ứng dụng như: Số lượng tài liệu, số lượng các ứng dụng mở đãđược phát triển thành công; dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉdẫn khi gặp khó khăn,…

Trang 9

1.1.2 Kiến trúc của vi điều khiển PIC.

Kiến trúc của một bộ vi điều khiển được thiết kế theo hai dạng cơ bản:Kiến trúc Von Neuman và kiến trúc Harvard (hình 1.1 và hình 1.2)

Von Neumann là một nhà toán học, vật lí người Mỹ, gốc Do thái.Năm 1944, Von Neumann làm cố vấn cho dự án chế tạo máy tính ENIAC, đểphục vụ cho các mục đích quân sự của Mỹ Năm 1945, Sau khi dự án ENIAChoàn thành, Von Neumann cùng nhóm một vài thành viên trong nhóm làmviệc của ông lại tiến hành một dự án mới, là xây dựng một máy tính hiện đạihơn Năm 1945, Von Neumann đã viết một bài báo có tính bước ngoặc vớitựa: "Bản thảo đầu tiên về máy tính EDVAC " ("The First Draft of a Report

on the EDVAC "), chứa đựng những ý tưởng về cầu trúc cơ bản mà một máytính cần có Bài báo này được Von Neumann trao đổi giới hạn với các thànhviên trong nhóm làm việc, tuy nhiên, sau đó đã được phổ biến rộng rãi và ảnhhưởng mạnh đến sự phát triển của máy tính ở Mỹ và thế giới Theo đó, cấutrúc của máy tính là sự kết hợp của các thành phần sau:

- Bộ xử lý số học và logic (ALU - Arithmetic-Logic Unit )

sẽ thực hiện nhiệm vụ này

Trang 10

Hình 1.1.Kiến trúc Neuman

Với vi điều khiển 16 bit:

- A: Thanh ghi tích lũy

- Y,Z :Temporary Register (thanh ghi đệm)

- Flags : Thanh ghi cờ

- PC : Bộ đếm chương trình (program counter)

- IR: Thanh ghi lệnh (Instruction Register)

- ALU là khối tình logic

- CPU Data Bus: đương bus dữ liệu

- Data Buffer : vùng dữ liệu đệm

Khi khối điều khiển Von Neumann bắt đầu gọi một lệnh để xử lí, nógọi tới bộ đếm chương trình (PC - Program Counter) để trỏ tới địa chỉ củalệnh trong bộ nhớ, rồi lệnh này sẽ được nạp và thực thi bởi CPU Địa chỉ của

dữ liệu cần xử lí được chứa trong chính lệnh cần thực thi Khi thực thi các

CP

U Dat a Bu s

Flags

PC IR

MAR

Data Buffer

Trang 11

lệnh, bộ đếm chương trình sẽ tăng lên để trỏ tới lệnh tiếp theo cần thực thi.Quá trình này là tuần tự, nghĩa là các lệnh được thực thi một cách tuần tự, tạimỗi thời điểm chỉ có một lệnh được thực thi (one instruction at a time) Đây

là đặc điểm tiêu biểu của kiến trúc Von Neuman

Chính kiến trúc này, như Von Neumann đã tự thừa nhận là làm giới hạntốc độ thực thi của chương trình do tại mỗi thời điểm chỉ thực thi được mộtlệnh Tình trạng này được John Backus, một người tiên phong trong lĩnh vựcmáy tính gọi là tình trạng "Thắt cổ chai Von Neumann" (Von Neumannbottleneck) Tình trạng "Thắt cổ chai von Neumann" chỉ ra rằng, tốc độ hệthống bị giới hạn do tốc độ thực thi của CPU nhanh hơn tốc độ cung cấpthông tin cho CPU từ bộ nhớ (tốc độ truy xuất bộ nhớ)

Ngày nay, có nhiều kỹ thuật nhằm giúp hạn chế tình trạng “Thắt cổchai von Neumann” như tăng độ rộng bus dữ liệu, kỹ thuật dùng bộ nhớcache, cùng các kỹ thuật tiên tiến khác, tuy nhiên, bất chấp những cải tiếntrên, kiến trúc dựa trên kiến trúc Von Neumann vẫn là kiến trúc máy tính phổbiến nhất hiện nay

Kiến trúc Harvard được nghiên cứu tại trường đại học Harvard (Mỹ),dưới sự lãnh đạo của Howard Aiken Nhóm nghiên cứu đã tách các bộ nhớ dữliệu và bộ nhớ chương trình với các bus riêng rẽ cho từng bộ nhớ, các bus nàycũng được điều hành độc lập Bởi thế, tại một thời điểm CPU có thể vừa đọc

mã lệnh, vừa đọc dữ liệu, điều này làm tăng đáng kể tốc độ xử lý của toàn hệthống Vi điều khiển PIC được thiết kế theo kiến trúc này

Trang 12

Hình 1.2.Kiến trúc Harvard

Trong đó :

- Data memory là bộ nhớ dữ liệu

- Instruction memory là bộ nhớ lệnh

- Control là khối điều khiển

- ALU là khối tính toán logic

- Các đương bus như đương bus trạng thái,đườn bus điều khiển,đườngbus lệnh,đường bus dữ liệu

Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể đượctối ưu tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vàocấu trúc dữ liệu Ví dụ, đối với vi điều khiển dòng PIC16F, độ dài mã lệnhluôn là 14 bit trong khi dữ liệu được tổ chức thành từng byte

Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điềukhiển RISC (Reduced Instruction Set Computer- vi điều khiển có tập lệnh rútgọn) Vi điều khiển được thiết kế theo kiến trúc Von-Neuman còn được gọi là

vi điều khiển CISC (Complex Instruction Set Computer - Vi điều khiển có tậplệnh phức tạp), mã lệnh của các bộ vi điều khiển này không phải là một số cốđịnh mà luôn là bội số của 8 bit (1 byte)

Trang 13

Ngoài hai kiểu kiến trúc cơ bản nêu trên, Analog Devices còn đưa ramột kiểu kiến trúc dựa trên kiến trúc Harvard, đó là SHARC (Super HarvardArchitecture) Kiến trúc này được áp dụng cho các bộ xử lý số (DSP – DigitalSignal Processing) của hãng (ví dụ như ADSP-2106x) Ngoài các đặc điểmnhư kiến trúc Harvard, SHARC được bổ sung thêm bộ nhớ đệm chỉ lệnh vàđiều khiển vào/ra nhằm cải thiện thông lượng dữ liệu Dòng vi điều khiểnDsPIC được thiết kế theo kiểu kiến trúc này.

1.1.3 Các dòng vi điều khiển PIC:

Nếu phân chia theo độ rộng bus dữ liệu thì có 3 dòng vi điều khiển PIC:

Hình 1.3.Các dòng vi điều khiển của Microchip

PIC10 PIC12 PIC16 PIC18

PIC24F

PIC24H

dsPIC30 dsPIC33

PIC32

Vi điều khiển 8bit

Vi điều khiển 32bit

Vi điều khiển 16bit

Trang 14

Đây là dòng sản phẩm bán chạy nhất của Microchip, vi điều khiển 8bit

có một số đặc điểm chính sau:

- Thiết kế theo kiến trúc Harvard

- Độ rộng bus dữ liệu: 8bit

- Mỗi lệnh được thực hiện trong 1 chu kỳ máy

- Độ rộng của bus giữa CPU và bộ nhớ chương trình có thể là 12, 14hoặc 16 bit tùy theo mục đích thiết kế của từng loại vi điều khiển

Hình 1.4.Sơ đồ khối vi điều khiển 8bit của Microchip

1.1.3.1.Các dòng PIC 8bit bao gồm:

1.1.3.1.1 PIC10

Đây là dòng PIC với độ dài mã lệnh là 12 bit, tốc độ thực hiện lệnh: 1triệu lệnh/giây Ngoài bộ nhớ (ROM và RAM) dòng PIC này còn một số tàinguyên cơ bản như: Port xuất/nhập, Timer

1.1.3.1.2 PIC12

PIC12 được chế tạo theo công nghệ nanoWatt, ngoài các tính năng nhưPIC10, dòng chip này còn được bổ sung thêm công cụ gỡ rối (debugging)tương thích với bộ công cụ MPLAB ICE-2

1.1.3.1.3 PIC16

Khác với PIC10 và PIC12 là loại vi điều khiển cỡ nhỏ (chỉ gồm 8 chân),PIC16 là loại vi điều khiển 8bit loại trung Dòng vi điều khiển này được bổsung thêm khá nhiều module như ADC, Timer, PWM, truyền thông nối tiếp

Trang 15

Ngoài ra PIC16 còn được bổ sung tính năng “tiết kiệm nguồn điện” nhờ cóthể hoạt động ở chế độ “Power Saving Sleep”.

1.1.3.1.4 PIC18

PIC18 được Microchip nâng tốc độ thực hiện lệnh lên 10 MIPS (10triệu lệnh/giây), ngoài ra dòng chip này còn được bổ sung một số tính năngnhư: Có thể hoạt động ở chế độ nghỉ (sleep mode) với dòng tiêu thụ chỉ0.1uA; có thể chuyển sang nguồn dao động dự phòng nếu nguồn dao độngchính bị hỏng

Các chip thuộc dòng 18FxxJxx còn được tích hợp thêm moduleEthernet chuẩn IEEE 802.3

1.1.3.2.Vi điều khiển 16bit

Dòng vi điều khiển 16bit của Microchip gồm PIC24 và dsPIC

1.1.3.2.1 PIC24.

PIC24 bao gồm hai dòng PIC24F và PIC24H

Một số đặc điểm chính của dòng PIC24F:

+ CPU:

- Thiết kế theo kiến trúc Harvard

- Độ rộng bus dữ liệu: 16bit, độ dài mã lệnh: 24bit

- Tốc độ thực hiện lệnh: 16 triệu lệnh/giây

- Bộ nhân phần cứng 16bit x 16bit, thực hiện lệnh nhân trong 1 chu kỳ

- Bộ chia phần cứng 32bit : 16bit

- Có hỗ trợ bộ dao động nội với tần số từ 31Khz đến 8 Mhz hoặc 32Mhz nếu qua bộ nhân 4 lần

-Được tích hợp bộ điều chỉnh điện áp, cho phép chíp có thể hoạt độngkhi điện áp nguồn bị rơi đột ngột (LDO- Low-Dropout)

- Được tích hợp chuẩn JTAG

- Có tính năng giám sát nguồn dao động, vi điều khiển sẽ chuyển sangchế độ shutdown khi bị sự cố ở nguồn xung cung cấp

- Được tích hợp Watchdog Timer với bộ dao động RC độc lập

Trang 16

Hình 1.5.Sơ đồ khối của PIC24F

+ Ngoại vi:

- 10-bit ADC, 10 kênh, tốc độ lấy mẫu: 500.210 mẫu/giây

- 03 bộ so sánh tương tự (analog comparator)

- 02 module truyền thông nối tiếp (UART), hỗ trợ các chuẩn giao tiếpLIN (Local Interconnect Network) và IrDA (Infrared Data Association)

- 02 module SPI (Serial_Peripheral_Interface_Bus)

- 02 module I2C (Inter-Integrated Circuit)

- 05 bộ Timer 16-bit

- 05 module Capture và 05 bộ PWM (Pulse Width Modulation)

- 01 module thời gian thực (RTCC - Real-Time Clock Calendar)

- Hỗ trợ giao tiếp song song (PMP - Parallel Master Port) với 16 đườngđịa chỉ và 8/16 đường dữ liệu

Trang 17

Hình 1.6.Sơ đồ khối của PIC24H

So với PIC24F thì PIC24H có thêm module DMA (Direct MemoryAccess) và 16 kênh ADC với độ phân giải 12bit

Trang 18

1.1.3.2.2 Bộ điều khiển xử lý tín hiệu số 16-bit (dsPIC)

Hình 1.7.Sơ đồ khối của dsPIC

Một số đặc tính cơ bản của dsPIC:

+ CPU:

- Tốc độ: 40 MIPS

- Dải nhiệt độ hoạt động: -40°C to +85°C

- Độ rộng bus dữ liệu: 16bit, độ dài mã lệnh: 24bit

- Không gian địa chỉ dành cho bộ nhớ chương trình lên đến 4M words,

bộ nhớ dữ liệu: 64 Kbytes

- Tập lệnh gồm 83 lệnh cơ bản

+ Module DSP:

- 16 thanh ghi công dụng chung 16bit

- Hai bộ tích lũy (Accumulator) 40bit

- Bộ nhân 16bit x 16bit

Trang 19

- Bộ chia 32bit/16bit và 16bit/16bit

- Bộ ghi dịch 40bit cho phép thực hiện các lệnh dịch/quay trong 1 chu

kỳ lệnh

- Thực hiện biểu thức gồm phép toán nhân và cộng trong 1 chu kỳ nhờ

bộ MAC ( Multiply-Accumulate Unit)

+ 8 kênh DMA với các tính năng:

- 2 Kbytes bộ đệm cho phép đọc/ghi dữ liệu từ/đến thiết bị ngoài trongkhi CPU đang thực hiện lệnh

- Hỗ trợ ngắt DMA cho các thiết bị ngoài muốn trao đổi dữ liệu kiểuDMA

- 67 nguồn ngắt với 118 vector ngắt, trong đó:

- Module WT (Watchdog Timer) được tích hợp bộ dao động RC riêng

- Được tích hợp tới 16 bộ Timer/Counter 16bit (tùy loại chip):

+ Các bộ Timer này có thể hợp thành 4 bộ Timer 32bit

+ 01 bộ Timer có thể hoạt động như đồng hồ thời gian thực (Real-TimeClock) với nguồn dao động ngoài tần số 32.768 kHz

+ 08 kênh Capture, xung đầu vào có thể là sườn lên hoặc xuống, 04 bộ đệmFIFO được trang bị cho 1 kênh

+ 08 kênh PWM 16bit

- Truyền thông nối tiếp:

+ 02 module 3-wire SPI

Trang 20

+ 02 module I2C™, hỗ trợ các chế độ chủ tớ, 7-10 bit địa chỉ, tự phát hiệnxung đột bus

+ 02 module UART, hỗ trợ ngắt khi truyền/nhận, khi xảy ra lỗi, trở lại trạnghoạt động khi đang ở chế độ ngủ (sleep mode) nếu nhận được bit start, bộđệm truyền nhận có kích thước 4 byte

+ Hỗ trợ chuẩn giao tiếp CAN (Controller Area Network) với 8 bộ đệmtruyền và 32 bộ đệm nhận

+ 08 kênh PWM hỗ trợ điều khiển động cơ

+ 01 module Encoder hỗ trợ đọc các tín hiệu pha A, pha B từ Encoder ngoài +02 module ADC, tốc độ 1.1 Mbps (ADC 10 bit) hoặc 500Kbps (ADC 12bit)

1.1.3.3 Vi điều khiển 32bit

+ CPU:

- 32 bit, kiến trúc RISC

- Xử lý song song 5 giai đoạn thực hiện lệnh (5-Stage Pipeline)

- Tần số làm việc tối đa: 80 MHz, tốc độ xử lý: 1.56 DMISP/Mhz(Dhrystone MIPS)

- Thực hiện phép nhân chia trong 1 chu kỳ

- 02 tệp thanh ghi 32 bit

- Bộ nhớ đệm (Cache) cho phép tăng tốc đọc mã lệnh từ bộ nhớ Flash + Tính năng:

- Dải điện áp hoạt động: 2.3V đến 3.6V

- Dung lượng bộ nhớ Flash: 32K đến 512Kb

- Dung lượng bộ nhớ SRAM: 8K đến 32K

+ Ngoại vi:

- 04 kênh DMA với tính năng tự động nhận dạng kích thước dữ liệu

- 01 cổng USB 2.0

Trang 21

- Xung clock cung cấp cho hệ thống có thể lấy từ bộ dao động thạchanh (10 MHz đến 40 MHz), từ bộ dao động nội (8 MHz hoặc 32 kHz); 02 bộvòng khóa pha (PLL) cho CPU và bộ điều khiển cổng USB riêng biệt.

- 02 module I2C™

- 02 module UART bao gồm: 01 module RS232 và 01 module RS485

- 01 module hồng ngoại (IrDA) hỗ trợ đọc Encoder

- Hỗ trợ trao đổi dữ liệu song song với chế độ 8/16 bit dữ liệu và 16đường địa chỉ

- 01 module thời gian thực (RTCC- Real-Time Clock/Calendar)

- 05 bộ Timers/Counters 16-bit, có hỗ trợ kết hợp hai bộ 16 bit thànhmột bộ32 bit

- 05 đầu vào Capture

Trang 22

Hình 1.8.Sơ đồ khối củaPIC32 Các tính năng tương tự (Analog):

+16 kênh ADC:

- Độ phân giải: 10bit

- Tốc độ biến đổi: 500Kbps

- Có thể biến đổi trong khi CPU đang ở chế độ Sleep hoặc Idle

- 02 bộ so sánh tương tự (Analog Comparators)

Trang 23

CHƯƠNG 2

VI ĐIỀU KHIỂN PIC 16F877A2.1 Sơ đồ chân và sơ đồ khối của PIC 16F877A.

Hình 2.1.Sơ đồ bố trí chân

Sau đây là chức năng của từng chân:

+ Chân 1 :MCLR,chân này có 2 chức năng :

- Là chân reset tích cực ở mức thấp

- Là chân cung cấp điện áp cho chip khi nạp chương trình

+ Chân 2,3 : RAX/ANX (X=0:1), các chân này có hai chức năng :

- Là chân vào ra số bình thường

- Là ngõ vào tương tự thứ X

+ Chân 4 : RA2/AN2/VREF-/CVRE,chân này có 4 chức năng :

- Là chân vào ra số bình thường

Trang 24

+ Chân 5 : RA3/AN3/VREF+,chân này có 3 chức năng :

- Là chân vào ra bình thường

- Là ngõ vào tương tụ thứ 3

- Là ngõ vào đê lấy điện áp tham chiếu (mức cao) cho bộ chuyển đổiA/D

+ Chân 6 : RA4/T0CKI/C1OUT,chân này có 3 chức năng :

- Là chân vào ra số bình thường

- Là chân lấy xung clock từ bên ngoài cung cấp cho timer0

- Là ngõ ra của bộ so sánh 1

+ Chân 7 : RA5/AN4/SS/C2OUT,chân này có 4 chức năng:

- Là chân vào ra số bình thường

- Là ngõ vào tương tự thứ 4

- Lựa chọn ngõ vào của con tớ trong giao thức SPI

- Ngõ ra của bộ so sánh 2

+ Chân 8 : RE0/RD/AN5,chân này có 3 chức năng :

- Là chân vào ra số bình thường

- Là chân điều khiển đọc cho con tớ trong giao thức song song

- Là ngõ vào tương tự thứ 5

+ Chân 9 : RE1/ WR/AN6, chân này có 3 chức năng:

- Là chân vào ra số bình thường

- Là chân điều khiển đọc cho con tớ trong giao thức song song

- Là ngõ vào tương tự thứ 6

+ Chân 10: RE2/CS /AN7,là chân có 3 chức năng:

- Là chân vào ra số bình thường

- Là chân điều khiển việc chọn chip làm con tớ trong giao thức songsong

-Là ngõ vào tương tự thứ 7

+ Chân 11: VDD là chân dương nguồn của vi điều khiển

Trang 25

+ Chân 12 : VSS là chân nguồn của vi điều khiển ,chân này được nối xuốngmass.

+ Chân 13: OSC1/CLKI, chân này có hai chức năng:

- Là chân nối với bộ giao động ngoài để cung cấp giao động cho vi điềukhiển

- Là chân lấy xung clock từ bên ngoài

+ Chân 14: OSC2/CLKO,chân này có hai chức năng:

- Là chân nối với bộ giao động bên ngoài đê cung cấp giao động cho viđiều khiển

- Là chân xuất xung clock ở chế độ giao động RC,bên trong PIC

+ Chân 15 : RC0/T1OSO/T1CKI, chân này có 3 chức năng:

- Là chân vào ra số bình thường

- Là ngõ ra giao động của timer1

- Là chân lấy xung clock cấp cho timer1

+ Chân 16 : RC1/T1OSI/CCP2,chân này có 3 chức năng :

- Là chân vào ra số bình thường

- Là ngõ vào cấp giao động cho timer1

- Là ngõ vào ở chế độ capture2,ngõ ra của chế độ compare2, là ngõ racủa khối PWM2

+ Chân 17 : RC2/CCP1,chân này có 2 chức năng:

- Là chân vào ra số bình thường

- Là ngõ vào ở chế độ capture1,là ngõ ra của bộ compare1,là ngõ ra củakhối PWM1

+ Chân 18 : RC3/SCK/SCL,chân này có 3 chức năng :

- Là chân vào ra số bình thường

- Là chân có chức năng đồng bộ loạt xung clock vào hoặc ra ở chế độSPI

-Là chân có chức năng đồng bộ loạt xung clock vào hoặc ra ở chế độ I2C

Trang 26

+ Chân 19,20,21,22,27,28,29,30 : RDX/PSPX (x=0:7) ,các chân này có 2chức năng :

- Là chân vào ra số bình thường

- Là chân dữ liệu của con tớ trong giao thức song song

+ Chân 23 : RC4/SDI/SDA,chân này có 3 chức năng:

- Là chân vào ra số bình thường

- Là chân vào dữ liệu trong chế độ SPI

- Là chân dữ liệu vào hoặc ra ở chế độ I2C

+ Chân 24: RC5/SDO, chân này có 2 chức năng:

- Chân vào ra số bình thường

- Chân xuất dữ liệu trong chế độ SPI

+ Chân 25: RC6/TX/CK,chân này có 3 chức năng:

- Là chân vào ra số bình thường

- Là chân truyền dữ liệu trong giao thức USART không đồng bộ

- Là chân cung cấp xung clock cho giao thức USART1 đồng bộ

+ Chân 26 : RC7/RX/DT,chân này có 3 chức năng :

- Là chân vào ra số bình thường

- Là chân nhân dữ liệu trong giao thức USART không đồng bộ

- Là chân dữ liệu trong giao thức USART đồng bộ

+ Chân 33 :RB0/INT ,chân này có 2 chức năng:

- Là chân vào ra số bình thường

Trang 27

2.2.Tài nguyên về vi điều khiển Pic 16F877A

+ Sử dụng công nghệ tích hợp cao RISC CPU

+ Người lập trình có thể sử dụng với 35 câu lệnh đơn giản

+ Tất cả các câu lệnh thực hiện trong một số chu kì lệnh ngoại trừ một số câulệnh rẽ nhánh thực hiện trong hai chu kì lệnh

+ Tốc độ hoạt động là :

- Xung đồng hồ vào là DC – 20Mhz

- Chu kì lệnh thực hiện trong 200ns

+ Bộ nhớ chương trình flash 8Kx14 words

+ Bộ nhớ RAM 368x8 bytes

+ Bộ nhớ EEPROM 256x8 bytes

+ Khả năng của bộ xử lý này

- Khả năng ngắt (lên tới 14 nguồn ngắt trong và ngắt ngoài)

- Ngăn nhớ STACK được phân chia làm 8 mức

- Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp

- Nguồn khởi động lại (POR)

- Bộ tạo xung thời gian (PWRT ) và bộ tao giao động (OST)

- Bộ đếm xung thời gian (WDT) với nguồn giao động trên chip (nguồngiao động RC) hoạt động đáng tin cậy

- Có mã chương trình bảo vệ

- Phương thức cất giữ sleep

- Có bảng lựa chọn giao động

+ Công nghệ CMOS FLASH /EEPROM nguồn mức thấp ,tốc độ cao

+ Thiết kế hoàn toàn tĩnh

+ Mạch chương trình nối tiếp có hai chân

+ Xử lý đọc/ghi tới bộ nhớ chương trình

+ Dải nhiệt độ công nghiệp và thuận lợi

+ Công suất tiêu thụ thụ :

- < 0.6 mA với 5v,4 Mhz

Trang 28

- 20 µA với nguồn 3V ,32 Mhz

- < 1 µ A nguồn dự phỏng

+ Các đặc tính ngoại vi bao gồm các khối chức năng sau:

- Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit

- Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năngđếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độsleep

- Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler

- Hai bộ Capture/so sánh/điều chế độ rông xung

- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI vàI2C

- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ

- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điềukhiển RD, WR, CS ở bên ngoài

+ 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 với khả năng ghi xóa được 100.000 lần

- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần

- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 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

- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân

- 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

2.3.Tổ chức bộ nhớ.

Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ

chương trình (Program memory) và bộ nhớ dữ liệu (Data Memory)

Trang 29

Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ0000h (Reset vector) Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địachỉ 0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm bộ nhớstack và không được địa chỉ hóa bởi bộ đếm chương trình

Trang 30

2.3.2.Bộ nhớ dữ liệu

Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiềubank Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank Mỗibank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệtSFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghimục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lạitrong bank Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanhghi STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiệntrong quá trình truy xuất và làm giảm bớt lệnh của chương trình Sơ đồ cụ thểcủa bộ nhớ dữ liệu PIC16F877A như sau:

Hình 2.3.Sơ đồ bộ nhớ dữ liệu Pic16F877A

Trang 31

2.3.2.1.Sau đây là một số thanh ghi đặc biệt

Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiếtlập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển

Có thể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến cácchức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiểncác khối chức năng bên ngoài (ví dụ như ADC, PWM, …) Phần này sẽ đềcập đến các thanh ghi liên quan đến các chức năng bên trong Các thanh ghidùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta đềcập đến các khối chức năng đó

Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quảthực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cầntruy xuất trong bộ nhớ dữ liệu

Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc vàghi, cho phép điều khiển chức năng pull-up của các chân trong PORTB, xáclập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếmTimer0

Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của cáckhối chức năng ngoại vi

Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh): thanh ghi cho phép đọc

và ghi, chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắtngoại vi RB0/INT và ngắt interrputon-change tại các chân của PORTB

Trang 32

Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi,các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1

Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khốichức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớEEPROM

Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại

vi, các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghiPIE2

Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độreset của vi điều khiển

2.3.2.2.Thanh ghi mục đích chung GPR

Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSG (File Select Register) Đây là các thanh ghi dữ liệu thông thường, người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình

Trang 33

Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà làmột vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL đượcthực hiện hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộđếm chương trình PC tự động được vi điều khiển cất vào trong stack Khi mộttrong các lệnh RETURN, RETLW hat RETFIE được thực thi, giá trị PC sẽ tựđộng được lấy ra từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trìnhtheo đúng qui trình định trước

Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứađược 8 địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộnhớ Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trịcất vào bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá tri 6 cất vào Stack lần thứ 2

Cần chú ý là không có cờ hiệu nào cho biết trạng thái stack, do đó takhông biết được khi nào stack tràn Bên cạnh đó tập lệnh của vi điều khiểndòng PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack

sẽ hoàn toàn được điều khiển bởi CPU

2.4.Cổng vào ra

Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng

để tương tác với thế giới bên ngoài Sự tương tác này rất đa dạng và thôngqua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện mộtcách rõ ràng

Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin),tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuấtnhập và số lượng chân trong mỗi cổng có thể khác nhau Bên cạnh đó, do viđiều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bêncạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn

có thêm các chức năng khác để thể hiện sự tác động của các đặc tính ngoại vinêu trên đối với thế giới bên ngoài Chức năng của từng chân xuất nhập trong

Trang 34

mỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua cácthanh ghi SFR liên quan đến chân xuất nhập đó

Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,PORTB, PORTC, PORTD và PORTE Cấu trúc và chức năng của từng cổngxuất nhập sẽ được đề cập cụ thể trong phần sau

2.4.1.PortA

PORTA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều”(Bidirectional Pin), nghĩa là có thể xuất và nhập được Chức năng I/O nàyđược điều khiển bởi thanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năngcủa một chân trong PORTA là input, ta “set” bit điều khiển tương ứng vớichân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng củamột chân trong PORTA là output, ta “clear” bit điều khiển tương ứng vớichân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với cácPORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA làTRISA, đối với PORTB là TRISB, đối với PORTC là TRISC, đối vớiPORTD là TRISD và đối với PORTE là TRISE) Bên cạnh đó PORTA còn làngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock củaTimer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port) Các thanh ghi SFR liên quan đến PORTA bao gồm:

+ PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA

+ TRISA (địa chỉ 85h) : điều khiển xuất nhập

+ CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh

+ CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp.+ ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC

2.4.2.PortB

PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tươngứng là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trongquá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau

Trang 35

PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tíchhợp chức năng điện trở kéo lên được điều khiển bởi chương trình

Các thanh ghi SFR liên quan đến PORTB bao gồm:

+ PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB + TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập

+ OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộTimer0

2.4.3.PortC

PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tươngứng là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ sosánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP,USART

Các thanh ghi điều khiển liên quan đến PORTC:

+ PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC

+ TRISC (địa chỉ 87h) : điều khiển xuất nhập

2.4.4.PortD

PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tươngứng là TRISD PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP(Parallel Slave Port)

Các thanh ghi liên quan đến PORTD bao gồm:

+ Thanh ghi PORTD : chứa giá trị các pin trong PORTD

+ Thanh ghi TRISD : điều khiển xuất nhập

+ Thanh ghi TRISE : điều khiển xuất nhập PORTE và chuẩn giao tiếpPSP

Trang 36

Các thanh ghi liên quan đến PORTE bao gồm:

+ PORTE: chứa giá trị các chân trong PORTE

+ TRISE: điều khiển xuất nhập và xác lập các thông số cho chuẩn giaotiếp PSP

+ ADCON1: thanh ghi điều khiển khối ADC

2.5.Timer trong PIC

Vi điều khiển PIC 16F8777A có 3 bộ Timer là : Timer0, Timer1,Timer2

2.5.1 Bộ Timer0

Hình 2.4.Sơ đồ khối Timer0.

Là bộ định thời hoặc bộ đếm có những ưu điểm nổi bật sau:

+ 8 bit cho timer hoặc bộ đếm

+ Có khả năng đọc và ghi

+ Có thể dùng đồng hồ bên trong hoặc bên ngoài

+ Có thể chọn cạnh xung của xung đồng hồ

Trang 37

+ Có hệ số chia cho xung đầu vào có thể lập trình lại bằng phần mềm.+ Ngắt tràn.

Hoạt động của Timer 0:

Timer 0 có thể hoạt động như một bộ định thời hoặc một bộ đếm Việcchọn bộ định thời hoặc bộ đếm có thể được xác lập bằng việc xoá hoặc đặt bítTOCS của thanh ghi OPTION_REG<5>

Nếu dùng hệ số chia xung đầu vào thì xoá bit PSA của thanh ghiOPTION_REG<3>

Trong chế độ bộ định thời được lựa chọn bởi việc xoá bit T0CS(OPTION REG<5>), nó sẽ được tăng giá trị sau một chu kỳ lệnh nếu khôngchọn hệ số chia xung đầu vào Và giá trị của nó được viết tới thanh ghiTMR0

Chế độ đếm được lựa chọn bởi việc set bit T0CS (OPTION REG<5>).Trong chế độ bộ đếm, nó sẽ được tăng ở xung đi xuống nếu xoá bitT0SE(OPTION_REG<4>) hoặc ở xung đi lên nếu set bit T0SE Và giá trị của

nó được viết tới thanh ghi TMR0

Khi dùng xung clock bên ngoài cho bộ định thời Timer0 và không dùng

hệ số chia clock đầu vào Timer0 thì phải đáp ứng các điều kiện cần thiết để cóthể hoạt động đó là phải bảo đảm xung clock bên ngoài có thể đồng bộ vớipha xung clock bên trong (TOSC)

Các hệ số chia

Hệ số chia dùng cho Timer 0 hoặc bộ WDT Các hệ số nμy không cókhả năng đọc vμ khả năng viết Để chọn hệ số chia xung vào Timer0 hoặc cho

bộ WDT ta tiến hành xoá hoặc đặt bit PSA của thanh ghi OPTION_REG<3>

Những bit PS2, PS1, PS0 của thanh ghi OPTION_REG<2:0> dùng đểxác lập các hệ số chia

Ngắt của bộ Timer0

Ngắt của bộ Timer 0 được phát sinh ra khi thanh ghi TMR0 bị tràn tức

từ FFh quay về 00h Khi đó bít T0IF của thanh ghi INTCON<2> sẽ được set

Trang 38

Bít này phải được xóa bằng phần mềm nếu cho phép ngắt bit T0IE của thanhghi INTCON<5> được set Timer0 bị dừng hoạt ở chế độ SLEEP, ngắt Timer

0 không đánh thức bộ xử lý ở chế độ SLEEP

Hình 2.5:Thanh ghi OPTION_REG.

+ Bit 5: TOCS lựa chọn nguồn clock

1 = Clock ngoài từ chân T0CKI

0 = Clock trong Focs/4

+ Bit 4: T0SE bit lựa chon sườn xung clock

1 = Timer 0 tăng khi chân T0CKI tử cao xuống thấp(sườn âm)

0 = Timer 0 tăng khi chân T0CKI tử thấp lên cao(sườn dương)

+ Bit 3: PSA bit gán bộ chia xung đầu vào

1 = gán bộ chia Prescaler cho WDT

0 = gán bộ chia Prescaler cho Timer 0

Bảng 2.3: Bit 2:0 PS2:PS1 lựa chọn hệ số chia xung

Trang 39

2.5.2 Bộ Timer1

Hình 2.6.Sơ đồ khối Timer1

Bộ Timer1 có thể là bộ đếm hoặc bộ định thời với ưu điểm sau:

+ 16 bít cho bộ đếm hoặc bộ định thời (gồm hai thanh ghiTMR1H:TMR1L)

+ Có khả năng đọc và ghi

+ Có thể chọn xung đồng hồ bên trong hoặc đồng hồ bên ngoài

+ Có thể ngắt khi tràn FFFFh về 0000h

Timer1 có 1 thanh ghi điều khiển, đó là thanh ghi T1C0N Bộ Timer1

có hoạt động hay không hoạt động là nhờ việc đặt hoặc xoá bítTMR1ON(T1CON<0>)

Hoạt động của bộ Timer1

Nó có thể hoạt động ở một trong các chế độ sau:

Trang 40

T1SYNC(T1CON<2>), không đồng bộ xung vào set bitT1SYNC(T1CON<2>) Timer 1 tăng ở sườn lên xung đầu vào

Khi bộ dao động Timer1 cho phép hoạt động thì các chânRC1/T1OSI/CCP2, RC0/T1OSO/T1CKI trở thành chân vào

Ở chế độ đếm có đồng bộ bộ đếm tăng mỗi khi sườn lên ở chân RC0hoặc ở chân RC1 nếu bit T1OSCEN xoá và xung vào phải đồng bộ với clocktrong, ở chế độ này bộ đếm không tăng trong trạng thái SLEEP

Ở chế độ đếm không đồng bộ Timer 1 tăng mỗi khi sườn lên ở chânRC0 hoặc ở chân RC1 nếu bit T1OSCEN xoá, ở chế độ này bộ đếm tiếp tụctăng trong trạng thái SLEEP và có khả năng tràn gây ra ngắt khi đó bộ xử lýđược đánh thức

Dao động của Timer1

Mạch dao động thạch anh được xây dựng giữa 2 chân T1OSI vàT1OS0 Khi dao động được cung cấp ở chế độ công suất thấp thì tần số cựcđại của nó sẽ là 200kHz và trong nó ở chế độ SLEEP nó cung cấp ở tần số32kHz

Ngắt của bộ Timer1

Cặp thanh ghi TMR1H và TMR1L tăng từ giá trị 0000h đến giá trịFFFFh đến giá trị này tiếp tục tăng thì tràn và quay lại giá trị 0000h Và ngắtxuất hiện khi tràn quá giá trị FFFFh khi này cờ ngắt TMR1IF sẽ được Set

Ngắt có thể hoạt động hoặc không hoạt động nhờ việc đặt hoặc xoá bít

Ngày đăng: 08/05/2015, 01:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
11.TUT040.2 “Mạch phát triển PIC16F877A” – Phạm Đức Mạnh http://picvietnam.com/forum Sách, tạp chí
Tiêu đề: Mạch phát triển PIC16F877A” – Phạm Đức Mạnh
12. “Vi điều khiển PIC – Học nhanh đi vào ứng dụng” – Falleaf, diễn đàn picvietnam.com Sách, tạp chí
Tiêu đề: Vi điều khiển PIC – Học nhanh đi vào ứng dụng
13. “Tài liệu sử dụng CCS tiếng Việt” – Trần Xuân Trường, ĐHBK TP HCM 14. “PIC16F877A Datasheet” – http://www.microchip.com Sách, tạp chí
Tiêu đề: Tài liệu sử dụng CCS tiếng Việt” – Trần Xuân Trường, ĐHBK TP HCM14. “PIC16F877A Datasheet” –
15. “MIDRANGE PICmicro FAMILY” - http://www.microchip.com 16. “Giáo trình điện tử cơ bản” - www.EmbestDKS.com Sách, tạp chí
Tiêu đề: MIDRANGE PICmicro FAMILY” - "http://www.microchip.com"16. “Giáo trình điện tử cơ bản” -
1.Kiều Xuân Thực, Vũ Thị Thu Hương, Vũ Trung Kiên,Vi điều khiển cấu trúc lập trình và ứng dụng Khác
2.Lâm Tăng Đức- Lê Tiến Dũng,Giáo trình môn kỹ thuật vi điều khiển Khác
3. Trần Quang Vinh, Chử Văn An, Nguyên lý kỹ thuật điện tử,NXB Giáo dục, Hà Nội - 2005 Khác
4. Ngô Diên Tập, Kỹ thuật vi điều khiển với AVR, NXB Khoa học và Kỹ thuật, Hà Nội - 2003 Khác
6.PGS.TS.Nguyễn Duy Bảo, Th.s.Lê xuân Bằng - Kĩ thuật vi xử lý Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.3.Các dòng vi điều khiển của Microchip - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 1.3. Các dòng vi điều khiển của Microchip (Trang 13)
Hình 1.4.Sơ đồ khối vi điều khiển 8bit của Microchip 1.1.3.1.Các dòng PIC 8bit bao gồm: - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 1.4. Sơ đồ khối vi điều khiển 8bit của Microchip 1.1.3.1.Các dòng PIC 8bit bao gồm: (Trang 14)
Hình 1.5.Sơ đồ khối của PIC24F - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 1.5. Sơ đồ khối của PIC24F (Trang 16)
Hình 1.7.Sơ đồ khối của dsPIC - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 1.7. Sơ đồ khối của dsPIC (Trang 18)
Hình 1.8.Sơ đồ khối củaPIC32 Các tính năng tương tự (Analog): - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 1.8. Sơ đồ khối củaPIC32 Các tính năng tương tự (Analog): (Trang 22)
2.1. Sơ đồ chân và sơ đồ khối của PIC 16F877A. - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
2.1. Sơ đồ chân và sơ đồ khối của PIC 16F877A (Trang 23)
Hình 2.3.Sơ đồ bộ nhớ dữ liệu Pic16F877A - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.3. Sơ đồ bộ nhớ dữ liệu Pic16F877A (Trang 30)
Hình 2.4.Sơ đồ khối Timer0. - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.4. Sơ đồ khối Timer0 (Trang 36)
Hình 2.6.Sơ đồ khối Timer1 - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.6. Sơ đồ khối Timer1 (Trang 39)
Hình 2.7.Sơ đồ khối Timer2. - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.7. Sơ đồ khối Timer2 (Trang 42)
Hình 2.9.Sơ khối bộ chuyển đổi ADC. - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.9. Sơ khối bộ chuyển đổi ADC (Trang 45)
Hình 2.10 :Các cách lưu kết quả chuyển đổi ADC. - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.10 Các cách lưu kết quả chuyển đổi ADC (Trang 45)
Bảng 2.2: Bảng các trường hợp đặc biệt trong ccp - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Bảng 2.2 Bảng các trường hợp đặc biệt trong ccp (Trang 47)
Hình 2.13.Sơ đồ khối CCP (PWM mode) - Ứng dụng vi điều khiển thiết kế volmet và bộ đếm tần số
Hình 2.13. Sơ đồ khối CCP (PWM mode) (Trang 49)

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