Tải bản đầy đủ - 0 (trang)
2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC

2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC

Tải bản đầy đủ - 0trang

+



Bộ giải mã lệnh và điều khiển, xác định các thao tác mà CPU cần thực



hiện.

Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi.

Thanh ghi PC, lưu giữ địa chỉ của lệnh kế tiếp cần thực thi.

Một tập các thanh ghi dùng để lưu thông tin tạm thời.

ROM: là bộ nhớ dùng để lưu giữ chương trình. ROM còn dùng để chứa số



+

+

+





liệu, các tham số hệ thống, các số liệu cố định của hệ thống. Trong q trình

hoạt động nội dung ROM là cố định, khơng thể thay đổi, nội dung ROM chỉ





thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình.

RAM: là bộ nhớ dữ liệu. Bộ nhớ RAM dùng làm môi trường xử lý thông

tin, lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép tốn,

xử lí thơng tin. Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các







thao tác thu phát, chuyển đổi dữ liệu.

BUS: là các đường dẫn dùng để di chuyển dữ liệu. Bao gồm: bus địa chỉ,









bus dữ liệu và bus điều khiển.

BỘ ĐỊNH THỜI: được sử dụng cho các mục đích chung về thời gian.

WATCHDOG: bộ phận dùng để reset lại hệ thống khi hệ thống gặp “bất







thường”.

ADC: bộ phận chuyển tín hiệu analog sang tín hiệu digital. Các tín hiệu bên

ngồi đi vào vi điều khiển thường ở dạng analog. ADC sẽ chuyển tín hiệu

này về dạng tín hiệu digital mà vi điều khiển có thể hiểu được.



2.2. 2 Kiến trúc vi điều khiển PIC

20 Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng cấu trúc:



kiến trúc von- Neuman và kiến trúc Havard.

21



16



22 Hình 2.3: Kiến trúc Harvard và kiến trúc von-Neumann

23 Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Harvard. Điểm khác



biệt giữa kiến trúc Harvard và kiến trúc Von-Neumann là cấu trúc bộ nhớ dữ liệu và bộ

nhớ chương trình.

24 Đối với kiến trúc Von-Neumann, bộ nhớ dữ liệu và bộ nhớ chương trình nằm



chung trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ

chương trình và bộ nhớ dữ liệu. Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của

CPU phải rất cao, vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể tương

tác với bộ nhớ dữ liệu hoặc bộ nhớ chương trình. Như vậy có thể nói kiến trúc VonNeumann khơng thích hợp với cấu trúc của một vi điều khiển.

25 Đối với kiến trúc Harvard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành



hai bộ nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai

bộ nhớ, như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể.

26 Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Harvard có thể được tố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ào cấu trúc dữ liệu.

Ví dụ, đối với vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ liệu

được tổ chức thành từng byte), còn đối với kiến trúc Von-Neumann, độ dài lệnh luôn là

bội số của 1 byte (do dữ liệu được tổ chức thành từng byte).

2.2. 3 Risc Và Cisc

27 Như đã trình bày ở trên, kiến trúc Harvard là khái niệm mới hơn so với kiến



trúc Von-Neumann. Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của

một vi điều khiển. Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu, bus

chương trình và bus dữ liệu, CPU có thể cùng một lúc truy xuất cả bộ nhớ chương

trình và bộ nhớ dữ liệu, giúp tăng tốc độ xử lí của vi điều khiển lên gấp đơi. Đồng thời

cấu trúc lệnh khơng còn phụ thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều

chỉnh tùy theo khả năng và tốc độ của từng vi điều khiển. Và để tiếp tục cải tiến tốc độ

thực thi lệnh, tập lệnh của họ vi điều khiển PIC được thiết kế sao cho chiều dài mã

lệnh luôn cố định (ví dụ đối với họ 16Fxxxx chiều dài mã lệnh luôn là 14bit) và cho

phép thực thi lệnh trong một chu kì của xung clock (ngoại trừ một số trường hợp đặc

17



biệt như lệnh nhảy, lệnh gọi chương trình con…cần hai chu kì xung đồng hồ). Điều

này có nghĩa tập lệnh của vi điều khiển thuộc kiến trúc Harvard sẽ ít lệnh hơn, ngắn

hơn, đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh bằng một số lượng bit nhất định.

28 Vi điều khiển được tổ chức theo kiến trúc Harvard còn được gọi là vi điều



khiển RISC (Reduced Instrucsion Set Computer) hay vi điều khiển có tập lệnh rút gọn.

Vi điều khiển được thiết kế theo kiến trúc Von-Neumann còn được gọi là vi điều khiển

CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp vì

mã lệnh của nó khơng phải là một số cố định mà luôn là bội số của 8 bit (1byte).

2.2. 4 Pipelining

29 Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC. Một chu kì lệnh của



vi điều khiển sẽ bao gồm 4 xung clock. Ví dụ ta sử dụng oscillator có tần số 4MHz, thì

xung lệnh sẽ có tần số 1MHz (chu kì lệnh sẽ là 1us). Giả sử ta có một đoạn chương

trình như sau:

1.

2.

3.

4.

5.



MOVLW

55h

MOVWF

PORTB

CALL

SUB_1

BSF

PORTA.BIT3

instruction@address SUB_1



30 Ở đây ta chỉ bàn đến qui trình vi điều khiển xử lí đoạn chương trình trên thơng



qua từng chu kì lệnh. Q trình trên sẽ được thực thi như sau:



31



32 Hình 2.4: Cơ chế pipelining

18



-



TCY0: đọc lệnh 1

TCY1: thực thi 1, đọc lệnh 2

TCY2: thực thi lệnh 2, đọc lệnh 3

TCY3: thực thi lệnh 3, đọc lệnh 4.

TCY4: vì lệnh 4 khơng phải là lệnh sẽ được thực thi theo qui trình thực thi của

chương trình (lệnh tiếp theo được thực thi phải là lệnh đầu tiên tại label

SUB_1) nên chu kì thực thi lệnh này chỉ được dùng để đọc lệnh đầu tiên tại



-



label SUB_1. Như vậy có thể xem lệnh 3 cần 2 chu kì xung clcok để thực thi.

TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1.

Quá trình này được thực hiện tương tự cho các lệnh tiếp theo của chương

trình.



33 Thơng thường, để thực thi một lệnh, ta cần một chu kì lệnh để gọi nó, và một



chu kì xung clock nữa để giãi mã và thực thi lệnh. Với cơ chế pipelining được trình

bày ở trên, mỗi lệnh xem như chỉ được thực thi trong một chu kì lệnh. Đối với các lệnh

mà quá trình thực thi nó làm thay đổi giá trị thanh ghi PC (Program Counter) cần hai

chu kì lệnh để thực thi vì phải thực hiện việc gọi lệnh ở địa chỉ thanh ghi PC chỉ tới.

Sau khi đã xác định đúng vị trí lệnh trong thanh ghi PC, mỗi lệnh chỉ cần một chu kì

lệnh để thực thi xong.

34

2.2. 5 Các dòng pic và cách lựa chọn vi điều khiển pic

35 Các kí hiệu của vi điều khiển PIC:

-



PIC12xxxx: độ dài lệnh 12bit.

PIC16xxxx: độ dài lệnh 14bit.

PIC18xxxx: độ dài lệnh 16bit.

C: PIC có bộ nhớ EEPROM (chỉ có 16C84 là EEPROM).

F: PIC có bộ nhớ FLASH.

LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp.

LV: tương tự như LF, đây là kí hiệu cũ.



36 Bên cạnh đó một số vi điều khiển có kí hệu xxFxxx là EEPROM, nếu có thêm



chữ A ở cuối là flash (ví dụ PIC16F877 là EEPRPOM, còn PIC16F887A là flash).

37 Ngồi ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC.



19



38 Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản



xuất.

39 Cách lựa chọn một vi điều khiển PIC phù hợp:

-



Trước hết cần chú ý đến số chân của vi điều khiển PIC cần thiết cho ứng dụng.

Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều



-



khiển chỉ có 8 chân, ngồi ra còn có các vi điều khiển 28, 40, 44,… chân.

Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình



-



được nhiều lần hơn.

Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều



-



khiển, các chuẩn giao tiếp bên trong.

Sau cùng cần chú ý đến các khối bộ nhớ chương trình mà vi điều khiển cho



-



phép.

Ngồi ra mọi thơng tin về cách lựa chọn vi điều khiển PIC có thể được tìm

thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp.

40



2.2. 6 Ngơn ngữ lập trình

41 Ngơn ngữ lập trình cho PIC rất đa dạng. Ngơn ngữ lập trình cấp thấp có



MPLAB (được cung cấp miễn phí bởi nhà cung cấp Microchip), các ngơn ngữ lập

trình cấp cao hơn bao gồm C, Basic, Pascal,…Ngồi ra còn có một số ngơn ngữ lập

trình được phát triển rieng dành cho PIC như PICBasic, MicroBasic…

2.2. 7 Giới thiệu về vi điều khiển sử dụng trong mạch PIC18F4520

42



20



43



44 Hình 2.5: PIC18F4520



21



45

46 Hình 2.6: Sơ đồ chân PIC18F4520

22



47 Chức năng các chân:

-



Chân (1) /VPP/RE3:

• : là đầu vào Master Clear (reset) hoạt động ở mức thấp để reset tồn bộ thiết







bị.

VPP: dùng để thay đổi điện áp đầu vào.

RE3: đầu vào số.



48 Các chân thuộc cổng vào ra của Port A

-



Chân (2) RA0/AN0:

RA0 là cổng vào ra số

AN0 là đầu vào tương tự Input0.

Chân (3) RA1/AN1:

• RA1 là cổng vào ra số

• AN1 là đầu vào tương tự Input1.

Chân (4) RA2/AN2/VRFF-/CVREF:

• RA2 là cổng vào ra số.

• AN2 là đầu vào tương tự Input2.

• VRFF- là đầu vào tương tự chuyển đổi A/D điện áp tham chiếu (mức thấp).

• CVREF là đầu ra tương tự để so sánh điện áp chuẩn.

Chân (5) RA3/AN3/VRFF+:

• RA3 là cổng vào ra số.

• AN3 là đầu vào tương tự Input3.

• VRFF+ là đầu vào tương tự chuyển đổi A/D điện áp tham chiếu (mức cao).

Chân (6) RA4/T0CKI/C1OUT:

• RA4 là đầu vào ra số.

• T0CKI là đầu vào xung bên ngồi của Timer0.

• C1OUT là đầu ra bộ so sánh 1.

Chân (7) RA5/AN4/HLVDIN/C2OUT:

• RA5 là cổng vào ra số.

• AN4 là đầu vào tương tự Input4, chọn đầu vào phụ thuộc SPI.

• HLVDIN là đầu vào tương tự để dò điện áp.

• C2OUT là đầu ra bộ so sánh 2.

Chân (13) OSC1/CLKI/RA7:

• OSC1 là đầu vào bộ dao động thạch anh hoặc là đầu vào nguồn cung bên







-



-



-



-



-



-



ngồi, khi ta nối dây với các thiết bị tương tự thì đầu vào này dạng ST





-



(Schmitt Trigger Input With CMOS levels).

CLKI là đầu vào CMOS cho nguồn xung bên ngoài và luôn được phép nối

với chân OSC1.

RA7 là chân vào ra sử dụng chung.

Chân (14) OSC2/CLKO/RA6:

23







OSC2 là đầu ra bộ dao động thạch anh được nối với thạch anh hoặc bộ cộng









hưởng để lựa chọn dạng bộ dao động thạch anh.

CLK0 có tần số bằng ¼ tần số của OSC1 độ rộng chu kì lệnh.

RA6 là đầu vào ra chung



49 Các chân cổng vào ra hai chiều PORT B. PORT B có thể lập trình bằng phần



mềm khi cho kéo đầu vào bên trong yếu lên trên toàn bộ đầu vào.

-



-



-



-



-



-



-



-



Chân (33) RB0/INT0/FLT0/AN12:



RB0 là cổng vào ra số.

• INT0 là đầu vào ngắt Interrupt 0

• FLT0 là đầu vào báo lỗi PWM được tăng cường CCP1.

• AN12 là đầu vào tương tự Input12.

Chân (34) RB1/INT1/AN10:

• RB1 là đầu vào ra số.

• INT1 là đầu vào ngắt ngồi Interrupt1

• AN10 đầu tương tự Input 10.

Chân RB4 (37), RB5 (38): xuất nhập số.

Chân (35) RB2/INT2/AN8:

• RB2 là đầu vào ra số

• INT2 là đầu vào ngắt ngồi Interrupt2.

• AN8 là đầu tương tự Input 8.

Chân (36) RB3/AN9/CCP2:

• RB3 là đầu vào ra số

• AN9 là đầu tương tự Input 9.

• CCP2 (Capture 2 Input/Compare 2 output/PWM2 Output).

Chân (37) RB4/KBI0/AN11:

• RB4 là đầu vào ra số

• KBI0 thay đổi mở ngắt.

• AN11 là đầu tương tựu Input9.

Chân (38) RB5/KBI1/PGM:

• RB5 là đầu vào ra số.

• KBI1 thay đổi mở ngắt.

• PGM cho phép có thể lập trình ISCPTM ở điện áp thấp.

Chân (39) RB6/KBI2/PGC:

• RB6 là đầu vào ra số

• KBI2 thay đổi mở ngắt.

• PGC chân dùng trong mạch chạy và xung lập trình ICSP.

Chân (40) RB7/KBI3/PGD:

• BR7 là đầu vào ra số.

• KBI23 thay đổi mở ngắt.

• PGD chân dùng trong mạch chạy và xung lập trình ICSP.

24



50 Các chân cổng PORT C

-



-



-



-



-



-



-



-



Chân (15) RC0/ T1OSO/T13CKI:

• RC0 là đầu vào ra số.

• T1OSO là đầu ra bộ dao động Timer1

• T13CKI là đầu vào xung bên ngồi Timer1/Timer3.

Chân (16) RC1/T1OSI/CCP2:

• RC1 là đầu vào ra số.

• T1OSI là đầu vào bộ dao động Timer1.

• CCP2 (Capture 2 Input/Compare 2 Output/PWM2 Output).

Chân (17) RC2/CCP1/P1A:

• RC2 là đầu vào ra số

• CCP1 (Capture1 input/Compare 1 output/PWM1 output).

• P1A là đầu ra tang cường CCP1.

Chân (18) RC3/SCK/SCL:

• RC3 là đầu vào ra số.

• SCK là đầu vào ra đưa chuỗi xung vào ra cho SPI lựa chọn.

• SCL là đầu vào ra đưa chuỗi xung vào ra cho I2CTM lựa chọn.

Chân (23) RC4/SDI/SDA:

• RC4 là đầu vào ra số.

• SDI đầu vào dữ liệu API.

• SDA đầu vào ra dữ liệu cho I2C.

Chân (24) RC5/SDO:

• RC5 là đầu vào ra số.

• SDO là đầu ra dữ liệu SPI.

Chân (25) RC6/TX/CK:

• RC6 là đầu vào ra số

• TX là đầu ra chuyển đổi dị bộ EUSARRT.

• CK đầu vào ra xung đồng bộ EUSART.

Chân (26) RC7/RX/TD:

• RC7 là đầu vào ra số.

• RX là đầu vào nhận dị bộ EUSART.

• DT là đầu vào ra dữ liệu đồng bộ EUSART.



51 Các chân cổng PORT D (PORTD có thể vào ra hai hướng hoặc cổng song song



phụ thuộc (PSP) cho giao diện vi xử lý và khi đó các đầu vào phải là TTL.

Chân (19) RD0/PSP0:

RD0 là đầu vào ra số.

PSP0 là cổng dữ liệu song song phụ thuộc.

Chân (20) RD1/PSP1:

• RD1 là đầu vào ra số.

• PSP1 là cổng dữ liệu song song phụ thuộc.

Chân (21) RD2/PSP2:

-









25



RD2 là đầu vào ra số.

PSP2 là cổng dữ liệu song song phụ thuộc.

Chân (22) RD3/PSP3:

• RD3 là đầu vào ra số.

• PSP3 là cổng dữ liệu song song phụ thuộc.

Chân (27) RD4/PSP4:

• RD4 là đầu vào ra số.

• PSP4 là cổng dữ liệu song song phụ thuộc.

Chân (28) RD5/PSP5/P1B:

• RD5 là đầu vào ra số.

• PSP5 là cổng dữ liệu song song phụ thuộc.

• P1B là đầu ra tăng cường CCP1.

Chân (29) RD6/PSP6/P1C:

• RD6 là đầu vào ra số.

• PSP6 là cổng dữ liệu song song phụ thuộc.

• P1C là đầu ra tăng cường CCP1.

Chân (30) RD7/PSP7/P1D:

• RD7 là đầu vào ra số.

• PSP7 là cổng dữ liệu song song phụ thuộc.

• P1D là đầu ra tăng cường CCP1.







-



-



-



-



-



52 Các chân cổng PORT E



Chân (8) RE0/RD/AN5:

RE0 là đầu ra vào số.

RD là đầu vào điều khiển đọc cho cổng PSP.

AN5 là đầu vào tương tự Input5.

Chân (9) RE1/WD/AN6:

• RE1 là đầu vào ra số.

• WR là đầu vào điều khiển viết dữ liệu cổng PSP.

• AN6 là đầu vào tương tự input6.

Chân (10) RE2/CS/AN7:

• RE2 là đầu vào ra số.

• CS là điều khiển chọn chip cho cổng PSP.

• AN7 là đầu vào tương tự input7.

Đầu RE3 nằm ở chân 1.

-











53 Các chân khác.

-



Chân 12, 31 (VSS): nối đất chẩn cho I/O và logic.

Chân 11, 32 (VDD): cung cấp nguồn dương cho I/O và logic.



26



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC

Tải bản đầy đủ ngay(0 tr)

×