Thanh ghi chứa Thanh ghi chứa Accumulator là một thanh ghi đa mục đích, nó thờng đợc sử dụng để lu giữ kết quả của bất cứ một lệnh nào sử dụng chế độ địa chỉ nguồn... Chế độ địa chỉ nguồ
Trang 1Mục lục
CHƯƠNG I
GiớI THIệU Về CảM BIếN, CảM BIếN QUANG ĐO
Trang Cờng độ ánh sáng 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ấu trúc vi xử lý 16
2.2.3 Định dạng của lệnh 20
2.2.4 Các chế độ địa chỉ trong PsoC 21
2.2.5 Ngắt và bộ điều khiển ngắt 23
2.2.6 Các cổng vào ra đa chức năng 28
2.2.7 Các bộ tạo dao động 36
2.2.8 Vòng khóa pha Phase Locked Loop (PLL) 40
2.2.9 Sleep And Watchdog 41
2.2.10 Hệ thống khối PSoC số 50
2.2.11 Kết nối dãy các khối Psoc số 55
2.2.12 Kết nối các khối theo hàng 56
Trang 22.2.13 Các khối PSoC số 63
2.2.14 Hệ thống khối PSoC tơng tự 68
2.3 Giới thiệu chung về PSoC Designer 73
2.4 Các bớc thiết kế và lập trình trong PSoC Designer 75
Chơng III 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 81
3.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 Lu đồ thuật toán 90
Trang 3
CHƯƠNG I GiớI THIệU Về CảM BIếN, CảM BIếN QUANG ĐO
Cờng độ ánh sáng
1.1.Giới thiệu chung về cảm biến.
Cảm biến là các phần tử nhạy cảm dùng để biến đổi các đại lợng đo lờng, kiểm tra hay điều khiển từ dạng này sang dạng khác thuận tiện hơn cho việc tác động của các phần tử khác Cảm biến là một thiết bị chịu tác động của đại lợng cần đo ma không có tính chất điện và cho một đặc trng mang bản chất
điện (nh điện tích, điện áp, dòng điện, trở kháng) kí hiệu là s có s = F(m) Cảm biến thờng dùng ở khâu đo lờng và kiểm tra
Các loại cảm biến đợc sử dụng rộng rãi trong tự động hóa các quá trình sản xuất và điều khiển tự động các hệ thống khác nhau Chúng có chức năng biến đổi sự thay đổi liên tục các đại lợng đầu vào (đại lợng đo lờng - kiểm tra,
là các đại lợng không điện nào đó thành sự thay đổi của các đại lợng đầu ra là
đại lợng điện, ví dụ: điện trở, điện dung, điện kháng, dòng điện, tần số, điện áp rơi, góc pha,
Căn cứ theo dạng đại lợng đầu vào ngời ta phân ra các loại cảm biến nh: cảm biến chuyển dịch thẳng, chuyển dịch góc quay, tốc độ, gia tốc, mô men quay, nhiệt độ, áp suất, quang, bức xạ,
1.1.1 Các thông số cơ bản của cảm biến
1.1.1.1 Độ nhạy
S=ÄYÄX
Trang 4X: gia số đại lợng đầu vào.∆Với: +
Y: gia số đại lợng đầu ra.∆+
Trong thực tế còn sử dụng độ nhạy tơng đối: S0=
Với: Y là đại lợng ra
+ Sai số tuyệt đối ÄX=X'#X
X': giá trị đo đợc; X: giá trị thực
+ Sai số tơng đối a=ÄXX
Các nguyên nhân ảnh hởng tới sai số
Có nhiều nguyên nhân khách quan và chủ quan ảnh hởng tới sai số, trong thực tế ngời ta đa ra các tiêu chuẩn và các điều kiện kĩ thuật để hạn chế mức
độ ảnh hởng này trong phạm vi cho phép
Sai số ở giá trị định mức do yếu tố của bên ngoài gọi là sai số cơ bản Nếu yếu tố của bên ngoài vợt ra khỏi giới hạn định mức thì xuất hiện sai số phụ Để giảm sai số phụ phải giảm độ nhạy của cảm biến với yếu tố ngoài hoặc hạn chế
ảnh hởng của chúng bằng màn chắn hay môi trờng khác
1.1.2 Các yêu cầu của cảm biến
Muốn có độ nhạy cao, sai số nhỏ, cảm biến cần có các tính chất sau:
+ Có dải thay đổi đại lợng vào cần thiết
Trang 5+ Thích ứng và thuận tiện với sơ đồ đo lờng, kiểm tra.
+ ảnh hởng ít nhất đến đại lợng đầu vào
+ Có quán tính nhỏ
Hiện nay có rất nhiều loại cảm biến, chúng làm việc theo nhiều nguyên lí khác nhau, do vậy kết cấu của cảm biến rất đa dạng và phong phú Bảng 7-1 là nguyên lí làm việc và lãnh vực của cảm biến cảm ứng, là loại phổ biến trong tự
động hóa và điều khiển tự động
1.1.3. Phân loại cảm biến
Có thể phân các cảm biến làm hai nhóm chính: là cảm biến tham số (thụ
động) và cảm biến phát (chủ động hay tích cực)
* Nhóm phát bao gồm các loại cảm biến sử dụng hiệu ứng cảm ứng điện
từ, hiệu ứng điện áp, hiệu ứng Holl và sự xuất hiện sức điện động của cặp nhiệt ngẫu, tế bào quang điện
+ Hiệu ứng cảm ứng điện từ: trong một dây dẫn chuyển động trong một
từ trờng không đổi sẽ xuất hiện một sức điện động tỉ lệ với từ thông cắt ngang dây trong một đơn vị thời gian, nghĩa là tỉ lệ với tốc độ dịch chuyển của dây dẫn
Hiệu ứng cảm ứng điện từ đợc ứng dụng để xác định tốc độ dịch chuyển của vật thông qua việc đo sức điện động cảm ứng
+ Hiệu ứng quang phát xạ điện tử: là hiện tợng các điện tử đợc giải phóng thoát ra khỏi vật liệu tạo thành dòng đợc thu lại dới tác dụng của điện trờng
+ Hiệu ứng quang điện trong chất bán dẫn: là hiện tợng khi một chuyển tiếp P-N đợc chiếu sáng sẽ phát sinh ra các cặp điện tử-lỗ trống, chúng chuyển
động dới tác dụng của điện trờng chuyển tiếp làm thay đổi hiệu điện thế giữa hai đầu chuyển tiếp
Trang 6+ Hiệu ứng Holl: trong vật liệu (thờng là bán dẫn) dạng tấm mỏng có dòng điện chạy qua đặt trong từ trờng B có phơng tạo thành một góc với dòng
điện I sẽ xuất hiện một hiệu điện thế U theo hớng vuông góc với B và I Hiệu ứng Holl đợc ứng dụng để xác định vị trí của một vật chuyển động Vật sẽ đợc ghép nối cơ học với một thanh nam châm, ở mọi thời điểm vị trí của thanh nam châm xác định giá trị của từ trờng và góc lệch tơng ứng với tấm bán dẫn mỏng làm trung gian Hiệu điện thế đo đợc giữa hai cạnh tấm bán dẫn trong tr-ờng hợp này (gián tiếp) là hàm phụ thuộc vị trí của vật trong không gian
Ngoài ra còn cảm biến nhiệt điện, cảm biến hóa điện,
Trang 7* Cảm biến tham số (thụ động): thờng đợc chế tạo từ những trở kháng có một trong các thông số chủ yếu nhạy với đại lợng cần đo Một mặt giá trị của trở kháng phụ thuộc vào kích thớc hình học của mẫu, nhng mặt khác nó còn phụ thuộc vào tính chất điện của vật liệu nh: điện trở suất, từ thẩm, hằng số
điện môi Vì vậy giá trị của trở kháng thay đổi dới tác dụng của đại lợng đo
ảnh hởng riêng biệt đến tính chất hình học, tính chất điện hoặc đồng thời ảnh hởng cả hai Thông số hình học hoặc kích thớc của trở kháng có thể thay đổi nếu cảm biến có phần tử chuyển động hoặc phần tử biến dạng
+ Trờng hợp khi có phần tử động thì mỗi vị trí của phần tử sẽ tơng ứng với một giá trị trở kháng, đo trở kháng sẽ xác định đợc vị trí đối tợng Đây là nguyên lí nhiều cảm biến nh cảm biến vị trí, cảm biến dịch chuyển
+ Trờng hợp cảm biến có phần tử biến dạng, thì sự biến dạng gây nên bởi lực hoặc các đại lợng dẫn đến lực (áp suất, gia tốc) tác dụng trực tiếp hoặc gián tiếp lên cảm biến làm thay đổi trở kháng Sự thay đổi trở kháng liên quan đến lực tác động lên cấu trúc, nghĩa là tác động của đại lợng cần đo đợc biến đổi thành tín hiệu điện (hiệu ứng áp trở)
Trở kháng của cảm biến thụ động và sự thay đổi của trở kháng dới tác dụng của đại lợng cần đo chỉ có thể xác định đợc khi cảm biến là một thành phần của mạch điện Trong thực tế tùy từng trờng hợp cụ thể mà ngời ta chọn mạch đo thích hợp với cảm biến
1.2 Cảm biến quang (Tế bào quang dẫn)
Các tế bào quang dẫn là một trong những cảm biến quang có độ nhạy cao Cơ sở vật lí của tế bào quang dẫn là hiện tợng quang dẫn do kết quả của hiệu ứng quang điện nội (hiện tợng giải phóng hạt tải điện trong vật liệu dới tác dụng của ánh sáng làm tăng độ dẫn điện của vật liệu)
1.2.1. Vật liệu để chế tạo cảm biến
Trang 8Cảm biến quang thờng đợc chế tạo bằng các chất bán dẫn đa tinh thể
đồng nhất hoặc đơn tinh thể, bán dẫn riêng hoặc bán dẫn pha tạp, ví dụ nh:
- Đa tinh thể :CdS, CdSe, CdTe, PbS, PbSe, PbTe
- Đơn tinh thể:Ge, Si tinh khiết hoặc pha tạp Au, Cu, Sb, In, SbIn, AsIn,PIn, CdHgTe
Vùng phổ làm việc của các vật liệu này khác nhau
1.2.2 Các đặc trng
- Điện trở: giá trị điện trở tối Rc0 phụ thuộc vào dạng hình học, kích
th-ớc, nhiệt độ và bản chất lí hóa của vật liệu quang dẫn Điện trở Rc của cảm biến khi bị chiếu sáng giảm rất nhanh khi độ rọi tăng lên Sự phụ thuộc của
điện trở vào thông lợng ánh sáng không tuyến tính, tuy nhiên có thể tuyến tính hóa bằng cách sử dụng một điện trở mắc song song với tế bào quang dẫn
- Độ nhạy: độ dẫn của tế bào quang dẫn là tổng của độ dẫn trong tối và
độ dẫn khi chiếu sáng Độ nhạy phổ là hàm của nhiệt độ nguồn sáng: khi nhiệt
độ tăng thì độ nhạy phổ tăng lên
Tế bào quang dẫn đợc ứng dụng nhiều bởi chúng có tỉ lệ chuyển đổi tĩnh
và độ nhạy cao cho phép đơn giản hóa trong việc ứng dụng (ví dụ điều khiển các rơle hình 7-14) Nhợc điểm chính của tế bào quang dẫn là:
- Hồi đáp phụ thuộc một cách không tuyến tính vào thông lợng
- Thời gian hồi đáp lớn
- Các đặc trng không ổn định (già hóa)
- Độ nhạy phụ thuộc vào nhiệt độ
- Một số loại đòi hỏi phải làm nguội
Ngời ta không dùng tế bào quang dẫn để xác định chính xác thông lợng Thông thờng chúng đợc sử dụng để phân biệt mức sáng khác nhau (trạng thái tối- sáng hoặc xung ánh sáng) Thực tế thì tế bào quang dẫn thờng ứng dụng :Thu tín hiệu quang dùng để biến đổi xung quang thành xung điện Sự ngắt
Trang 9quãng của xung ánh sáng chiếu lên tế bào quang dẫn sẽ đợc phản ánh trung thực qua xung điện của mạch đo, ứng dẫn để đo tốc độ quay của đĩa hoặc đếm vật.
Đơn vị đo cờng độ ánh sáng:
Lux (ký hiệu: lx) là đơn vị đo độ rọi trong SI Nó đợc sử dụng
trong trắc quang học để đánh giá cờng độ ánh sáng cảm nhận đợc Đây là một đơn vị dẫn xuất trong SI, nghĩa là nó đợc định nghĩa từ các đơn vị "cơ bản" hơn Cụ thể, do độ rọi bằng quang thông trên diện tích:
Trang 10
Chơng II tổng quan về PSoC
2.1 Giới thiệu về chíp PSoC:
Ngày nay Trong một hệ thống nhúng (Embeded system), hay sản phẩm, thiết bị phức tạp khác thì sự kết hợp của các khối ngoại vi nh: Các bộ lọc, khuyếch đại, bộ điều chế độ rộng xung PWM, hay các bộ chuyển đổi tơng tự – số (ADC), số - tơng tự (DAC) v.v là rất cần thiết và giúp giải quyết rất…nhiều bài toán đặt ra từ các hệ thống tự động phức tạp đến các thiết bị điện tử văn phòng, gia dụng
Càng nhiều thành phần trong một hệ thống thì càng chiếm nhiều không gian, nảy sinh các vấn đề trong việc thiết kế mạch, kết hợp các thành phần, và tăng độ phức tạp của hệ thống Để giải quyết vấn đề trên thì ngày nay công nghệ SoC (Sytem on chip) ra đời với xu hớng tích hợp hệ thống trong một con chíp Đi đầu trong việc phát triển và ứng dụng công nghệ này là hãng Cypress MicroSystems với việc cho ra đời chip PSoC
Thuật ngữ PSoC là viết tắt của cụm từ tiếng anh Programmable System
on Chip, nghĩa là hệ thống khả trình trong một chip Các chíp PSoC có thể thay
đổi cấu hình rất đơn giản băng cách gán các chức năng cho các khối tài nguyên có sẵn trên chip Hơn nữa ta cũng có thể kết nối tơng đối mềm dẻo các khối chức năng với nhau hay các cổng vào ra, đem lại sự thuận tiện cho các phơng án thiết kế
Trang 11Thành phần của các chíp PSoc gồm có: Bộ vi xử lý 8 bit, Bộ nhớ chơng trình (EEROM) có thể lập trình đợc và bộ nhớ RAM khá lớn tùy thuộc vào từng con khác nhau trong họ.
Để lập trình cho PSoC Cypress MicroSystems cung cấp phần mềm PSoC Designer Phần mềm này đợc thiết kế trên cơ sở hớng đối tợng với cấu trúc mô đun hóa Mỗi khối chức năng là một mô đun mềm Các khối chức năng đợc chia làm hai loại, khối tơng tự và khối số Cấu hình của chíp đợc thực hiện bằng cách sử dụng các chức năng có sẵn Để sử dụng các chức năng nào, ngời sử dụng chỉ cần kéo chức năng đó và gán vào các khối tài nguyên Tùy vào nhiệm vụ cụ thể mỗi chức năng sẽ chiếm một số lợng các khối số, khối tơng tự hoặc cả khối số và khối tơng tự nhất định Ngời lập trình cho PSoC có thể thiết lập chức năng và chế độ hoạt động cho từng chân vào ra của chip
Với khả năng thiết lập cấu hình linh hoạt và mạnh mẽ nh vậy một thiết
bị đo lờng, điều khiển có thể đợc gói gọn trong một chíp Chính vì vậy hãng Cypress MicroSystems không gọi PSoC là “Micro controller” (Vi điều khiển),
mà gọi là “PSoC device” hay “Thiết bị PSoC” với hy vọng rằng ngời sử dụng
sẽ có đợc những thiết bị đo lờng, điều khiển có kích thớc nhỏ gọn, sự hoạt
động ổn định và giá thành rẻ Thay thế đợc các thiết bị dựa trên vi xử lý và vi
điều khiển đã có trớc đây
2.2 Giới thiệu về chip PSoC CY8C27443-24PXI :
2.2.1 Thông số của CY8C27443-24PXI :
* Bộ vi xử lý với cấu trúc harvard
- Bộ vi xử lý có tốc độ lên đến 24MHz
- Lệnh nhân 8bit x 8 bit, thanh ghi tích lũy là 32bit
- Có thể hoạt động ở tốc độ cao mà tiêu tốn ít năng lợng
Trang 12- Dải điện áp hoạt động từ 3.00V tới 5.25V
- Điện áp hoạt động có thể giảm xuống 1.0V sử dụng chế độ kích điện áp
- Dải nhiệt độ chịu đựng từ - 400C đến 850C
Trang 15
Hình 2.1 Sơ đồ cấu trúc CY8C27443-24PXI
• Các khối ngoại vi có thể đợc sử dụng độc lập hoặc kết hợp tùy vào chức năng sử dụng
Có 12 khối ngoại vi tơng tự đợc thiết lập để làm các nhiệm vụ:
- Các bộ ADC lên tới 14 bit
- Các bộ DAC lên tới 9 bit
- Các bộ khuyếch đại có thể tùy chọn đợc hệ số khuyếch đại
- Các bộ lọc và các bộ so sánh có thể lập trình đợc
Có 8 khối ngoại vi số đợc thiết lập để làm các nhiệm vụ:
- 8 tới 32 bit cho timers, counters, và bộ điều chế độ rộng xung PWM
- Các modun kiểm tra lỗi (CRC modunles)
- Hai bộ truyền thông nối tiếp không đồng bộ hai chiều
- Các bộ truyền thông SPI Matster hoặc Slave có thể cấu hình đợc
- Có thể kết nối với tất cả các chân vào ra
• Xung nhịp của chip có thể lựa chọn đợc
- Bộ tạo dao động trong 24/48MHz có độ chính xác 2,5%
- Bộ tạo dao động ngoài có thể lựa chọn lên tới 24MHz
- Bộ dao động thạnh anh 32kHz bên trong
• Bộ nhớ linh hoạt trên chip
- Bộ nhớ Flash có không gian nhơ 16K với 50.000 lần ghi xóa
- 256 Byte không gian bộ nhớ RAM
- Chip có thể lập trình thông qua chuẩn nối tiếp (ISSP)
- Có thể nâng cấp từng phần bộ nhớ Flash
- Chế độ bảo vệ linh hoạt và đáng tin cậy
• Có thể lập trình đợc cấu hình cho từng chân của chíp
- Các chân vào ra ba trạng thái sử dụng Trigger Schmitt
Trang 16- Đầu ra logic có thể cung cấp dòng 25mA với điện trở treo cao hoặc thấp bên trong.
- Cung cấp tới 12 đầu vào tơng tự
- Đờng ra tơng tự có thể cung cấp dòng tới 30mA
- Thay đổi đợc ngắt trên từng chân
* Tài nguyên hệ thống
- Module truyền thông I2C Master và I2C Slave tốc độ lên tới 400KHz
- Bộ định thời Watchdog và Sleep phục vụ chế độ an toàn và chế độ nghỉ
- Module phát hiện điện áp thấp đợc cấu hình bởi ngời sử dụng
2.2.2 Cấu trúc vi xử lý
Chíp PSoC CY8C27443-24PXI đợc chế tạo dựa trên bộ vi xử lý mạnh
mẽ 8 bit với cấu trúc Harvart (cấu trúc Harvart là cấu trúc mà bus địa chỉ, bus dữ liệu và tín hiệu điều khiển bộ nhớ chơng trình và bộ nhớ dữ liệu độc lập nhau) Hoạt động chính của CPU đợc điều khiển bởi 5 thanh ghi Những thanh ghi này bị tác động bởi những lệnh khác nhau Ngời sử dụng có thể truy cập trực tiếp vào các thanh ghi này thông qua không gian bộ nhớ các thanh ghi
Program Counter (Thanh ghi đếm chơng trình ) CPU_PC
Bảng 2.1: Các thanh ghi của CPU
Trang 172.2.2.1 Thanh ghi cờ (Flags Register)
Thanh ghi cờ (Flags) gồm ba bit trạng thái: bit cờ không - Zero Flag bit [1]; bit cờ nhớ – Carry Flag bit[2]; bit Supervisory State [3] Bít cho phép ngắt toàn cục- Global Interrupt Enable bit[0] đợc dùng để cho phép hoặc cấm toàn bộ các ngắt Các cờ trên bị ảnh hởng bởi lệnh toán học, những lệnh logic vv…
Bit Name Reseved Reseved Reseved XI0 Super Carry Zero Global IE
Bảng 2.2: Thanh ghi cờ CPU_F
Bit7: Reseved (Cha đợc định nghĩa)
Bit6: Reseved(Cha đợc định nghĩa)
Bit5: Reseved(Cha đợc định nghĩa)
Bit4: XIO- Đợc đặt bởi ngời sử dụng cho phép lựa chọn giữa các dẫy thanh ghi
0=Bank0
1=Bank1
Bit3: Reseved(Cha đợc định nghĩa)
Bit2: Carry Đợc đặt bởi CPU để chỉ rõ toán tử logic hoặc toán học trớc
Trang 18Data[4]
Data[3]
Data[2]
Data[1]
Data[0]
Bảng 2.3: Thanh ghi bộ đếm chơng trình (CPU-PC)
2.2.2.3 Thanh ghi chứa
Thanh ghi chứa (Accumulator) là một thanh ghi đa mục đích, nó thờng
đợc sử dụng để lu giữ kết quả của bất cứ một lệnh nào sử dụng chế độ địa chỉ nguồn
Data[13]
Data[12]
Data[11]
Data[10]
Data[19]
Data[8]
Trang 19Bit # 7 6 5 4 3 2 1 0
Bảng 2.2.2.3: Thanh ghi chứa(CPU-A)
Bit [7:0]: 8 bit dữ liệu lu giữ kết quả của bất cứ một lệnh toán học
logic sử dụng chế độ địa chỉ nguồn
POR(Power on reset): Trạng thái của bit sau khi reset nguồn
System1: Do hệ thống điều chỉnh, ngời dùng không thể thay đổi trực tiếp
đợc giá trị của những bit này
2.2.2.4 Thanh ghi con trỏ Stack
Thanh ghi con trỏ Stack (Stack Pointer) lu giữ địa chỉ của đỉnh ngăn Stack trong không gian dữ liệu Nó bị tác động bởi những lệnh nh là PUSH, POP, LCALL, RETI và RET Nói chung là tất cả những lệnh có liên quan đến Stack của phần mềm nó cũng có thể ảnh hởng bởi lệnh SWAP và lệnh ADD
Bảng 2 4: Thanh ghi con trỏ Stack (CPU-SP)
Bit [7:0]: 8 bit dữ liệu lu giữ giá trị con trỏ Stack hiện thời (trỏ vào đỉnh của Stack)
Trang 202.2.2.5 Thanh ghi chỉ số
Thanh ghi chỉ số đợc dùng để lu giữ giá trị Offset (độ lệch) trong chế độ
địa chỉ chỉ số Tiêu biểu là nó đợc dùng để địa chỉ một khối dữ liệu bên trong không gian nhớ dữ liệu
Bảng2.5: Thanh ghi chỉ số(CPU-X)
Bit [7:0]: 8 bit dữ liệu lu giữ chỉ số cho bất cứ một lệnh sử dụng chế độ
địa chỉ chỉ số
2.2.3 Định dạng của lệnh
2.2.3.1 Lệnh 1 byte
Lệnh 1 byte là lệnh không dùng địa chỉ hay dữ liệu nh toán hạng Lệnh
1 byte sử dụng một mã lệnh 8 bit ví dụ nh RET, ASR, INC, DEC…
Dạng lệnh 1 byte
Byte 08-Bit Opocde
Bảng 2.6: Dạng lệnh 1 byte 2.2.3.2 Lệnh 2 byte
Lệnh 2 byte là lệnh dùng duy nhất một toán hạng là dữ liệu hay địa chỉ Lệnh 2 byte sử dụng byte đầu tiên để chứa mã lệnh, byte thứ hai để chứa dữ liệu hoặc địa chỉ hoặc nó sử dụng 4 bit đầu cho mã lệnh và 12 bit sau cho địa chỉ
Bảng 2.7: Dạng lệnh 2 byte
Trang 212.2.3.3 Lệnh 3 byte
Lệnh loại này sử dụng 3 byte bởi vì nó đợc sử dụng để di chuyển dữ liệu giữa hai địa chỉ trong không gian địa chỉ mà ngời sử dụng có thể truy nhập Hoặc nó dùng để lu giữ một giá trị địa chỉ tuyệt đối 16 bit trong các lệnh LCALL và LJMP
Bảng 2.8: Dạng lệnh 3 byte.
2.2.4 Các chế độ địa chỉ trong PSoC
2.2.4.1 Chế độ địa chỉ nguồn tức thời (Source Immediate)
Những lệnh sử dụng chế độ địa chỉ này có giá trị nguồn đợc lu giữ trong toán hạng 1 của lệnh, kết quả đợc lu giữ trong thanh ghi A, thanh ghi F, thanh ghi SP hay thanh ghi X đợc chỉ rõ trong lệnh Lệnh sử dụng chế độ địa chỉ nay
có độ dài là 2 byte
2.2.4.2 Chế độ địa chỉ nguồn trực tiếp (Source Direct)
Trong chế độ này thì địa chỉ nguồn đợc lu giữ trong toán hạng 1 của lệnh Trong suốt quá trình thi hành lệnh thì địa chỉ đợc dùng để lấy giá trị nguồn từ RAM hoặc từ không gian địa chỉ thanh ghi Kết quả đợc chỉ rõ trong lệnh là đặt vào thanh ghi X hay thanh ghi A Tất cả những lệnh sử dụng chế độ
địa chỉ trực tiếp đều là lệnh có độ dài 2 byte
2.2.4.3 Chế độ địa chỉ nguồn chỉ số.
Trong chế độ này thì dữ liệu của nguồn đợc truy suất trong RAM hoặc không gian địa chỉ thanh ghi thông qua địa chỉ là giá trị hiện thời của thanh ghi X cộng với một chỉ số Kết quả đợc chỉ rõ trong lệnh là lu trong thanh ghi
X hay thanh ghi A Lệnh có độ dài là 2 byte
2.2.4.4 Chế độ địa chỉ đích trực tiếp (Destination Direct)
Trang 22Những lệnh thuộc chế độ địa chỉ này có địa chỉ đợc lu trong mã máy của lệnh, địa chỉ nguồn đợc chỉ rõ trong lệnh là thanh ghi A hay X Tất cả những lệnh sử dụng chế độ địa chỉ này đều là lệnh 2 byte.
2.2.4.5: Chế độ địa chỉ chỉ số (Destination Indexed)
Những lệnh thuộc chế độ địa chỉ này có đích đợc xác định bằng cách lấy giá trị của thanh ghi X cộng với một chỉ số làm địa chỉ để truy xuất vào bộ nhớ, nguồn đợc xác định trong lệnh là thanh ghi A hoặc một giá trị tức thời Những lệnh sử dụng chế độ địa chỉ này đều là lệnh có độ dài 2 byte
2.2.4.6 Chế độ địa chỉ đích trực tiếp, nguồn tức thời tức thời (Destination Direct, Source Immediate)
Những lệnh thuộc chế độ địa chỉ này có địa chỉ của đích đợc lu giữ trong toán hạng 1 của lệnh Giá trị của nguồn đợc lu trong toán hạng 2 câu lệnh Tất cả những lệnh thuộc chế độ địa chỉ này đều là lệnh có độ dài 3 byte
2.2.4.7 Chế độ địa chỉ đích chỉ số, nguồn tức thời (Destination Indexed, Source Immediate)
Trong chế độ này thì giá trị của thanh ghi X cộng với một chỉ số đợc lấy làm địa chỉ để lấy dữ liệu trong bộ nhớ Còn dữ liệu nguồn là một số trực tiếp Tất cả những lệnh thuộc chế độ địa chỉ này đều là lệnh 3 byte
2.2.4.8 Chế độ địa chỉ đích trực tiếp, nguồn trực tiếp (Destination Direct , Source Direct)
Chỉ có duy nhất một lệnh sử dụng chế độ địa chỉ này, địa chỉ của đích
đ-ợc lu giữ trong toán hạng 1 của lệnh còn địa chỉ của nguồn đđ-ợc lu giữ trong toán hạng 2 của lệnh Tất cả những lệnh sử dụng chế độ địa chỉ này đều là lệnh có độ dài 3 byte
2.2.4.9 Chế độ địa chỉ sử dụng con trỏ tự động tăng địa chỉ
Trang 23Con trỏ là toán hạng nguồn (Source Indirect Post Increment) Chỉ có duy nhất một lệnh sử dụng chế độ địa chỉ này, địa chỉ nguồn lu giữ trong toán hạng 1 hoạt động nh địa chỉ của một con trỏ Trong suốt quá trình lệnh thi hành thì giá trị của con trỏ sẽ quyết định xem dữ liệu nào trong Ram sẽ đợc
đọc Sau khi đọc xong dữ liệu thì giá trị của con trỏ đợc tăng lên 1
Bảng 2.9 : Các thanh ghi của bộ điều khiển ngắt.
Bộ điều khiển ngắt cho phép một đoạn mã của ngời lập trình đợc thực hiện mỗi khi 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ờ
Trang 242.2.5.1: Mô tả cấu trúc của bộ điều khiển ngắt
Hình 2.2: Sơ đồ khối hoạt động của bộ điều khiển ngắt.
Interrupt Source: Nguồn ngắt (bộ định thời, các chân vào ra đa chức năng)Interrupt Taken or INT_CLRx Write: Thi hành ngắt hoặc xoá ngắt
INT_MSKx: Lập mặt nạ che ngắt
Post Interrupt: Thông báo ngắt
Pending Interrupt: Ngắt chờ
M8C Core
INT_MSKx Mask Bit Setting
Posted Interrup t
Pending Interrupt
GIE CPU_F[0]
Trang 25Priority Encoder: Bộ mã hoá mức u tiên của ngắt
GIE(CPU_F[0]): Cho phép ngắt toàn cục (Global Interrupt Enable)
Interrupt Request: Yêu cầu 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:
- Lu 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 Lu ý 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
Trang 26phụ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.5.2 Các thanh ghi ngắt
Thanh ghi INT_CLRx :
đợc quy vào tên gọi chung INT_CLRx Những thanh ghi INT_CLRx là tơng
tự nh những thanh ghi INT_MSKx nghĩa là chúng giữ một bit cho mỗi nguồn ngắt Tuy nhiên, về mặt chức năng thì thanh ghi INT_CLRx lại giống thanh ghi INT_VC mặc dùng chúng hoạt động độc lập nhau Khi một thanh ghi INT_CLRx đợc đọc thì bất kỳ bit nào đợc đặt đều chỉ rõ là ngắt nào đã thông báo cho tài nguyên phần cứng đó Bởi vậy, đọc những thanh ghi đó sẽ giúp cho ngời sử dụng xác định đợc tất cả các thông báo ngắt
Cách một giá trị riêng rẽ đợc ghi vào thanh ghi INT_CLRx đợc quyết
định bởi bit ENSWINT (Enable Software Interrupt) trong thanh ghi INT_MSK3
Thanh ghi INT_MSKx
Có 3 thanh ghi mặt nạ che ngắt (INT_MSK0, INT_MSK1 và INT_MSK3) có thể đợc quy định vào thanh ghi có tên gọi chung INT_MSKx Nếu đợc xoá thì mỗi bit trong thanh ghi INT_MSKx sẽ ngăn chặn một ngắt t-
ơng ứng với bit đó trở thành một ngắt chờ xử lý (đầu vào của bộ mã hoá u
Trang 27tiên) Tuy nhiên một ngắt vẫn có thể đợc thông báo ngay cả khi mặt nạ của nó
là 0 Nghĩa là tất cả các bit trong thanh ghi INT_CLRx đều độc lập với các bit trong thanh ghi INT_MSKx Nếu một bit trong thanh ghi INT_MSKx đợc set
=1 thì nguồn ngắt kết hợp với bit mặt nạ của nó sẽ sinh ra một ngắt để trở thành ngắt chờ
Thanh ghi INT_VC
Thanh ghi INT_VC thực hiện 2 nhiệm vụ Khi thanh ghi đợc đọc thì nó
sẽ trả về giá trị của ngắt chờ có mức u tiên cao nhất Ví dụ : Nếu ngắt GPIO
và ngắt I2C đang ở vị trí chờ và thanh ghi INT_VC đợc thì nó sẽ đọc ra giá trị 1CH (Là giá trị của ngắt GPIO) Tuy nhiên, nếu không có ngắt nào đang ở trạng thái chờ thì việc đọc thanh ghi INT_VC sẽ trả về giá trị 00H Đây là giá trị của vetor reset trong bảng vector ngắt
Thanh ghi CPU_F
Chỉ có bit GIE trong thanh ghi CPU_F là có ảnh hởng tới bộ điều khiển ngắt, bit này là bit cho phép ngắt toàn cục (Global Interrupt Enable) Chỉ khi bit này đợc set thì CPU mới có thể thực hiện một ngắt chờ
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Access
2)
RW:FF
Trang 28Bả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 Nhng để 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ố
Trang 29Mộ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ẽ lu 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 Nhng trong trờng hợp này thì chế độ hoạt động của GPIO là bất kỳ trừ khi độ cao trở
Trang 30Và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
2.2.6.1 Mô tả cấu trúc của một chân vào ra đa chức năng.
Sơ đồ khối chính của một khối GPIO đợc minh hoạ trong hình 2-4 Lu
ý 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
Trang 31Hình 2.3: Sơ đồ một khốiGPIO
2.2.6.2 Các thanh ghi của GPIO
Đối với một khối GPIO đã đợc lựa chọn, những thanh ghi độc lập đợc xác định địa chỉ nh trong bảng 2-23 Trong phần tên của thanh ghi, ký hiệu
“x” là số thứ tự của cổng Đợc cấu hình theo cấp độ chíp (x=0 tới 7) DA[1:0]
đợc quy vào 2 trọng số nhỏ nhất của địa chỉ thanh ghi
2
Trang 321
Bảng 2.12: Địa chỉ bit của thanh ghi bên trong.
Thanh ghi PRTxDR
Ghi dữ liệu vào một bit trong thanh ghi PRTxDR sẽ làm cho trạng thái
đầu ra của chân tơng ứng ở mức cao (DIN=1) hoặc ở mức thấp (DIN=0) Trừ khi chế độ bypass đợc lựa chọn (hoặc I2C Enable= 1 hay thanh ghi lựa chọn toàn cục đợc viết ở mức cao)
Việc đọc giá trị của PRTxDR sẽ trả về giá trị thực trạng thái của chân,
đợc quan sát bởi bộ đệm đầu vào Giá trị đó có thể không giống với giá trị mong muốn ở đầu ra nếu nh tải đợc nối với chân quá lớn
Thanh ghi PRTxIE
Thanh ghi PRTxIE đợc dùng để mở và đóng việc cho phép ngắt nội tại tới một khối GPIO Giá trị 1 sẽ cho phép ngắt đầu ra INT0 và giá trị 0 sẽ cho phép ngắt đầu ra INT0 do đó có thể ở trạng thái trở cao
Thanh ghi PRTxGS
Thanh ghi PRTxGS đợc sử dụng để lựa chọn khối cho sự kết nối tới đầu vào hoặc đầu ra toàn cục Việc viết giá trị logic cao vào thanh ghi này sẽ cho phép global bypass Nếu chế độ cổng ra là cao trở thì chân đó đợc lựa chọn cho đầu vào toàn cục Nếu chế độ cổng ra khác chế độ cao trở thì chân đó đợc lựa chọn là đầu ra toàn cục, bỏ qua giá trị của thanh ghi dữ liệu (giả sử I2C Enable=0) Nếu thanh ghi đợc xoá về không thì chức năng vào ra toàn cục của chân đó bị khoá
Trang 33Thanh ghi PRTxDMx
Có 8 chế độ điều khiển cho mỗi một chân của cổng Ba bit chế độ đợc
sử dụng để lựa chọn một trong 8 chế độ nói trên Ba bit chế độ đợc phân chia trong ba thanh ghi khác nhau, (PRTxDM0, PRTxDM1, PRTxDM2) Vị trí t-
ơng ứng của bit trong ba thanh ghi sẽ tơng ứng với vị trí chân ra của cổng (Ví
dụ ba bit điều khiển cho chân P2[1] sẽ là bit PRT2DM0[1], PRT2DM1[1], PRT2DM2[2]) Tuy rằng ba bit này đợc phân trong ba thanh ghi khác nhau nhng chúng lại hay đợc sử dụng cùng nhau theo các cặp bit tơng ứng Ví dụ
để xét chế độ cho chân ra P2[1] thì ta quan tâm tới các bit trong DM2, DM1, DM0 hay DM[2:0], trong bảng sau sẽ cho ta cái nhìn tổng quan về sự phân chia này
Bảng 2.13: Các chế độ điều khiển chân ra của chíp.
Chế độ DM [2:0] Trạng thái của chân Mô Tả
000b Resistive Pull Down Khoẻ ở mức cao, điện trở treo ở mức
thấp 001b Strong Driver Chế độ khoẻ ở cả mức cao và thấp
010b High Impedenca Trở kháng cao cả ở mức cao và thấp,
cho phép đầu vào số 011b Resistive Pull Up Khoẻ ở mức thấp, điện trở treo ở mức
cao 100b Open Drain High Chậm, khoẻ ở mức cao, trở kháng cao ở
mức thấp 101b Slow Strong Driver Chế độ chậm, khoẻ ở mức cao và thấp
Trang 34Thanh ghi PRTxICx
Chế độ ngắt của từng châm đợc quyết định bởi các bit trong hai thanh ghi PRTxIC0 và PRTxIC1 chúng đợc quy vào là IM0 và IM1 hay IM[1:0]
Có 4 chế độ ngắt có thể cho chân của cổng Hai bit chế độ đợc yêu cầu để lựa chọn các chế độ nói trên và từng cặp bit này đợc phân chia trong 2 thanh ghi khác nhau (PRTxIC0 và PRTxIC1) Vị trí của bit là tơng ứng với vị trí của chân ví dụ chân 2 của cổng 1 sẽ tơng ứng với bit 2 trong cả hai thanh ghi PRT1IC0 và PRT1IC1 Từng cặp bit này đợc xem nh là một nhóm Bảng sau
sẽ cho ta thấy rõ hơn về các chế độ ngắt trong GPIO
Chế độ 10b có tác dụng là khối GPIO sẽ xác nhận một đờng ngắt (INT0) khi điện áp của chân ở mức cao Bit cho phép đờng ngắt của khối GPIO đợc đặt lên mức cao
Chế độ 11b có tác dụng là khối GPIO sẽ xác nhận một đờng ngắt (INT0) khi điện áp của chân đối lập so với giá trị đọc trớc đó Chế độ này thay
đổi theo hai chế độ trên, tuỳ thuộc vào giá trị mà trớc đó nó đọc đợc từ cổng trong quá trình đọc thanh ghi dữ liệu cổng (PRTxDR) Nếu trớc đó nó đợc giá trị 0 từ GPIO thì GPIO sẽ chuyển sang ngắt ở mức độ cao Còn nếu giá trị nó
đọc đợc trớc đó là 1 thì GPIO sẽ chuyển sang ngắt ở mức thấp
Trang 352.2.7 Các bộ tạo dao động
2.2.7.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
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 Lu ý 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ì
Trang 36phả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 lu 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.7.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
Trang 37Cao 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.7.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
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)
Trang 38
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 nhsau:
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) Lu ý 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
Trang 392.2.8 Vòng khóa pha Phase Locked Loop (PLL)
Address Name Bit7 Bit6 Bit5 Bit
4
Bit 3
1,E0h OSC_CR0 32k select PLL
Mode
No Buzz Sleep[1:0] CPU Speed[2:0] RW:00
DIS
RW:00
Bảng 2.19 : Thanh ghi của Phase Locked Loop
Chức năng PLL sẽ phát ra xung nhịp hệ thống với độ chính xác của thạch anh Nó đợc thiết kế cung cấp một bộ phát xung nhịp 23.986 MHz khi
sử dụng với thạch anh 32.768 kHz
Mặc dù PLL ăn theo độ chính xác của thạch anh Nó vẫn yêu cầu thời gian để chốt vào tần số chíp khi khởi động lần đầu Do độ dài của thời gian phụ thuộc vào PLLGAIN đợc điều khiển bởi bit 7 trong thanh ghi OSC_CR2 Nếu bit này đợc giữ ở mức thấp thì thời gian chốt sẽ nhỏ hơn 10 ms Nếu bit này đợc lu giữ ở mức cao thì thời gian chốt sẽ lớn hơn 50ms Sau khi việc chốt hoàn tất thì bit này đợc khuyến cáo là nên giữ ở mức cao để giảm sự bất ổn ở
đầu ra Nếu có thể vợt qua đợc thời gian chốt dài thì bit PLLGAIN có thể đợc giữ ở mức cao trong suốt thời gian còn lại
Sau khi bộ phát xung nhịp thạch anh bên ngoài đợc lựa chọn và hoạt
động thì những thủ tục sau đây sẽ cho phép chế độ PLL và cho phép chốt tần
Trang 40d Đặt tần số CPU lên cao hơn nếu muốn Để làm việc này thì ta thay
đổi giá trị các bit CPU Speel trong thanh ghi OSC_CR0 Tần số của CPU sẽ
đ-ợc thay đổi ngay lập tức khi những bit này đđ-ợc set
Nếu những thiết lập thích hợp đợc lựa chọn trong PsoC Designer thì những bớc trên sẽ đợc thực hiện tự động trong file boot.asm.
2.2.9 Sleep And Watchdog
Address Name Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Acces 0,E0h INT_MSKO CV3 Sleep GPIO Analog3 Analog2 Analog1 Analog0 V
Monitor
RW:00 0,E3h RES_WDT WDSL_Clear[7:0] W:00 X,FEh CPU_SCR1 ECOEXW ECOEX IRAMDIS RW:00 1,E0h OSC_CR0 32k
Select
PPL Mode
No Buzz
Sleep[1:0] CPU Speed[2:0] RW:00 1,E9h ILO_TR Bias Trim[1:0] Freq Trim[3:0] W:00 0,E8h ECO_TR PSSDC[1:0] W:00 X,FFh CPU_SCR0 GIES WDRS PORS Sleep STOP RW:XX
Bảng 2.20: Những thanh ghi của Sleep và Watchdog.
Mục đích của chế độ nghỉ là để giảm năng lợng tiêu thụ trung bình của
hệ thống đến mức có thể Hệ thống đi vào chế độ đợc khởi tạo và điều khiển bởi vi chơng trình Trong trạng thái này, CPU đợc dừng lại ở một biên giới lệnh và bộ phát xung nhịp 24/48 MHz, modun bộ nhớ Flash và giả band-gap giảm năng lợng tiêu thụ Khối PSoC duy nhất còn hoạt động là bộ phát xung nhịp 32KHz (Bên trong hoặc bên ngoài) Khối PSoC bấm giờ từ sự lựa chọn xung nhịp 32KHz và mạch theo dõi điện áp cung cấp
Các khối PSoC tơng tự có hai chế độ giảm nguồn đợc điều khiển bởi vi chơng trình và độc lập với trạng thái nghỉ Khối Continuous Timer Analog có thể vẫn hoạt động, từ khi chúng không yêu cầu nguồn xung nhịp Tuy nhiên, khối Analog SC sẽ không hoạt động từ lúc nguồn xung nhịp nội tại cung cấp cho chúng ngừng hoạt động
Hệ thống có thể chỉ đợc đánh thức khỏi chế độ nghỉ bằng một yêu cầu ngắt hoặc sự kiện reset hệ thống Đồng hồ nghỉ cung cấp những ngắt định kỳ