Cách hoạt động

Một phần của tài liệu Tìm hiểu vi điều khiển AVR ATMEGA 128 (Trang 30)

Khi khảo sát các cổng như là các cổng vào ra số thông thường thì tính chất của các cổng (PortA, PortB,…PortG) là tương tự nhau, nên ta chỉ cần khảo sát một cổng nào đó trong số 7 cổng của vi điều khiển là đủ.

Mỗi một cổng vào ra của vi điều khiển được liên kết với 3 thanh ghi: PORTx, DDRx, PINx, (ở đây x là để thay thế cho A, B,…G). Ba thanh ghi này sẽ được phối hợp với nhau để điều khiển hoạt động của cổng, chẳn hạn thiết lập cổng thành lối vào có sử dụng điện trở kéo, ... Sau đây là diễn tả cụ thể vai trò của 3 thanh ghi trên.

Thanh Ghi DDRx.

Đây là thanh ghi 8 bit (có thể đọc ghi) có chức năng điều khiển hướng của cổng (là lối ra hay lối vào). Khi một bit của thanh ghi này được set lên 1 thì chân tương ứng với nó được cấu hình thành ngõ ra. Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân tương ứng với nó được thiết lập thành ngõ vào. Ví dụ: Khi ta set tất cả 8 bit của thanh ghi DDRA đều là 1, thì 8 chân tương ứng của portA là PA1, PA2, … PA7 (tương ứng với các chân số 50, 49, …44 của vi điều khiển) được thiết lập thành ngõ ra.

Thanh Ghi PORTx.

PORTx là thanh ghi 8 bit có thể đọc ghi. Đây là thanh ghi dữ liệu của PORTx. Nếu thanh ghi DDRx thiết lập cổng là lối ra, khi đó giá trị của thanh ghi PORTx cũng là giá trị của các chân tương ứng của PORTx. Nói cách khác, khi ta ghi một giá trị logic lên 1 bit của thanh ghi này thì chân tương ứng với bit đó cũng có cùng mức logic. Khi thanh ghi DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi điều khiển cổng. Cụ thể, nếu một bit của thanh ghi này được ghi thành 1 thì điện trở treo ở chân tương ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở treo ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao trở (Hi-Z).

Thanh Ghi PINx.

PINx không phải là một thanh ghi thực sự, đây là địa chỉ trong bộ nhớ I/O kết nối trực tiếp tới các chân của cổng. Khi ta đọc PORTx tức ta đọc dữ liệu được chốt trong PORTx, còn khi đọc PINx thì giá trị logic hiện thời ở chân của cổng tương ứng được đọc. Vì thế đối với thanh ghi PINx ta chỉ có thể đọc mà không thể ghi. Bảng 2.1 thể hiện các thiết lập cách hoạt có thể có của cổng.

Bảng 2.1 Cấu hình cho các chân cổng

DDRxn là bit thứ n của thanh ghi DDRx PORTxn là bit thứ n của thanh ghi PORTx Dấu “x” ở cột thứ 3 để chỉ giá trị logic là tùy ý 2.3 Bộ định thời của ATmega 128

ATmega128 có 4 bộ định thời, bộ định thời 1 và 3 là bộ định thời 16 bit, bộ định thời 0 và 2 là bộ định thời 8 bit. Dưới đây là mô tả chi tiết của 4 bộ định thời.

Bộ định thời 1 và 3 là bộ định thời 16 bit, bộ định thời 1 sử dụng 13 thanh ghi liên quan, còn bộ định thời 3 sử dụng 11 thanh ghi liên quan với nhiều chế độ thực thi khác nhau.Vì bộ định thời 1 và 3 hoạt động giống nhau nên ở đây chỉ trình bày bộ định thời 1. Một điểm cần để ý là trong các thanh ghi liên quan tới bộ định thời 1 và 3 thì có nhiều thanh ghi được chia sẽ cho cả hai bộ định thời, chẳng hạn thanh ghi ETIPR có bít cuối là OCF1C được dùng cho bộ định thời 1, các bit còn lại là dùng cho bộ định thời 3. Thậm chí có những thanh ghi chia sẽ cho bộ định thời 0 hoặc 2, chẳng hạn thanh ghi TIMSK có hai bit cuối dùng cho bộ định thời 2, hai bit đầu dùng cho bộ định thời 0, các bit còn lại dùng cho bộ định thời 1.

Các định nghĩa sau sẽ được sử dụng cho bộ định thời 1 và 3:

BOTTOM Bộ đếm đạt tới giá trị BOTTOM khi nó có giá trị 0000h MAX Bộ đếm đạt tới giá trị MAX khi nó bằng FFFFh

TOP Bộ đếm đạt giá trị TOP khi nó bằng với giá trị cao nhất trong chuỗi đếm, giá trị cao nhất trong chuỗi đếm không nhất thiết là FFFFh mà có thể là bất kì giá trị nào được qui định trong thanh ghi OCRnX (X=A,B,C) hay ICRn, tùy theo chế độ thực thi.

Hình 2.3 Sơ đồ khối bộ định thời 0

Bộ định thời 0 là bộ định thời 8 bit, bộ định thời 0 liên quan tới 7 thanh ghi với nhiều chế độ thực thi khác nhau.

Các định nghĩa sau sẽ được sử dụng cho bộ định thời 0 và 2: BOTTOM Bộ đếm đạt tới giá trị BOTTOM khi nó có giá trị 00h. MAX Bộ đếm đạt tới giá trị MAX khi nó bằng FFh.

TOP Bộ đếm đạt giá trị TOP khi nó bằng với giá trị cao nhất trong chuỗi đếm, giá trị cao nhất trong chuỗi đếm không nhất thiết là FFh mà có thể là bất khì giá trị nào được qui định trong thanh ghi OCRn (n=0,2), tùy theo chế độ thực thi.

Bộ định thời 0 có vài đặc điểm chính như: Bộ đếm đơn kênh, xóa bộ định thời khi có sự kiện so sánh khớp và tự nạp lại, có thể đếm từ bộ dao động 32 KHz bên ngoài, chế độ PWM hiệu chỉnh pha,…

2.3.3 Bộ định thời 2

Hình 2.4 Sơ đồ khối bộ định thời 2

Bộ định thời 2 là bộ định thời 8 bit, bộ định thời 2 liên quan tới 5 thanh ghi với nhiều chế độ thực thi khác nhau. Các thuộc tính chính của bộ định gồm: Bộ đếm đơn kênh, xóa bộ định thời khi có sự kiện “so sánh khớp” và tự động nạp lại, PWM hiệu chỉnh pha, đếm sự kiện bên ngoài…

CHƯƠNG 3 : MỘT SỐ GIAO DIỆN NGOẠI VI

3.1 Giao diện ngoại vi nối tiếp SPI

Giao diện ngoại vi nối tiếp (SPI) cho phép chuyển dữ liệu đồng bộ tốc độ cao giao Atmega128 và các thiết bị ngoại vi hoặc giữa nhiều thiết bị AVR với nhau. Giao diện ngoại vi nối tiếp (SPI) bao gồm các đặc điểm dưới đây:

- Chuyển song công, chuyển dữ liệu đồng bộ 3 dây (Three wire)

- Chế độ điều khiển Master/Slave

- Chuyển dữ liệu MSB First hoặc LSB First - 7 bít rate có thể lập trình

- Cờ ngắt cuối chế độ truyền tải - Đánh thức khỏi chế độ chờ Idle

- Chế độ SPI Master (CK/2) Tốc độ kép (adsbygoogle = window.adsbygoogle || []).push({});

Kết nối giữa các CPU Slave và master với SPI được chỉ ra trong hình 3.1. Hệ thống thì bao gồm 2 thanh ghi Shift và bộ tạo xung nhịp Master. SPI Master khởi tạo 1chu kì giao tiếp khi mà có sườn xung xuống của Slave lựa chọn chân SS của Derised Slave. Master và Slave chuẩn bị dữ liệu để gửi vào các thanh ghi Shift tương ứng của chúng, và master sinh ra 1 xung nhịp cần thiết trên nhánh SCK chuyển tiếp dữ liệu. Dữ liệu thì được chuyển từ Master sang Slave trên đầu ra Master Out -> đầu vào Slave In, MOSI, các nhánh, và từ Slave đến Master bằng chân Master In -> Slave Out, MISO, line. Sau mỗi gói dữ liệu, Master sẽ đồng bộ hóa với Slave bằng 1 xung cao lựa chọn Slave, Bít SS, Line.

Khi được cấu hình như là 1 Master, giao diện SPI không có sự tự động điều khiển của đường SS. Việc này phải được điều khiển bằng phần mềm người sử dụng trước khi quá trình giao tiếp có thể bắt đầu. Khi nó được thực hiện việc viết 1 Byte lên thanh ghi dữ liệu SPI sẽ khởi động bộ tạo xung nhịp SPI và phần cứng sẽ di chuyển 8 bít dữ liệu vào trong Slave. Sau khi di

chuyển 1 Byte, bộ tạo xung nhịp SPI dừng lại, việc cài đặt cờ báo kết thúc quá trình chuyển dữ liệu (SPIF). Nếu như ngắt SPI kích hoạt bít (SPIE) trong thanh ghi SPCR được cài đặt, 1 ngắt được truy vấn. Master có thể tiếp tục chuyển byte dữ liệu tiếp theo bằng việc viết vào trong SPDR hoặc tín hiệu kết thúc của gói dữ liệu bằng xung cao được Slave lựa chọn, nhánh SS. Byte đến cuối cùng sẽ được giữ ở trong bộ đệm của thanh ghi cho lần sử dụng cuối cùng.

Khi được cấu hình như là Slave, giao diện SPI sẽ remain sleeping với 3 trạng thái MISO chỉ cần chân SS được điều khiển ở mức cao. Trong trạng thái này, phần mềm có thể cập nhật các thanh ghi dữ liệu SPI – SPDR, nhưng dữ liệu sẽ không được di chuyển ra ngoài bằng những xung nhịp đến trên chân SCK cho đến khi chân SS được điều khiển ở mức thấp. 1 byte vừa hoàn thành sự di chuyển thì cờ báo kết thúc sự di chuyển SPIF được cài đặt.

Nếu như ngắt SPI kích hoạt bít SPIE trong thanh ghi SPCR được cài đặt, 1 ngắt được yêu cầu. Slave có thể tiếp tục đặt dữ liệu mới để gửi vào trong thanh ghi SPDR trước khi quá trình đọc dữ liệu đến tiếp tục. Byte đến cuối cùng sẽ được dữ trong bộ đệm của thanh ghi sau lần sử dụng.

Hệ thống được ghi vào bộ đệm đơn trong quá trình định hướng chuyển dữ liệu và được ghi vào bộ đệm kép trong quá trình định hướng dữ liệu đến. Điều này có nghĩa là các byte được di chuyển không thể được ghi vào thanh ghi dữ liệu SPI trước khi toàn bộ chu kì chuyển dời được hoàn thành. Khi dữ liệu đang đến, tuy nhiên 1 kí tự đã đến phải được đọc từ thanh ghi dữ liệu SPI trước khi kí tự tiếp theo được di chuyển vào trong hoàn toàn. Nói cách khác bít đầu tiên bị mất. Trong chế độ SPI Slave quá trình điều khiển logic sẽ lấy mẫu tín hiệu đến của chân SCK để đảm bảo việc lấy mẫu chính xác của tín hiệu xung nhịp mức thấp cực tiểu và mức cao của chu kì nên là:

- Chu kì thấp: ngắn hơn 2 lần chu kì xung nhịp CPU - Chu kì cao: dài hơn 2 lần chu kì xung nhịp CPU

Khi mà SPI được kích hoạt, hướng dữ liệu của các chân MOSI, MISO, SCK, SS được ghi đè theo bảng 3.1

Pin Hướng Master SPI Hướng Slave SPI

MOSI User Defined Input

MISO Input User Defined

SCK User Defined Input

SS User Defined Input

3.2 USART

Bộ chuyển phát và thu nhận nối tiếp đồng bộ dị bộ vạn năng - USART là 1 thiết bị truyền thông nối tiếp có độ linh hoạt cao. Các đặc điểm chính là:

- Hoạt động song công (phụ thuộc vào các thanh ghi chuyển phát và thu nhận nối tiếp)

- Hoạt động đồng bộ hoặc dị bộ

- Hoạt động đồng bộ hóa khóa Master hoặc Slave - Máy phát tốc độ Baud độ chính xác cao

- Hỗ trợ truyền các khung nối tiếp với 5, 6, 7, 8 hoặc 9 bit dữ liệu và 1 hoặc 2 bit stop

- Sự tạo bậc chẵn hoặc lẻ và hỗ trợ kiểm tra tính chẵn lẻ bằng phần cứng.

- Sự dò tràn dữ liệu - Dò lỗi khung truyền

- Bộ lọc dải thấp kĩ thuật số và sự dò bit khởi động lỗi bao gồm bộ lọc nhiễu.

- Chế độ truyền thông nhiều bộ xử lí - Chế độ truyền thông dị bộ tốc độ kép

ATmega128 có hai bộ USART là USART0 và USART. Hai bộ USART này là độc lập nhau, điều này có nghĩa là hai khối USART0 và USART1 có thể hoạt động cùng một lúc. Sơ đồ khối đơn giản của khối USART thể hiện trong hình 3.3:

Hình 3.3 Sơ đồ khối bộ USART

Sơ đồ khối của bộ USART phân chia thành ba phần rõ ràng (các hộp nét đứt trong sơ đồ khối hình 3.3): Khối tạo xung clock, khối truyền và khối nhận. Còn các thanh ghi điều khiển USART được dùng chung.

Khối logic phát xung nhịp thì bao gồm khối logic đồng bộ các đầu vào xung nhịp bên ngoài được sử dụng bởi quá trình điều khiển Slave đồng bộ, và

máy phát baud rate. Chân XCK (xung nhịp chuyển) thì chỉ được sử dụng bởi chế độ truyền đồng bộ.

Bộ chuyển phát bao gồm 1 bộ đệm ghi đơn, 1 thanh ghi Shift nối tiếp, máy phát tương tự và khối điều khiển logic cho việc điều khiển các dạng khung nối tiếp khác nhau. Bộ đệm ghi cho phép 1 sự truyền liên tiếp của dữ liệu mà không có bất cứ 1 độ trễ nào giữa các khung.

Bộ thu nhận là bộ phận phức tạp nhất của module USART vì xung nhịp của và các bộ phận phục hồi dữ liệu. Các bộ phận khôi phục được sử dụng cho việc thu nhận dữ liệu 1 cách dị bộ. Thêm vào đó để khôi phục các bộ phận này, bộ thu nhận bao gồm bộ kiểm tra, khối logic điều khiển, 1 thanh ghi Register và 1 bộ đệm thu nhận 2 cấp (UDR). Bộ thu nhận tín hiệu hỗ trợ các dạng khung giống nhau như là bộ chuyển phát, và có thể dò lỗi khung, tràn dữ liệu và các lỗi parity. (adsbygoogle = window.adsbygoogle || []).push({});

3.3 Giao diện hai dây tuần tự TWI

3.3.1 Đặc điểm

- Đơn giản nhưng mạnh mẽ và giao diện truyền thông linh hoạt, chỉ cần thiết 2 đường bus

- Hỗ trợ cả chế độ điều khiển Master và Slave

- Thiết bị có thể hoạt động như một bộ chuyển phát hoặc một bộ thu - Không gian địa chỉ 7- bit cho phép nâng lên 128 địa chỉ Slave khác nhau

- Hỗ trợ phân định chế độ Master – slave - Nâng lên tốc độ chuyển dữ liệu là 400 kHz - Các bộ điều khiển đầu vào giới hạn tốc độ quay

- Mạch loại bỏ nhiễu loại bỏ đỉnh nhọn trên các đường bus - Đầy đủ các địa chỉ slave lập trình được với sự hỗ trợ gọi chung

- Sự nhận ra địa chỉ gây ra đánh thức khi AVR trong các chế độ sleepmode.

3.3.2 Định nghĩa bus giao diện tuần tự hai dây

Giao diện tuần tự hai dây (TWI) là bộ công cụ lý tưởng cho các ứng dụng vi điều khiển thông thường. Giao thức TWI cho phép người thiết kế hệ thống liên kết trên 128 thiết bị khác nhau sử dụng chỉ 2 đường bus 2 - hướng, 1 cho xung nhịp (SCL) và 1 cho dữ liệu (SDA). Chỉ cần phần cứng bên ngoài để điều khiển bus như là 1 bộ điện trở kéo đơn cho mỗi dây trong đường bus TWI. Tất cả các thiết bị được kết nối lên bus có địa chỉ riêng, và dẫn động cho bộ nhớ phân giải bên trong giao thức TWI.

3.3.3 Liên kết điện

Như được miêu tả trong hình 3.4, cả hai đường bus đều được kết nối đến chân điện áp dương của nguồn cấp thông qua các điện trở kéo. Các bộ điều khiển bus của tất cả các thiết bị phù hợp với TWI là open – drain và open – collector. Điều này cài đặt 1 chức năng wried – AND cái mà cần thiết đến hoạt động của giao diện. Một mức logic thấp trên 1 đường bus TWI được sinh ra khi 1 hoặc nhiều hơn các đầu ra thiết bị TWI là 0. Một mức cao là đầu ra khi tất cả các thiết bị TWI 3 trạng thái của các đầu ra của chúng, sự cho phép của các điện trở kéo để kéo lên mức cao. Tất cả các thiết bị AVR được kết nối đến các bus TWI phải được cấp điện theo thứ tự để cho phép bất cứ sự điều khiển các bus.

Số lượng của các thiết bị cái mà có thể kết nối tới bus chỉ bị giới hạn bằng bus điện dung giới hạn của 400pF và không gian địa chỉ slave 7 - bit. 3.4 Bộ chuyển đổi tương tự số

3.4.1 Đặc điểm

Các đặc điểm:

- Độ chính xác 10 bít

- 0.5 LSB Integral Non - Linearity - Thời gian chuyển đổi từ 13 - 260µs

- Nâng lên 76,9 kSPS (Nâng lên 15 kSPS) ở độ chính xác cực đại - 7 kênh đầu vào riêng biệt

- 2 kênh đầu vào riêng biệt với các độ khuyếch đại

- Sự điều chỉnh di chuyển, lựa chọn cho kết quả đọc bên ngoài ADC

Một phần của tài liệu Tìm hiểu vi điều khiển AVR ATMEGA 128 (Trang 30)