Mục lục
CHƯƠNG I
GiớI THIệU Về CảM BIếN, CảM BIếN QUANG ĐO
Cường độ ánh sáng
Trang
1.1. Giới thiệu chung về cảm biến 3
1.2. Cảm biến quang (Tế bào quang dẫn) 7
Chương II
tổng quan về PSoC
2.1. Giới thiệu về chíp PsoC 10
2.2 . Giới thiệu về chip PSoC CY8C27443-24PXI 11
2.2.1. Thông số của CY8C27443-24PXI 11
2.2.2. Các chế độ địa chỉ trong PsoC 15
2.2.3. Ngắt và bộ điều khiển ngắt 17
2.2.4. Các cổng vào ra đa chức năng 21
2.2.5. Các bộ tạo dao động 29
2.2.6. Các khối PSoC số 33
2.2.7 . Hệ thống khối PSoC tương tự. 37
2.3. Giới thiệu chung về PSoC Designer. 43
2.4. Các bước thiết kế và lập trình trong PSoC Designer. 45
Chương II
Xây dựng hệ đo, ĐIềU KHIểN CƯờng độ ánh
sáng sử dụng chip PSOC CY8C27443-24PXI
3.1. Sơ đồ khối chức năng của hệ thống. 813.2 .Sơ đồ nguyên lý và chức năng của các thành phần. 81
3.2.1. Sơ đồ mạch nguồn 81
3.2.2. Sơ đồ mạch định pha Dimmer 82
3.2.3. Sơ đồ mạch công suất 83
3.2.4. Modul giao tiếp máy tính 84
3.2.5. chíp Psoc CY8C27443-24PXI 86
3.2.6. Cảm biến quang (Quang trở) 87
3.3. Lưu đồ thuật toán 90
51 trang |
Chia sẻ: Thành Đồng | Ngày: 06/09/2024 | Lượt xem: 77 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng hệ đo điều khiển cường Đồ ánh sáng dùng PSOC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
có một ngắt sinh ra từ các khối chức năng trong chíp PSoC. Mỗi một
khối số có một ngắt riêng và mỗi cột khối tương tự cũng có một ngắt riêng. Mỗi
một ngắt cho nguồn cấp, chế độ ngủ, xung nhịp thay đổi, và một ngắt toàn cục cho
các chân vào ra đa chức năng.
Bộ điều khiển ngắt cùng với những thanh ghi của nó cho phép các ngắt có
thể bị vô hiệu hoá đồng thời hoặc độc lập nhau. Các thanh ghi cung cấp một cách
thức để người sử dụng có thể xóa tất cả những ngắt đang chờ và thông báo ngắt,
hoặc có thể xoá một cách độc lập hay riêng biệt thông báo ngắt và ngắt chờ.
Mức ưu tiên ngắt Địa chỉ Tên ngắt
0(Cao nhất) 0000h Reset
1 0004h Supply Voltage Monitor
2 0008h Analog Column 0
3 000Ch Analog Column 1
4 0010h Analog Column 2
5 0014h Analog Column 3
6 0018h VC3
7 001Ch GPIO
8 0020h PSOC Block DBB 00
9 0024h PSOC Block DBB 01
10 0028h PSOC Block DBB 02
11 002Ch PSOC Block DBB 03
12 0030h PSOC Block DBB 10
13 0034h PSOC Block DBB 11
14 0038h PSOC Block DBB 12
15 003Ch PSOC Block DBB 13
24 0060h I
2
C
25(Thấp nhất) 0064h Sleep Timer
Bảng 2.10 : Bảng các vecter ngắt.
Dẫy các sự kiện xẩy ra khi một ngắt được thi hành như sau:
1. Khi một ngắt được kích hoạt, có thể là do một điều kiện ngắt được sinh ra
(do tràn bộ đếm chẳng hạn) và trước đó thông báo ngắt cho phép bởi thanh ghi
mặt nạ che ngắt, hoặc có một ngắt đang chờ được xử lý và GIE (global Interrupt
enable- cho phép ngắt toàn cục) được đặt từ 0 sang 1 trong thanh ghi cờ của CPU.
2. Lệnh thi hành hiện thời kết thúc ở biên giới lệnh (biên giới lệnh là thời
điểm CPU chuyển từ lệnh này sang lệnh khác).
3. Thủ tục ngắt bên trong được thực hiện, tiêu tốn 13 chu kỳ máy. Trong
khoảng thời gian này CPU thực hịên những công việc sau:
- Lưu byte cao, byte thấp của bộ đếm chương trình (PCH và PCL) và thanh
ghi cờ (CPU_F) vào trong Stack theo thứ tự trên.
- Thanh ghi cờ được xoá trắng và từ đó bit GIE bị xoá về 0 và những ngắt
mới sinh ra tạm thời bị cấm.
- Byte cao của bộ đếm chương trình (PC[15:8]) được xoá về 0.
- Vector ngắt được đọc từ bộ điều khiển vetor ngắt và giá trị của nó được đặt
vào trong byte thấp của bộ đếm chương trình trỏ vào địa chỉ thích hợp trong bảng
vetor ngắt.
4. Chương trình sẽ thi hành vetor trong bảng vetor ngắt. Nhìn chung thì một
lệnh LJMP trong bảng vetor ngắt sẽ chuyển sự thi hành của CPU tới trình phục vụ
ngắt của người dùng để phục vụ ngắt này.
5. Trình phục vụ ngắt được thi hành. Lưu ý rằng tất cả các ngắt đều bị vô
hiệu hoá kể từ khi bit GIE= 0. Các ngắt khác có thể được mở lại trong trình phục
vụ ngắt nếu cần thiết bằng cách đặt bit GIE=1 (hãy cẩn thận trong việc này bởi vì
nó sẽ làm cho tràn stack).
6. Khi phục vụ ngắt kết thúc với lệnh RETI thì thanh ghi cờ (CPU_F), byte
thấp và byte cao của bộ đến chương trình được lấy ra khỏi Stack theo đúng trình
tự trên. Từ khi thanh ghi cờ (CPU_F) được khôi phục lại giá trị thì nó sẽ cho phép
các ngắt (GIE=1).
7. Chương trình sẽ bắt đầu thi hành ở lệnh kế tiếp, ngay sau khi lệnh được
thực hiện trước khi xẩy ra ngắt. Tuy nhiên, nếu như có ngắt đang chờ được phục
vụ thì nó sẽ được thực hiện trước.
2.2.4. Các cổng vào ra đa chức năng
Các cổng vào ra đa chức năng tạo cho CPU một giao diện với bên ngoài.
Chúng đòi hỏi một số lượng lớn thanh ghi cấu hình để hỗ trợ cho nhiều hoạt động
vào, ra bao gồm cả số và tương tự.
Address Name Bit
7
Bit
6
Bit
5
Bit
4
Bit
3
Bit
2
Bit
1
Bit
0
Access
0,xxh PRTxDR Data Registor (Thanh ghi dữ liệu ) RW:00
0,xxh PRTxIE Bit Interrupt Enable (Bit cho phép ngắt) RW:00
0,xxh PRTxGS Globol Select (Lựa chọn toàn cục) RW:00
0,xxh PRTxDM2 Driver Mode 2 (Thanh ghi hoạt động chế độ 2) RW:FF
1,xxh PRTxDM0 Driver Mode 0 (Thanh ghi hoạt động chế độ 0) RW:00
1,xxh PRTxDM1 Driver Mode 1 (Thanh ghi hoạt động chế độ 1) RW:FF
1,xxh PRTxIC0 Interrupt Control 0 (Thanh ghi điều khiển ngắt 0) RW:00
1,xxh PRTxIC1 Interrupt Control 1 (Thanh ghi điều khiển ngắt 1) RW:00
Bảng 2.11: Các thanh ghi vào ra đa chức năng.
Chú ý: Ký tự “X” sau dấu phẩy trong trường địa chỉ có nghĩa là các cổng
vào ra đều có riêng biệt các thanh ghi trên. Mỗi một cổng thì thanh ghi sẽ có một
địa chỉ riêng. Nhưng để dễ hiểu ta chỉ cần xét chung cho trường hợp tổng quát.
Các cổng vào đa chức năng đều có độ rộng là 8 bit/1cổng. Mỗi một cổng
vào/ra bao gồm 8 khối GPIO giống hệt nhau. Mỗi một khối GPIO đều được kết
nối với bit có số thứ tự tương ứng trong địa chỉ và thanh ghi. Bởi vậy, những
thanh ghi trong bảng 2-22 thực sự chỉ dành cho một cổng (bao gồm 8 khối GPIO).
Trong đó thì vị trí của các bit sẽ chỉ rõ là khối GPIO nào trong 8 khối được điều
khiển với cổng vào ra.
Mỗi một khối GPIO có thể được sử dụng cho những kiểu vào ra sau:
- Vào ra số (Vào ra số điều khiển bởi phần mềm).
- Vào ra toàn cục (Vào ra cho các khối PSoC số).
- Vào ra tương tự (Vào ra cho các khố PSoC tương tự).
Mỗi một chân vào ra đều có vài chế độ hoạt động cũng như là khả năng tạo
ngắt. Trong khi tất cả chân đều được nối vào đường vào ra số, thì một vài chân lại
không được kết nối với chức năng vào ra của khối tương tự hoặc bus toàn cục.
Vào ra số.
Một trong những chức năng hoạt động cơ bản của cổng vào ra đa chức năng
là cho phép CPU gửi thông tin ra ngoài chíp và lấy thông tin từ bên ngoài vào.
Điều này được thực hiện nhờ thanh ghi dữ liệu cổng (Port Data Register-
PRTxDR). Việc viết dữ liệu vào thanh ghi PTRxDR sẽ lưu lại trạng thái dữ liệu,
mỗi bit cho một chân GPIO. Trong chế độ thường (Standart Non-Bypass) thì mỗi
chân GPIO sẽ lập lại bit dữ liệu đó. Nghĩa là khi ta viết một giá trị vào trong thanh
ghi dữ liệu PRTxDR thì ở đầu ra của cổng tương ứng sẽ có giá trị giống như trong
thanh ghi dữ liệu. Điện áp thực ở chân ra phụ thuộc vào chế độ hoạt động của
chân tại bên ngoài được nối vào chân đó (Xem cấu trúc của một chân vào ra để
hiều rõ thêm).
CPU có thể đọc giá trị của một cổng bằng cách đọc giá trị của thanh ghi
PRTxDR. Khi CPU đọc giá trị của PRTxDR thì giá trị điện áp hiện thời của chân
vào ra sẽ được chuyển đổi sang giá trị logic và được trả về cho CPU. Hoạt động
này sẽ đọc giá trị điện áp của chân vào ra chứ không phải là đọc về giá trị chốt của
thanh ghi PRTxDR.
Vào ra toàn cục (Global IO).
Các cổng vào ra đa chức năng cũng được nối liền với các khối số thông qua
các vào ra toàn cục. Tính năng vào ra toàn cục của mỗi cổng được mặc định ở
trạng thái tắt. Để sử dụng được tính năng này thì có 2 thông số cần phải thay đổi.
Thứ nhất để cấu hình cho một chân GPIO hoạt động như là một đầu vào
toàn cục thì bit lựa chọn cổng toàn cục cần phải được set để yêu cầu GPIO sử
dụng thanh ghi PRTxGS.
Thứ hai là chế độ hoạt động của GPIO cần phải đưa về trạng thái cao trở. Để
cấu hình cho chân GPIO hoạt động như là một đầu ra toàn cục thì bit lựa chọn
cổng toàn cục cần phải được set lần nữa. Nhưng trong trường hợp này thì chế độ
hoạt động của GPIO là bất kỳ trừ khi độ cao trở
Vào ra tương tự.
Tín hiệu tương tự có thể được truyền dẫn giữa CPU và chân của chíp thông
qua chân AOUT của khối. Chân này được nối với khối thông qua một điện trở
(khoảng 300 ). Chân vào ra đa chức năng cần phải đưa về chế độ cao trở trong
trường hợp này.
Các ngắt của khối GPIO.
Mỗi một khối GPIO đều có thể được cấu hình một cách độc lập cho khả
năng ngắt. Các khối GPIO được cấu hình cho phép lựa chọn ngắt cho từng chân
và cũng có thể lựa chọn kiểu ngắt phù hợp. Nghĩa là các khối có thể sinh ra ngắt
khi chân ở mức logic cao, thấp hoặc khi nó thay đổi so với lần đọc trước. Các khối
đều có một đầu ra ngắt riêng (INT0), nó được nối với các khối GPIO khác bằng
một kiều nối dây loại OR.
Do tất cả các chân đều được nối với nhau theo kiểu OR để sử dụng chung
một hệ thống ngắt GPIO. Nếu một ngắt GPIO được chia sẻ cho nhiều chân vào ra
thì trình phục vụ ngắt của người sử dụng cần phải sử dụng vài kỹ thuật được thiết
kế sẵn để quyết định xem chân nào được chọn là nguồn sinh ngắt.
Sử dụng một ngắt GPIO yêu cầu những bước sau:
1. Đặt chế độ ngắt cho khối chân GPIO.
2. Mở bit ngắt cho khối chân GPIO.
3. Mở bit mặt nạ ngắt cho ngắt GPIO.
4. Xác nhận bit ngắt toàn cục GIE.
Sơ đồ khối chính của một khối GPIO được minh hoạ trong hình 2-4. Lưu ý
rằng một vài chân không có đủ các chức năng ngắt như hình vẽ mà nó phụ thuộc
vào kết nối bên trong.
Hình 2.3: Sơ đồ một khốiGPIO
2.2.5. Các bộ tạo dao động
2.2.5.1 Bộ tạo dao động chính bên trong.
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access
1,E8h IMO_TR Trim [7:0] W:00
Bảng 2.15: Thanh ghi của IMO.
Đầu ra của bộ IM0 có 2 loại, một loại là SYSCLK có thể là nguồn xung nhịp
24MHz ở bên trong hay nguồn xung nhịp bên ngoài, một loại là SYSCLK2x có
tần số xung nhịp gấp đôi SYSCLK. Khi không có đầu vào chính xác cao từ bộ dao
động thạch anh 32KHz thì độ chính xác của nguồn xung nhịp 24/48MHz ở bên
trong sẽ là +/- 2,5% đối với giải nhiệt độ và hai mức điện áp hoạt động (3.3V+/-
0.3V và 5.0V+/- 5%). Không cần thêm một thành phần bên ngoài nào để đạt được
mức độ chính xác này.
Có một lựa chọn để chốt pha của bộ dao động bên trong này sang bộ dao
động thạch anh bên ngoài. Vì thế việc lựa chọn thạch anh và độ chính xác của nó
quyết định tính chính xác của bộ dao động ngoài. Bộ dao động thạch anh bên
ngoài cần phải ổn định trước khi chốt tần số dao động của bộ dao động chính bên
trong vào nguồn xung nhịp này.
Bộ IMO có thể được khoá khi sử dụng nguồn xung nhịp bên ngoài. Bởi vậy,
mạch nhân đôi tần số (SYSCLK2x) có thể được ngắt để tiết kiệm năng lượng cho
hệ thống. Lưu ý rằng khi sử dụng nguồn xung nhịp bên ngoài, nếu như SYSCLK2x
được cần đến thì IMO không thể bị khoá.
Thanh ghi IMO-TR (Internal Main Oscillator Trim Registor)
Giá trị mặc định của tần số chíp cho chế độ hoạt động 5V được tải vào thanh ghi
IMO_TR tại thời điểm khởi động. Bộ IMO sẽ hoạt động với độ sai lệch riêng trong
dải điện áp từ 4.75 đến 5.25V khi giữ nguyên giá trị của thanh ghi này. Nếu như
chíp hoạt động ở điện áp thấp, mã của người sử dụng cần thay đổi nội dung của
thanh ghi này. Để hoạt động với giải điện áp 3.0 V+/- 0.3V thì phải thực hiện với
một lệnh đọc bảng tới SROM (Supervisor Rom), nó có thể cung cấp một giá trị các
tần số cho chế độ hoạt động này. Để hoạt động giữa hai giải điện áp này mã của
người sử dụng có thể tự động thêm vào giá trị tốt nhất sử dụng hai cắt tần số có sẵn
của nhà sản xuất.
Bit 7-0: Những bit này lưu giữ giá trị cắt tần số của bộ IMO, giá trị của
thanh ghi càng lớn thì tần số dao động của bộ IMO càng lớn.
2.2.5.2. Bộ dao động tốc độ thấp nội tại.
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access
1,E9h ILO_TR Bias Trim [7:0] Freq Trim [3:0] W:00
Bảng 2.16 : Thanh ghi ILO.
ILO là bộ phát xung nhịp nội tại tốc thấp 32KHz. Nó có khả năng sinh ra
ngắt để đánh thức chế độ ngủ và reset lại đồng hồ Watchdog. Bộ tạo dao động này
cũng được sử dụng như là một nguồn xung nhịp cho các khối số.
Thanh ghi ILO_TR
Thanh ghi này đạt độ điều chỉnh cho ILO. Giá trị mặc định được đặt vào
những bit Trim của thanh ghi trong quá trình khởi động. Nó dựa vào mặc định của
nhà sản xuất. Nhà sản xuất khuyến cáo người sử dụng không được thay đổi giá trị
của thanh ghi này.
Bít 7 và 6 : Không dùng đến
Bit 5 và 4: Bias Trim hai bit được sử dụng để đặt dòng điện bias trong nguồn
dòng PTAT. Bit 5 được nghịch đảo vì thế chế độ bias trung bình được chọn khi cả
hai bit =0. Dòng điện bias được đặt theo bảng sau.
Bias Current Bit 5 Bit 4
Medium Bias 0 0
Maximum Bias 0 1
Minimum Bias 1 0
Not Needed* 1 1
Bảng 2.17 : Dòng điện bias trong PTAT.
Cao hơn khoảng 15% so với chế độ Minimum Bias
Bit 3 tới bit 0: Freq Trim bốn bit được sử dụng để cắt tần số. Bit 0 là bit có
trọng số nhỏ nhất, bit 3 là bit có trọng số lớn nhất. Bit 3 được nghịch đảo bên
trong thanh ghi, bởi vậy, mã 8h sẽ làm cho tất cả các nguồn dòng tắt (tần số =
0KHz). Một mã 0h sẽ bật nguồn dòng có trọng số lớn nhất( tần số = trung bình).
Một mã 7h sẽ bật tất cả các nguồn dòng (tần số = lớn nhất).
2.2.5.3. Bộ tạo dao dộng thạch anh 32KHz (ECO)
Mạch tạo dao động thạch anh 32 KHZ cho phép người sử dụng thay thế bộ
tạo dao dộng bên trong (ILO) với một bộ tạo dao động bên ngoài với độ chính xác
cao hơn, giá thành thấp và năng lượng tiêu hao ít.
Addres
s
Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access
1,E0h OSC_CR0 32k Select PLL
Mode
No
Buzz
Sleep[1:0] CPU Speed [2:0] RW:00
1,EBh EC0_TR PSSDC[1:
0]
W:00
X,Feh CPU_SC
R1
ECO_EXW ECO_E
X
IRAMDI
S
Bảng 2.18 : Các thanh ghi của bộ dao động thạch anh.
Mạch tạo dao động thạch anh sử dụng một thạch anhvà hai tụ nhỏ là thành
phần bên ngoài. Tất cả các thành phần khác đều nằm trong chíp PSoC. Bộ dao
động thạch anh có thể cấu hình để cung cấp một tham chiếu đến bộ tạo dao động
bên trong (IMO) trong chế độ PLL (Phase Lock Loop) để tạo ra nguồn xung nhịp
hệ thống 24 MHz với độ chính xác cao hơn.
Chân XTALIN và chân XTALOUT hỗ trợ kết nối với thạch anh 32.768
KHz. Để có thể sử dụng bộ dao động thạch anh bên ngoài thì bit 7 của thanh ghi
điều khiển bộ dao động OSC_CR0 cần phải được đặt =1 (mặc định là 0). (Xem
hình 2.4).
Hình2.4: Tạo bộ dao động ngoài
Các bước của chương trình cần phải thực hiện trong việc chuyển đổi giữa bộ
phát xung nhịp chậm nội tại sang bộ phát xung nhịp thạch anh 32 KHz như sau:
1. Tại thời điểm reset, chíp bắt đầu hoạt động và nó sử dụng bộ phát xung
nhịp chậm nội tại.
2. Lựa chọn khoảng thời gian nghỉ 1 giây bằng bit[4:3] trong thanh ghi
OSC_CRO như là khoảng thời gian để ổn định bộ phát xung nhịp.
3. Cho phép bộ phát xung nhịp thạch anh 32 KHz bằng cách đặt bit 7 trong
thanh ghi OSC_CRO lên 1.
4. Bộ phát xung nhịp thạch anh 32KHz trở thành nguồn xung nhịp được lựa
chọn tại thời điểm kết thúc một giây nói trên. khoảng thời gian nghỉ cho phép bộ
phát xung nhịp có thời gian để ổn định trước khi nó trở thành nguồn cung cấp
xung nhịp. Ngắt sleep không được mở trong khi việc chuyển đổi đang diễn ra.
Reset lại Sleep Timer để đảm bảo khoảng thời gian nghỉ cần thiết (Nếu như nó
không giao tiếp với bất kỳ một hệ thống thời gian thực nào). Lưu ý rằng bộ phát
xung nhịp tốc độ thấp vẫn tiếp tục chạy cho đến khi chuyển hẳn sang bộ phát xung
nhịp ngoài nhờ vào ngắt của Sleep Timer.
XTALIn
P1[1]
XTALOut
P1[1]
Thạch anh
Vdd Vdd
C1 C2
2.2.6. Các khối PSoC số
Bảng 2.32: Thanh ghi của khối PSoC số
Tất cả các khối PSoC số đều có thể cấu hình để thực hiện bất cứ một chức
năng nào trong 5 chức năng cơ bản sau: Bộ định thời, bộ đếm, bộ điều chế độ rộng
xung, PRS, kiểm tra chu kỳ thừa (CRC). Những chức năng này được sử dụng bằng
cách cấu hình một khối PSoC độc lập hay một chuỗi vài khối PSoC liền nhau để
thực hiện chức năng lớn hơn 8 bit. Các khối PSoC số truyền thông có thêm hai
chức năng nữa là: SPI
Các file đính kèm theo tài liệu này:
- de_tai_xay_dung_he_do_dieu_khien_cuong_do_anh_sang_dung_psoc.pdf