Trong kiến trúc Harvard, bộ nhớ dữ liệu và bộ nhớ chương trình nằm riêng biệt, do đó CPUcó thể làm việc trực tiếp với cả hai bộ nhớ dữ liệu và bộ nhớ chương trình cùng một lúc, làm cho
Trang 1THỰC HÀNH VI XỬ LÝ
Giảng viên biên soạn: TS Ngô Quang Vĩ
Hà Nội: 2/2021
TRƯỜNG ĐẠI HỌC THỦY LỢI
Khoa Điện – Điện tử
BÀI GIẢNG
Bộ môn: KTĐK&TĐH
Trang 2CHƯƠNG 1 TÌM HIỂU KIT dsPIC
Trang 3VI ĐIỀU KHIỂN
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General Instrument
PIC bắt nguồn là chữ viết tắt của
"Programmable Intelligent Computer" (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650
Trang 4 CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600
PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động)
Trang 5 Năm 1985 General Instrument bán bộ phận 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 - lúc đó đã quá lỗi thời
PIC được bổ sung EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC ), với bộ nhớ chương trình từ 512 Word đến 32K Word
Trang 6 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi
FLASH và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
Các cổng Xuất/Nhập (I/O ports) (mức logic thường
từ 0V đến 5.5V, ứng với logic 0 và logic 1)
8/16 Bit Timer
Công nghệ Nanowatt
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:
Trang 7 Các chuẩn Giao Tiếp Ngoại vi nối
Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
Bộ so sánh điện áp (Voltage Comparators)
MSSP Peripheral dùng cho các giao tiếp I²C, SPI,
và I²S
Trang 8 Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần FLASH (dùng cho bộ nhớ chương trình) có thể
ghi/xóa 10.000 lần (tiêu biểu)
Module Đ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
Trang 9 Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IRDA
Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC)
KEELOQ Mã hoá và giải mã
DSP những tính năng xử lý tín hiệu số (dsPIC)
Trang 11 dsPIC33F
Bộ điều khiển xử lý tín hiệu số 32-bit (PIC32)
PIC32 (công bố ngày 05/11/2007)
Kiến trúc Harvard của vi điều khiển PIC
Trang 12 PIC được tổ chức phần cứng theo kiến trúc
instruction set computer )
Trong kiến trúc Harvard, bộ nhớ dữ liệu và bộ
có thể làm việc trực tiếp với cả hai bộ nhớ dữ
cho tốc độ xử lý nhanh hơn
Việc bộ nhớ chương trình và bộ nhớ dữ liệu được tách riêng, do đó, 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
Trang 13 Bằng chứng, độ dài lệnh của dòng PIC16 luôn luôn là 14 bit Trong khi đó, độ dài lệnh của các vi điều khiển kiến trúc von-Neumann là bội số của 1 byte (8 bit)
PIC là một Vi điều khiển RISC, tập lệnh của PIC chỉ có 35 lệnh , phần lớn các lệnh này chỉ thực hiện trong một chu kỳ máy Chính nhờ kiến trúc phần cứng tiên tiến, PIC tỏ ra vượt trội so với các loại Vi điều khiển 8 bít khác về
Trang 14Cấu trúc Harvard
Trang 15Giới thiệu về Kit DSPIC80
Trang 16 Đây là Board phát triển 16-bit cho dsPIC 8 0-pin, phù hợp với dsPIC30F6014A , PIC24FJ96GA008, dsPIC33FJ128GP708 và các chip có chân tương thích với 3 dòng chíp trên
Các thành phần ngoại vi nhiều và thiết kế theo hướng mở rộng linh hoạt , là công cụ hỗ trợ rất tốt cho các kỹ sư lập trình Microchip 16-bit MCU
Dễ sử dụng và phát triền cho người mới bắt đầu cũng như các kỹ sư giàu kinh nghiệm
Trang 17Tài nguyên Board:
1) Mô-đun cấp nguồn, Nhảy chọn VDD cho 5V hoặc 3.3V 2) Mô-đun chip điều khiển chính
3) Cổng ICSP Connect, nó có thể kết nối icd2 / icd3 /
pickit2 cho chương trình hoặc gỡ lỗi
4) Chọn chip điều khiển chính ICSP I / O Chân chọn
Trang 189) Mô-đun nhiệt kế kỹ thuật số DS18B20
10) Mô-đun đồng hồ thời gian thực của PCF8583 11) LCD 16 * 2 ký tự
Trang 1917) Mô-đun bus CAN của mcp2551
18) Mô-đun RS232 B
19) Mô-đun RS232 A
20) Mô-đun giao tiếp RS-485 và RS-422 của
MAX489E
21) Mô-đun Ethernet của ENC28J60
22) Bộ giải mã băng tần Si3000 với giắc cắm MIC vào / loa.
23) Tất cả các chân được lấy ra trên đầu nối IDC10
để làm cho chúng có sẵn cho các kết nối tiếp theo
Trang 20Giới thiệu về dòng vi xử lý DSPIC 30F6014
DSPIC30F6014A là một chip vi xử lý được sử dụng
phổ biến của dòng DSPIC30 ( bên cạnh còn có DSPIC30F6014 và DSPIC30F6010A cũng được sử dụng nhiều) Các đặc trưng cơ bản của DSPIC30F6014A:
CPU RISC được sửa đổi hiệu suất cao:
Kiến trúc Harvard sửa đổi
Kiến trúc tập lệnh tối ưu hóa trình biên dịch C
84 hướng dẫn cơ bản với các chế độ địa chỉ linh hoạt
Trang 21 Mảng thanh ghi làm việc 16 x 16 bit
Hoạt động lên đến 30 MIP
Đầu vào xung nhịp bên ngoài DC đến 40
Đầu vào FRC bên trong với PLL đang
hoạt động (4x, 8x, 16x)
Trang 22DSPIC30F6014A
Trang 23 Đầu vào bộ dao động 4 MHz-10 MHz với PLL hoạt động (4x, 8x, 16x)
10 MHz - Đầu vào bộ dao động 20 MHz
ở HS / 2 hoặc HS / 3 với PLL đang hoạt động (4x, 8x, 16x)
Nguồn ngắt ngoại vi và bên ngoài
8 mức độ ưu tiên có thể lựa chọn của
người dùng cho mỗi ngắt
Trang 24 4 ngoại lệ bộ xử lý và bẫy phần mềm
Bảng vectơ ngắt chính và thay thế
Các tính năng của động cơ DSP
Modulo và chế độ địa chỉ đảo ngược bit
Hai bộ tích lũy rộng 40 bit với logic bão hòa tùy chọn
17-bit x 17-bit chu kỳ đơn chu kỳ nhân phần cứng / số nguyên
Hoạt động một chu kỳ Nhân tích lũy
(MAC)
Trang 25Sơ đồ chân DSPIC30F6014
Trang 28 Mô-đun SPI ™ 3 dây (hỗ trợ 4 chế độ Khung hình)
Mô-đun I2C ™ hỗ trợ chế độ Multi-Master/Slave và định địa chỉ 7-bit/10-bit
Mô-đun UART có thể định địa chỉ với bộ đệm FIFO
và các chân có thể lựa chọn
Giao diện chuyển đổi dữ liệu (DCI) hỗ trợ các giao thức Codec âm thanh phổ biến, bao gồm I2S và
AC'97
Trang 30 Nhiều tùy chọn sắp xếp theo trình tự chuyển đổi
Các tính năng đặc biệt của vi điều khiển:
Bộ nhớ chương trình Flash nâng cao
10.000 chu kỳ xóa / ghi (tối thiểu) cho dải nhiệt độ công nghiệp, 100K (điển hình)
Bộ nhớ EEPROM dữ liệu:
Trang 31Các chức năng chính của DSPIC30F6014A
Trang 32 100.000 chu kỳ xóa / ghi (tối thiểu) cho dải nhiệt
độ công nghiệp, 1M (điển hình)
Tự lập trình lại dưới sự kiểm soát của phần mềm
Khởi động lại nguồn (POR), Bộ hẹn giờ bật nguồn (PWRT) và Bộ hẹn giờ khởi động bộ tạo dao động (OST)
Bộ định thời gian giám sát linh hoạt (WDT) với
bộ dao động RC công suất thấp trên chip cho hoạt động đáng tin cậy
Trang 33Chức năng và sơ đồ từng bộ phận của chip PIC30F6014A
Trang 34 Hoạt động theo dõi đồng hồ không an toàn
Phát hiện lỗi xung nhịp và chuyển sang bộ tạo dao động RC công suất thấp trên chip
Bảo vệ mã có thể lập trình
Lập trình nối tiếp trong mạch ™ (ICSP ™)
Tạo ra phát hiện và thiết lập lại màu nâu có thể lập trình
Các chế độ quản lý năng lượng có thể lựa chọn
Trang 35 Các chế độ quản lý năng lượng có thể lựa chọn
Chế độ Ngủ, Chờ và Đồng hồ thay thế
Công nghệ CMOS:
Công nghệ đèn flash tốc độ cao, công suất thấp
Dải điện áp hoạt động rộng (2,5V đến 5,5V)
Phạm vi nhiệt độ công nghiệp và mở rộng
Tiêu thụ ít điện năng
Trang 36Cấu hình phần cứng bộ dsPIC
Hình 1 Sơ đồ mạch dsPIC
Trang 38Sơ đồ mạch Vi điều khiển dsPIC theo Hình 1
Khe cắm vi điều khiển có thể tương thích các dòng vi điều khiển của dsPIC bao gồm (dsPIC 24XXXX, dsPIC30XXXX, dsPIC33XXXX)
Với KIT mạch dsPIC80 chúng ta tìm hiểu thì bao gồm (mạch Reset, Mạch dao động 10M, Các Port (A,B,C,D,F,G), Mạch dao động theo thời gian thực (Real time clock PCF8583), Mạch nạp (ICSP)
Trang 39Mạch nguồn
Nguồn đầu vào với điện áp là 9-12V một chiều
IC ổn áp L7805 cho nguồn ổn định ở điện áp 5V
IC ổn áp AMS1117 - 3,3V cho nguồn ổn định ở điện
áp 3,3V
Trang 40CÁC ĐẦU RA CỦA dsPIC80
Trang 41CÁC PORT CỦA dsPIC80
Trang 42LED ĐƠN
Trang 43MẠCH LCD
Trang 45NÚT NHẤN SWITCH
Trang 46CẢM BIẾN NHIỆT DS18B20 & ADC INPUT
Trang 47MẠCH MIC-IN & SPK-OUT
Trang 48MẠCH MMC/SD CARD
Trang 49MẠCH PS2 & CAN
Trang 50MẠCH RS232 A-B
Trang 51MẠCH RS485/422
Trang 52MẠCH ENC28J60 SPI-ETHERNET
Trang 531.2 Ngôn ngữ lập trình
Phần mềm CCS PIC
Phầm mềm Micro C for PIC
Phần mềm MPLap x IDE
Trang 54Phần mềm CCS PIC
CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip.Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:
PCB cho dòng PIC 12‐bit opcodes
PCM cho dòng PIC 14‐bit opcodes
PCH cho dòng PIC 16 và 18 bit
Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS, phiên bản mới nhất là PCWH Compiler
Trang 55Chương trình CCS
Trang 56VIẾT CHƯƠNG TRÌNH TRONG CCS
Trang 57
}
#INT_TIMER1
Void xu_ly_ngat_timer ( ) {
Trang 58Phầm mềm Micro C for PIC
Ngoài CCS for PIC ta cũng có thể sử dụng Micro C
để lập trình cho PIC;
Trình biên dịch mikroC là một công cụ khá mạnh để
hỗ trợ lập trình cho các thiết bị sử dụng vi điều khiển
Trang 59Phần mềm Micro Pic C
Trang 60Phần mềm MPLap x IDE
sử dụng để phát triển các ứng dụng cho vi điều khiển MicroChip và bộ điều khiển tín hiệu số của hãng Công cụ phát triển này được gọi là Môi trường phát triển tích hợp, hay IDE, bởi vì nó cung cấp một môi trường tích hợp duy nhất để phát triển code cho các
bộ vi điều khiển nhúng
năng được tích hợp, cho phép các kỹ sư tập trung hoàn thành ứng dụng mà không bị gián đoạn các công cụ riêng biệt và các chế độ hoạt động khác nhau
Trang 61Phần mềm Mplab
Trang 62Phần mềm CCS
Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng cho việc lập trình cho con vi điều khiển đó Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1 Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số 0 và 1 Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lập trình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi
ra đời một ngôn ngữ mới thay thế Và ngôn ngữ lập trình Assembly Ở đây ta không nói nhiều đến Assmebly Sau này khi lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của ngôn ngữ C ra đời, nhu cầu dùng ngôn ngữ C
đề thay cho ASM trong việc mô tả các lệnh nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển : Keil C, HT‐PIC, MikroC,CCS…
Trang 63CCS là một công cụ lập trình C mạnh cho Vi điều khiển PIC Những ưu và nhược điểm của CCS sẽ được đề cập đến trong các phần dưới đây
CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip
Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:
PCB cho dòng PIC 12‐bit opcodes
PCM cho dòng PIC 14‐bit opcodes
PCH cho dòng PIC 16 và 18‐bit
Trang 64 Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS , phiên bản mới nhất là PCWH Compiler Ver 3.227
Giống như nhiều trình biên dich C khác cho PIC,
CCS giúp cho người sử dụng nắm bắt nhanh được
vi điều khiển PIC và sử dụng PIC trong các dự án Các chương trình diều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc
sử dụng ngôn ngữ lạp trình cấp cao – Ngôn ngữ C.Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi tiết nhất chính là bản Help đi kèm theo phần mềm (tài liệu Tiếng Anh) Trong bản trợ giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xủa lý, cấu trúc các câu lệnh trong chương trình, các hàm tạo sẵn cho người sử dụng…
Trang 65Lập trình CCS
Trang 66Tạo file project và giao diện của CCS
Trang 67Rebuil cho phần mềm CCS
Trang 68MẠCH NẠP PICKIT3
Trang 69Mạch nạp PICKIT3
Kết nối với PC qua cổng USB
Chức năng Programmer/Debugger
Tự động giám sát và điều chỉnh điện áp nạp
thích hợp với từng loại PIC
Cập nhật thường xuyên Firmware cho các PIC mới
Trang 701.3 Ngắt
#int_timer1 FAST Void xu_ly ( )
{
}
#int_timer2 HIGH Void dinh_thi () {
}
#int_timer5 HIGH Void vong_lap() {
}
Trang 71//Clock Switching is enabled, fail
Safe clock monitor is enabled
while(TRUE) {
output_high(PIN_D0); output_high(PIN_D1); delay_ms(1000);
output_low(PIN_D0);
output_low(PIN_D1);
delay_ms(1000);
} }
Bài 1: Chương trình xuất dữ liệu ra chân D0 và D1
Trang 72output_d(255); Delay_ms(250); output_d(0); Delay_ms(250); }
for(y=0;y<10;y++) {
output_d(100); Delay_ms(250); output_d(50); Delay_ms(250); }
} }
Bài 2: Chương trình xuất dữ liệu ra portd
Trang 73//int8 const led[]={1,2,4,8,16,32,64,128},a; int8 const led[]={1,2,3,4,5,6,7,8},a;
set_tris_d(0x0000);
while(TRUE) {
for(a=0;a<8;a++) {
portd=led[a];
delay_ms(500);
} //TODO: User Code }
}
Bài 3: Chương trình xuất các giá trị 0,1,2,3,4,5,6,7,8
ở dạng nhị phân ra portd của vi điều khiển
Trang 74output_d(255);
delay_ms(200);
} else output_d(0);
delay_ms(200);
} }
Bài 4: Chương trình nhấn switch của porta & portc đưa kết quả ra các Led của portd
Trang 76Bài 5: Chương trình nhấn switch của porta&portc đưa các kết quả 1,3,7,15,31,63,127,255 ở dạng nhị phân, và được xuất ra các Led của portd
output_d(7);
delay_ms(200);
} if(RA15) {
output_d(15);
delay_ms(200);
} if(RC1) {
output_d(31);
delay_ms(200);
} if(RC2) {
output_d(63);
delay_ms(200);
}
if(RC3) {
output_d(127);
delay_ms(200);
} if(RC4) {
output_d(255);
delay_ms(200);
} else output_d(0);
delay_ms(200);
} }
Trang 77Bài 6: Chương trình điều khiển động cơ 1
DC sử dụng PWM thông qua nút nhấn
#include <30F6014A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES CKSFSM //Clock Switching is
enabled, fail Safe clock monitor is
enabled
#FUSES NOPUT //No Power Up Timer
#FUSES NOBROWNOUT //No brownout
set_pwm_duty(1, 0);
while(true) {
if (input(pin_a12)==1) pwm=pwm+30;
else
if (input(pin_a13)==1) pwm=pwm-30;
if (pwm>2499) pwm=2499;
else
if (pwm<0) pwm=0;
set_pwm_duty(1,pwm);
delay_ms(200);
} }
Trang 78Chương 3 – Lập trình hiển thị LCD & Lập trình bộ ADC
Lập trình với LCD
Lập trình với ADC với chiết áp
Trang 79Sơ đồ cấu tạo bên trong module A/D
Trang 80KHAI BÁO THƢ VIỆN VÀ CẤU HÌNH
Bài 7: Xuất dữ liệu “DAI HOC THUY LOI” và “KHOA DIEN-DIENTU” ra LCD
Trang 81KHAI BÁO THƢ VIỆN LCD
#define LCD_ENABLE_PIN PIN_B6
#define LCD_RS_PIN PIN_B4
#define LCD_RW_PIN PIN_B5
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include<lcd.c>