Professional Documents
Culture Documents
KHOA CƠ KHÍ
BỘ MÔN CƠ ĐIỆN TỬ
KỸ THUẬT
VI ĐIỀU KHIỂN PIC
Firma convenzione
Politecnico di Milano e Veneranda Fabbrica
TS. Đặng
del Duomo Phước Vinh
di Milano
Aula Magna – Rettorato
Mercoledì 27 maggio 2015
Email: dangphuocvinh@gmail.com
Phone: 0908 217 415
2
Nội dung (30 tiết)
1. Giới thiệu chung
2. Cấu trúc phần cứng
3. Tập lệnh, chỉ thị tiền xử lý
4. Bộ định thời
5. Hoạt động ngắt
6. Bộ chuyển đổi ADC
7. Giao tiếp nối tiếp
TS. Đặng Phước Vinh Khoa Cơ khí
CHƯƠNG 7
SDA
I2C bus Serial
Data
MCU Sensor ADC EEPROM MCU Line
Master Slave Slave Slave Slave
Start Stop
Transper data
Start sequence
TS. Đặng Phước Vinh Khoa Cơ khí
9
Đọc 1 byte ▪ Master gởi cho Slave
▪ Bằng phần mềm
Stop
Start Re-Start Sequence
Sequence Write Sequence Read
NAK
ST Device Add. (7 bit) W Register Add (8 bit) SR Device Add. (7 bit) R NAK SP
Master
AK AK AK Data (8 bit)
Slave
AK AK AK
AK AK AK Data (8 bit)
Slave
AK AK AK
NAK Stop
AK AK NAK SP
Master
Slave AK AK AK
AK AK AK
ST Device Add. (7 bit) W Register Add (8 bit) Data (8 bit) Data (8 bit) SP
Master
AK AK AK AK
Slave
AK AK AK AK
bit 4: CKP: không có tác dụng trong chế độ I2C Master Mode
bit 6: ACKSTAT: Acknowledge Status bit (chỉ có tác dụng khi truyền
dữ liệu ở chế độ I2C Master Mode)
1: chưa nhận được xung ACK từ I2C Slave
0: nhận được xung ACK từ I2C Slave
bit 5: ACKDT: Acknowledge Data bit (chỉ có tác dụng khi nhận dữ
liệu ở chế độ I2C Master Mode)
1: Not Acknowledge
0: Acknowledge
bit 4: ACKEN: Acknowledge Sequency Enable bit (chỉ có tác dụng khi
nhận dữ liệu ở chế độ I2C Master Mode)
1: Cho phép xung ACK xuất hiện ở chân SDA và SCL khi kết
thúc quá trình nhận dữ liệu. Tự động xóa bởi phần cứng
0: không cho phép chế độ trên
TS. Đặng Phước Vinh Khoa Cơ khí
21
SSPCON2 - MSSP CONTROL REGISTER 2
bit 3: RCEN: Receive Enable bit (chỉ có tác dụng khi ở chế độ Master)
1: cho phép nhận dữ liệu ở chế độ I2C
0: không cho phép
RC4
RC3
✓ Còn được gọi là giao tiếp truyền thông nối tiếp (Serial
Communications Interface - SCI)
✓ Chế độ:
▪ Bất đồng bộ (Asynchronous)
▪ Đồng bộ (Master mode)
▪ Đồng bộ (Slave mode)
TS. Đặng Phước Vinh Khoa Cơ khí
38
Các dạng giao tiếp nối tiếp
Chỉ giao tiếp
theo 1 chiều
TX RX
Bất đồng bộ
✓ Truyền một byte dữ liệu trong một thời điểm RX TX
✓ Giao tiếp theo chế độ full-duplex
✓ Không có chân tạo xung clock
✓ Có bit START và bit STOP, bit chẵn lẻ…
TXSTA
RCSTA
✓ Dữ liệu cần truyền sẽ được đưa trước vào thanh ghi TXREG
✓ Thanh ghi TSR không có trong bộ nhớ dữ liệu và chỉ được điều
khiển bởi CPU
✓ Thành phần quan trọng nhất: thanh ghi dịch RSR (Receive Shift
Register)
✓ Dữ liệu nhận được trong thanh ghi RSR sẽ được đưa vào thanh
ghi RCREG → cờ RCIF = 1 (RCIF = 0 khi dữ liệu tại RCREG đã
được đọc)
TS. Đặng Phước Vinh Khoa Cơ khí
59
Nhận dữ liệu
✓ RCREG là thanh ghi có bộ đệm kép hoạt động theo cơ chế FIFO (First
In First Out)
▪ RCREG có thể nhận 2 byte dữ liệu
▪ Byte thứ 3 tiếp tục đưa vào thanh ghi RSR
✓ Nếu bit STOP của byte thứ 3 đã được nhận mà thanh ghi RCREG vẫn
đầy:
▪ Cờ báo tràn OERR sẽ được set
▪ Dữ liệu trong thanh ghi RSR sẽ bị mất
▪ Quá trình đưa dữ liệu từ RSR đến RCREG sẽ bị gián đoạn
→ Phải lấy hết dữ liệu của thanh ghi RCREG trước khi nhận dữ liệu
tiếp theo
TS. Đặng Phước Vinh Khoa Cơ khí
60
Nhận dữ liệu
✓ Nếu OERR = 1 → quá trình chuyển dữ liệu từ RSR đến RCREG sẽ
bị cấm
✓ Bit OERR phải được xóa bằng phần mềm: xóa bit CREN rồi set lại
✓ Bit FERR và bit dữ liệu thứ 9 (RX9D) được đưa vào bộ đệm như 8
bit dữ liệu
✓ Đọc thanh ghi RCREG → cập nhật giá trị mới cho FERR và RX9D
→ Đọc thanh ghi RCSTA trước khi đọc thanh ghi RCREG
TS. Đặng Phước Vinh Khoa Cơ khí
61
Các bước thực hiện khi NHẬN
1. Tạo xung truyền tốc độ baud (đưa giá trị vào thanh ghi SPBRG)
2. Cho phép cổng giao tiếp nối tiếp bất đồng bộ hoạt động → SYNC = 0 &
SPEN = 1
3. Set bit RCIE nếu cần sử dụng ngắt
4. Set bit RX9 nếu cần truyền 9 bit dữ liệu
5. Set bit CREN để cho phép truyền dữ liệu
6. Cờ RCIF được set sau khi nhận được dữ liệu
7. Đọc thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem quá trình
nhận dữ liệu có bị lỗi hay không
8. Đọc dữ liệu 8 bit từ thanh ghi RCREG
9. Nếu quá trình nhận dữ liệu bị lỗi → xóa bit CREN
TS. Đặng
10. KiểmPhước
tra bitVinh
GIE và PEIE nếu sử dụng ngắt nhận Khoa Cơ khí
62
Giao tiếp nối tiếp UART – RS232
✓ Các chip vi điều khiển: chuẩn UART (hay chuẩn TTL)
▪ Chuyển 1 bit trong một đơn vị thời gian theo một tốc độ truyền
nhận dữ liệu quy định (tốc độ baud)
▪ Mức “0” → 0V
▪ Mức “1” → từ 3.3V tới 5V
14 25
13 1
25 14
RS232 cable
C1 10uF
U4
1 15 1 3 P1
RE3/MCLR/VPP RC0/T1OSO/T1CKI
16
RC1/T1OSI/CCP2
2 17 1
RA0/AN0/ULPWU/C12IN0- RC2/P1A/CCP1 C1+ C1- DCD
3 18 6
RA1/AN1/C12IN1- RC3/SCK/SCL DSR
4 23 11 14 2
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA T1IN T1OUT RXD
5 24 12 13 7
RA3/AN3/VREF+/C1IN+ RC5/SDO R1OUT R1IN RTS
6 25 10 7 3
RA4/T0CKI/C1OUT RC6/TX/CK T2IN T2OUT TXD
7 26 9 8 8
RA5/AN4/SS/C2OUT RC7/RX/DT R2OUT R2IN CTS
14 4
RA6/OSC2/CLKOUT DTR
13 19 2 9
RA7/OSC1/CLKIN RD0 VS+ RI
20 6
RD1 VS-
33 21
RB0/AN12/INT RD2
34
RB1/AN10/C12IN3- RD3
22
C2+ C2- C4 C3 ERROR
35 27 10uF 10uF
RB2/AN8 RD4
36 28 COMPIM
RB3/AN9/PGM/C12IN2- RD5/P1B
37 29 4 5
RB4/AN11 RD6/P1C
38 30
RB5/AN13/T1G RD7/P1D C2
39 10uF
RB6/ICSPCLK
40 8
RB7/ICSPDAT RE0/AN5
9 D9
RE1/AN6
10
R9
RE2/AN7
270R
PIC16F877A LED
▪ #use rs232: cung cấp cho trình biên dịch thông tin về các tham
số cấu hình RS232 sẽ sử dụng để giao tiếp
▪ parity = N: khai báo có sử dụng bit kiểm tra chẳn lẻ hay không, ở
đây ta không kiểm tra nên thiết lập parity = N
char c;
c = getch();
Tab chức
năng
Thư mục
hiện hành
Đọc các cổng COM trong bộ nhớ đến vùng làm việc của Matlab
(workspace)
object = instrfind;
Gửi dữ liệu
fwrite(tenbien, gia_tri gia_tri);
fwrite(s,
TS. 1);
Đặng Phước Vinh Khoa Cơ khí
92
MATLAB GUI – Ví dụ