Giới thiệu về Timer/Counter0 của ATmega32

Một phần của tài liệu Nghiên cứu thiết kế và chế tạo robot vượt địa hình, bám đối tượng sử dụng công nghệ xử lý ảnh (Trang 34 - 45)

Các chức năng chính:

- Kênh đếm so sánh đơn.

- Xóa giá trị timer khi đạt tới giá trị so sánh (Auto Reload).

- Chế độ PWM.

- Đếm sự kiện bên ngoài.

- Bộ chia tần số 10bit.

Hình 3.2. Sơ đồ khối của Timer/Counter0 Các chế độ hoạt động của Timer/Counter0:

- Chế độ bình thường.

- Chế độ xóa giá trị Timer khi đạt tới giá trị so sánh.

- Chế độ Fast PWM.

- Chế độ PWM.

Trong đề tài này, Timer/Counter0 được dùng để tạo xung PWM. Vì thế, phần này chỉ đề cập đến chế độ hiệu chỉnh PWM của Timer/Counter0.

Chế độ hiệu chỉnh xung PWM giúp tạo ra dạng xung PWM với độ phân giải cao. Chế độ này dựa trên hoạt động dual-slope (dạng hai sườn lên xuống theo giá trị thanh ghi). Bộ đếm đếm liên tục từ giá trị BOTTOM đến MAX rồi đếm từ MAX xuống BOTTOM. Nếu

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

OCR0 với TCNT0 khi đếm lên, và ở mức 1 tại giá trị so sánh khi đếm xuống. Nếu chọn ngõ ra dạng đảo (inverting), chân OC0 sẽ hoạt động ngược lại. Chế độ hoạt động dual-slope có tần số thấp hơn so với chế độ single-slope. Tuy nhiên, do đặc tính đối xứng nên kiểu dual-slope thích hợp hơn cho các ứng dụng điều khiển động cơ.

Độ phân giải của chế độ PWM này là 8bit. Bộ đếm sẽ tăng dần đến giá trị MAX. Khi đạt tới MAX, bộ đếm sẽ đảo chiều và đếm xuống tới BOTTOM. Như vậy, một chu kỳ của timer bằng thời gian giữa hai lần giá trị TCNT0 đạt MAX.

Hình 3.3. Giản đồ thời gian của chế độ PWM

Cờ tràn TOV0 được set mỗi lần bộ đếm đạt tới giá trị BOTTOM. Khi timer đạt tới giá trị này, ta có thể sử dụng để kích hoạt chương trình ngắt qua cờ báo ngắt.

Xung PWM được đưa ra trên chân OC0. Việc thiết lập ngõ ra dạng đảo (inverting) hay không đảo (non-inverting) được thực hiện qua hai bit COM01 và COM00. Giá trị thực sự của OC0 chỉ có thể thấy được khi ta đặt OC0 là ngõ ra.

Tần số của xung PWM được tính toán dựa vào công thức sau:

Trong đó, N là giá trị của bộ chia tần số (1, 8, 64, 256,1024).

Thanh ghi OCR0 sẽ đạt tới cực trị (cực đại hoặc cực tiểu) thay cho các trường hợp đặc biệt khi phát ra dạng xung PWM. Trong chế độ không đảo, nếu OCR0 được đặt giá trị BOTTOM, ngõ ra luôn ở mức thấp và nếu OCR0 được đặt giá trị MAX thì ngõ ra luôn ở mức cao. Đối với chế độ đảo thì hoạt động ngược lại.

3.1.4. Bộ truyền nhận dữ liệu USART

USART (The Universal Synchronous and Asynchronous serial Receiver and Transmitter – Bộ truyền nhận nối tiếp tổng hợp đồng bộ và bất đồng bộ)

Đặc điểm:

- Hoạt động song công.

- Cho phép làm việc ở các chế độ : đồng bộ hay bất đồng bộ.

- Bộ phát tốc độ baud (BAUD RATE) với độ phân giải cao.

- Hỗ trợ Format khung truyền nối tiếp : 5,6,7,8, hay 9 Data Bits và 1 hoặc 2 bit Stop.

- Hỗ trợ kiểm tra bit chẵn , lẻ bằng phần cứng.

- Có thể phát hiện Data bị tràn , khung truyền bị lỗi. (adsbygoogle = window.adsbygoogle || []).push({});

- Có 3 cờ báo ngắt : TX complete, TX Data Register Empty và RX complete.

- Có chế độ truyền thông đa xử lý.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

Trong sơ đồ trên, có ba khối nằm trong phần khung vuông là ba phần chính của USART: bộ phát xung, bộ truyền và bộ nhận. Thanh ghi điều khiển được sử dụng chung cho các thành phần. Bộ phát xung tạo ra xung nhịp cho bộ phát tốc độ baud (khi truyền nhận bất đồng bộ), hoặc điều khiển để nhận xung clock bên ngoài khi truyền nhận đồng

(serial Shift Register), bộ phát parity và bit điều khiển sử dụng cho nhiều khung truyền khác nhau. Bộ nhận phức tạp hơn do có phần phục hồi xung và dữ liệu (clock and data recovery). Thành phần phục hồi này sử dụng trong khi nhận dữ liệu bất đồng bộ. Ngoài hai phần phục hồi, bộ nhận còn có phần kiểm tra parity, bit điều khiển, thanh ghi dịch và bộ đệm nhận hai mức thấp (UDR). Bộ nhận hỗ trợ các chuẩn khung truyền giống như bộ phát, và có thể phát hiện lỗi khung truyền, tràn dữ liệu hoặc lỗi parity.

Các thanh ghi của USART:

- USART I/O Data Register –UDR

UDR là thanh ghi bộ đệm truyền(TXB) và nhận(RXB) (chúng có cùng 1 địa chỉ vật lý) có chức năng lưu trữ Data.

· TXB: Thanh ghi bộ đệm truyền. Khi ta muốn send data đến PC thì trước hết

data đó phải được nạp vào TXB.

Muốn ghi DATA vào TXB thì bit UDRE trong thanh ghi UCSRA phải được set (UDRE=[1]: cho phép ghi vào TXB). Data đó được ghi vào UDR cho đến khi UDRE=[0]. Khi Data đang được vào TXB, và Transmitter được phép thì Transmitter sẽ Load Data đó vào thanh ghi dịch khi thanh ghi dịch bị trống (rỗng). Sau đó Data được truyền nối tiếp trên chân TxD (PD0) của MCU.

· RXB: Thanh ghi bộ đệm nhận. Khi PC send 1 gói Data đến MCU thì gói

Data đó nằm trong RXB do đó cần phải chuyển Data trong RXB vào 1 thanh R (vd: R16).

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

RXB gồm có 2 mức FIFO. FIFO sẽ thay đổi trạng thái của nó bất cứ khi nào RXB được truy xuất. Vì trạng thái này của RXD mà không được dùng những lệnh (SBI, CBI) ở đây. Cẩn thận với các lệnh kiểm tra (SBIC và SBIS), vì chúng cũng sẽ làm thay đổi trạng thái của FIFO.

- USART Control and Status Register A – UCSRA

(Thanh ghi điều khiển và trạng thái A)

· Bit 7 – RXC: USART Receive Complete

Cờ RXC =[1] khi có data chưa được đọc trong RXB và RXC =[0] khi RXB rỗng (không còn bất kì data nào trong RXB chưa đọc).

Cờ RXC có thể được dùng để tạo ra ngắt khi nhận xong (kết hợp với bit RXCIE).

· Bit 6-TXC: USART Transmit Complete

Cờ TXC =[1] khi toàn bộ data trong thanh ghi dịch truyền đã dược dịch ra ngoài và không còn data mới nào xuất hiện trong TXB (UDR). TXC tự động được xóa nếu có 1 ngắt khi truyền xong được thực thi hay nó cũng có thể được xóa bằng cách ghi vào vị trí bit của nó.

Cờ TXC có thể được dùng để tạo ra ngắt khi truyền xong (kết hợp với bit RXCIE).

Cờ UDRE có thể tạo ra 1 ngắt khi data trong thanh ghi trống rỗng (kết hợp với bit UDRIE).

UDRE = [1] sau khi reset để chỉ thị rằng bộ truyền đã sẵn sàng.

· Bit 4-FE: Frame Error

FE =[1] nếu có lỗi khung truyền khi nhận.

· Bit3-DOR: Data OverRun

DOR=[1] nếu dữ liệu bị tràn.

· Bit 2-PE: Parity Error (adsbygoogle = window.adsbygoogle || []).push({});

PE=[1] nếu có lỗi kiểm tra chẵn, lẻ.

· Bit 1-U2X: Double the USART Transmission Speed

Chú ý : U2X chỉ có tác dụng đối với chế độ truyền bất đồng bộ. U2X=[0] khi sử dụng chế độ truyền đồng bộ.

U2X=[1] sẽ làm giảm ước số của bộ chia tốc độ baud từ 16 xuống còn 8 có tác dụng tăng tốc độ truyền đối với hoạt động bất đồng bộ.

· Bit 0-MPCM: Multi-processor Communication Mode

Bit này cho phép chế độ truyền thông đa xử lý.

Khi MPCM=[1] thì tất cả các dữ liệu được nhận vào bởi bộ nhận USART mà không có địa chỉ sẽ được bỏ qua. Việc set bit MPCM không ảnh hưởng đến bộ truyền.

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/

· Bit 7-RXCIE: RX complete Interrupt Enable

RXCIE=[1] cho phép nhận xảy ra ngắt (bằng cờ RXC). USART nhận hoàn tất sẽ tạo ra 1 ngắt khi chỉ khi RXCIE=[1], ngắt toàn cục được phép và RXC =[1] (trong UCSRA).

· Bit 6-TXCIE: TX complete Interrupt Enable

TXCIE=[1] cho phép truyền xảy ra ngắt (bằng cờ TXC). USART truyền hoàn tất sẽ tạo ra 1 ngắt khi chỉ khi TXCIE=[1], ngắt toàn cục được phép và TXC =[1] (trong UCSRA).

· Bit 5-UDRIE: USART Data Register Empty Interrupt Enable

UDRIE=[1] cho phép ngắt khi Data trong thanh ghi trống. Ngắt này chỉ được tạo ra khi UDRIE=[1], ngắt toàn cục được phép và UDRE =[1] (trong UCSRA).

· Bit 4-RXEN: Receive Enable

RXEN=[1]: cho phép nhận.

· Bit 3-TXEN : Transmit Enable

TXEN=[1]: cho phép truyền.

· Bit 2-UCSZ2: character size

UCSZ2 kết hợp với UCSZ1:0 trong thanh ghi UCSRC dùng để thiết lập khung dữ liệu (số Data_Bit có trong 1 khung truyền. VD: 5bit, 6bit, 8bit…) truyền và nhận .

RXB chứa bit thứ 9 nhận về khi hoạt động ở chế độ khung truyền 9 bit. Nó phải được đọc trước khi đọc những bit thấp từ UDR.

· Bit 0-TXB: Transmit Data bit 8.

TXB chứa bit thứ 9 sẽ được truyền đi khi hoạt động ở chế độ khung truyền 9 bit. Nó phải được ghi trước khi ghi những bit thấp vào UDR.

- SART Control and Status Register C – UCSRC

· Bit 7 – URSEL: Register Select

Bit nay dùng để lựa chọn thanh ghi UCSRC hay UBRRH. URSEL=[1]: UCSRC

URSEL=[0]: UBBRH

· Bit 6 – UMSEL: USART Mode Select (lựa chọn truyền đồng bộ hay bất

đồng bộ)

( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/ (adsbygoogle = window.adsbygoogle || []).push({});

· Bit 3 – USBS: stop bit select

· Bit 2:1-UCSZ 1:0: character size (Format khung truyền)

· Bit 0 – UCPOL: Clock Polarity

Bit này chỉ dùng cho chế độ truyền đồng bộ. UCPOL = [0]: chọn chế độ truyền bất đồng bộ.

UCPOL được thiết lập liên quan đến giữa dữ liệu đầu ra thay đổi và mẫu dữ liệu vào và xung đồng bộ (XCK).

- USART Baud Rate Registers – UBRRL and UBRRH

· Bit 15 - URSEL: Register Select

Bit nay dùng để lựa chọn thanh ghi UCSRC hay UBRRH. URSEL=[1]: UCSRC

URSEL=[0]: UBBRH

· Bit 14:12: Reserved Bits

· Bit 11:0: UBRR 11:0: USART Baud Rate Register

Một phần của tài liệu Nghiên cứu thiết kế và chế tạo robot vượt địa hình, bám đối tượng sử dụng công nghệ xử lý ảnh (Trang 34 - 45)