Các cổng vào ra đa chức năng

Một phần của tài liệu Xây dựng hệ đo điều khiển cường đồ ánh sáng dùng psoc (Trang 27 - 35)

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

0)

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. 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.

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ẽ 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ở

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.

2.2.6.1. Mô tả cấu trúc của một chân vào ra đa chức năng. (adsbygoogle = window.adsbygoogle || []).push({});

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.

Hì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.

XOI DA[1:0] Register Resets to: (Name) Function

0 00b PRTxDR 0 DIN Data

0 01b PRTxIE 0 IE Interrupt Enable

0 10b PRTxGS 0 BYP Global Select

0 11b PRTxDM

2

1 DM2 Drive Mode, Bit 2

0

1 01b PRTxDM

1

1 DM1 Drive Mode, Bit 1

1 10b PRTxIC0 0 IM0 Intrpt, Mask, Bit 0

1 11b PRTxIC1 0 IM1 Intrpt, Mask, Bit 1

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á

Thanh 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

110b High Impedance,

Analog

Chế độ cao trở cả mức cao và thấp, đầu vào bị khoá

111b Open Drain Low Chế độ chậm, khoẻ ở mức thấp, cao trở

Thanh 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ế Độ Ngắt IM[1:0] Mô Tả

00b Vô hiệu hoá ngắt, không xác nhận đầu ra INT0

01b Xác nhận ngắt khi chân ở mức thấp

10b Xác nhận ngắt khi chân ở mức cao

110 Xác nhận ngắt khi có sự thay đổi trạng thái logic của chân

Bảng 2.14: Chế độ ngắt của GPIO.

Chế độ 00b sẽ vô hiệu hoá ngắt của chân, kể từ khi bit cho phép ngắt GPIO là 1 (Của thanh ghi PRTxIE).

Chế độ 01b 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 thấp. Bit cho phép đờng ngắt của khối GPIO đợc đặt lên mức cao.

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.

Một phần của tài liệu Xây dựng hệ đo điều khiển cường đồ ánh sáng dùng psoc (Trang 27 - 35)