Các mạch điều khiển trong àC AT90S8535

Một phần của tài liệu thiết kế hệ thống phần mềm cho C AT90S8535 (Trang 36 - 85)

a) Các mạch Timer/Counter.

Vi mạch điều khiển AT90S8535 cung cấp 3 mạch Timer/Counter (T/C) đa năng - hai bộ T/C 8 bit và một bộ T/C 16 bit. T/C2 có thể tuỳ chọn trạng thái không đồng bộ từ một bộ tạo dao động ngoài. Bộ tạo dao động này đợc tối u cho việc sử dụng với một đồng hồ tinh thể với chu kỳ 32.768 kHz cho phép sử dụng bộ T/C2 nh một đồng hồ thời gian thực RTC. Bộ T/C0 và T/C1 có xung chọn tín hiệu chia thời gian riêng từ bộ chia thời gian 10 bit. Bộ T/C2 cũng có bộ chia thời gian riêng. Các bộ T/C này có thể sử dụng hoặc nh là một bộ đếm thời gian với thời gian cơ sở của một đồng hồ trong hoặc giống nh một bộ đếm kết nối tới một chân bên ngoài gây ra thao tác đếm.

Hình 2.11 : Sơ đồ khối mạch chia thời gian của T/C 0 và T/C1

Bộ T/C0 và T/C1 có 4 sự lựa chọn khác nhau cho mạch chia thời gian là : CK/8, CK/64, CK/256, CK/1024 với CK là tần số bộ tạo dao động.

Hình 2.12 : Sơ đồ khối mạch chia thời gian của T/C2

Nguồn đồng hồ cho mạch chia thời gian của T/C2 là PCK2. PCK2 đợc kết nối mặc định tới đồng hồ hệ thống chính (CK). Bằng cách thiết lập bit AS2 trong thanh ghi ASSR, mạch chia thời gian của T/C2 đợc đếm không đồng bộ từ chân PC6 (TOSC1). Điều này cho phép sử dụng bộ T/C2 giống nh một RTC. Khi bit AS2 đợc thiết lập, các chân PC6 (TOSC1) và PC7 (TOSC2) bị ngắt kết nối tới Port C. Một đồng hồ tinh thể sau đó có thể đợc kết nối giữa hai chân PC6(TOSC1) và PC7(TOSC2) để cung cấp giống nh một nguồn đồng hồ độc lập cho bộ T/C2. Mạch tạo dao động đợc tối u cho việc sử dụng đồng hồ tinh thể với tần số 32.768kHz. Không nên dùng nguồn đồng hồ ngoài cho chân TOSC1.

Bộ Timer/Counter0 8 bit (T/C0)

Mạch T/C0 8 bit có thể lựa chọn nguồn đồng hồ từ CK, mạch chia thời gian của CK hoặc từ một nguồn đồng hồ ngoài. Ngoài ra, nó có thể đợc dừng giống nh sự mô tả trong thanh ghi điều khiển T/C0 (TCCR0). Cờ trạng thái tràn đợc xác định trong thanh ghi cờ ngắt T/C (TIFR). Các tín hiệu điều khiển đợc tìm thấy trong thanh ghi điều khiển T/C0 (TCCR0). Sự thiết lập các bit cho phép/không cho phép ngắt cho mạch T/C0 thực hiện trong thanh ghi mặt nạ ngắt T/C (TISMK).

Hình 2.13 : Sơ đồ khối mạch Timer/Counter0

Khi mạch T/C0 sử dụng nguồn đồng hồ ngoài, tín hiệu ngoài đợc đồng bộ hoá với tần số của mạch tạo dao động của CPU. Để đảm bảo cho việc lấy mẫu của đồng hồ ngoài một cách thích hợp, thời gian tối thiểu chuyển tiếp giữa hai chu kỳ của đồng hồ ngoài ít nhất phải bằng một chu kỳ đồng hồ trong CPU. Tín hiệu đồng hồ ngoài đợc lấy mẫu trên sờn lên của chu kỳ đồng hồ trong CPU.

Thanh ghi điều khiển T/C0 : TCCR0 (Timer/Counter0 Control register)

Bit 7 .. 3: Không sử dụng.

Bit 2,1,0 - CS02, SC01, CS00 : Bit lựa chọn bộ chia thời gian, bit 2, 1 và 0 Các bit 2, 1 và 0 xác định nguồn chia thời gian của mạch T/C0.

Bảng 2.9 : Sự lựa chọn bộ chia thời gian của mạch T/C0

CS02 CS01 CS00 Mô tả

0 0 0 Stop, Timer/Counter0 is stopped.

0 0 1 CK

0 1 0 CK/8

0 1 1 CK/64

1 0 0 CK/256

1 0 1 CK/1024

1 1 0 External Pin T0, falling edge 1 1 1 External Pin T0, rising edge

Điều kiện dừng cung cấp chức năng cho phép/cấm bộ định thời gian. Các chế độ chia thời gian CK đợc chia trực tiếp từ đồng hồ tạo dao động CK. Nếu

các chế độ đồng hồ ngoài đợc sử dụng, thì sự thiết lập tơng ứng phải đợc thực hiện trong thanh ghi DDCR (Data Direction Control Register) hiện thời.

Thanh ghi 8 bit dữ liệu của T/C0 : TCNT0

Bộ T/C0 đợc thực hiện giống nh một bộ đếm tăng với sự truy nhập ghi và đọc. Nếu bộ T/C0 đợc ghi và một nguồn đồng hồ hiện đang sử dụng, thì bộ T/C0 tiếp tục đếm trong chu kỳ đồng hồ sau thao tác ghi.

Bộ Timer/Counter1 16 bit (T/C1)

Hình 2.14 : Sơ đồ khối mạch Timer/Counter1

Bộ T/C1 16 bit có thể lựa chọn nguồn đồng hồ từ CK, mạch chia thời gian CK hoặc nguồn đồng hồ ngoài. Ngoài ra, nó có thể đợc dừng hoạt động nh sự mô tả thanh ghi điều khiển mạch T/C1 (TCCR1A và TCCR1B). Các cờ trạng thái khác nhau (Overflow, Compare Match và Capture Event) và các tín hiệu điều khiển đợc xác định trong thanh ghi điều khiển T/C1 (TCCR1A và TCCR1B). Sự thiết lập cho phép/cấm ngắt cho T/C1 đợc xác định trong thanh ghi mặt nạ ngắt T/C (TIMSK).

Khi T/C1 sử dung nguồn đồng hồ ngoài, tín hiệu đồng hồ ngoài đợc đồng bộ với tần số mạch tạo dao động của CPU. Để đảm bảo sự lấy mẫu đồng hồ ngoài đợc chính xác, thì thời gian chuyển tiếp tối thiểu giữa hai chu kỳ đồng hồ ngoài ít nhất phải bằng một chu kỳ đồng hồ trong CPU. Tín hiệu của đồng hồ ngoài đợc lấy mẫu theo sờn lên của chu kỳ đồng hồ trong CPU.

Mạch T/C1 hỗ trợ 2 chức năng so sánh đầu ra qua việc sử dụng thanh ghi so sánh đầu ra 1A và 1B (OCR1A và OCR1B) giống nh những nguồn dữ liệu đ- ợc so sánh với nội dung của T/C1. Các chức năng so sánh đầu ra bao gồm các tuỳ chọn xoá của bộ đếm dựa trên tín hiệu so sánh bằng A và các hành động trên các chân so sánh đầu ra trên cả hai tín hiệu so sánh bằng. (adsbygoogle = window.adsbygoogle || []).push({});

T/C1 cũng có thể đợc sử dụng nh giống nh một mạch điều biến độ rộng xung (PWM) 8, 9 hoặc 10 bit. Trong chế độ này bộ đếm và các thanh ghi so sánh đầu ra OCR1A/OCR1B cung cấp nh một mạch PWM đối ngẫu độc lập không có xung nhiễu do thao tác ở cạnh giữa của các xung.

Chức năng lu giữ tín hiệu vào của mạch T/C1 cung cấp một sự lu giữ nội dung của T/C1 tới thanh ghi lu giữ tín hiệu vào của T/C1 (ICR1), đợc gây ra bởi một sự kiện ngoài trên chân lu giữ tín hiệu vào (ICP). Sự thiết lập sự kiện lu giữ tín hiệu vào hiện tại đợc định nghĩa bởi thanh ghi điều khiển T/C1 (TCCR1B). Ngoài ra, bộ so sánh tín hiệu Analog có thể đợc thiết lập để gây ra quá trình lu giữ tín hiệu vào.

Hình 2.15 : Sơ đồ chân ICP

Nếu cho phép chức năng lọc nhiễu, thì điều kiện gây ra sự lu giữ sự kiện hiện thời đợc thực hiện qua 4 mẫu và 4 mẫu này phải bằng nhau để kích hoạt cờ lu giữ sự kiện. Tín hiệu chân đầu vào đợc lấy mẫu tại tần số đồng hồ tinh thể.

Thanh ghi điều khiển A của T/C1 : TCCR1A

Bit 7,6 - COM1A1, COM1A0 : Bit điều khiển chế độ so sánh đầu ra 1A (Compare Output Mode1A, Bits 1 and 0) Các bit điều khiển COM1A1 và COM1A0 quyết định hành động trên chân đầu ra nào tiếp theo tín hiệu so sánh bằng trong mạch T/C1. Bất kỳ hoạt động của chân đầu ra nào cũng làm ảnh hởng đến chân OC1A (Output CompareA Pin 1). Đây là một chức năng thay thế cho một cổng vào hoặc ra và bit điều khiển hớng tơng ứng phải đợc thiết lập để điều khiển một chân đầu ra. Cấu hình điều khiển thể hiện trong bảng 2.10.

Bit 5,4 - COM1B1, COM1B0 : Bit điều khiển chế độ so sánh đầu ra 1B (Compare Output Mode1B, Bits 1 and 0) Các bit điều khiển COM1B1 và COM1B0 quyết định hành động trên chân đầu ra nào tiếp theo tín hiệu so sánh bằng trong mạch T/C1. Bất kỳ hoạt động của chân đầu ra nào cũng làm ảnh hởng đến chân OC1B (Output CompareA Pin 1). Đây là một chức năng thay thế cho một cổng vào hoặc ra và bit điều khiển hớng tơng ứng phải đợc thiết lập để điều khiển một chân đầu ra. Cấu hình điều khiển thể hiện trong bảng 2.10.

Bảng 2.10: Lựa chọn chế độ so sánh của T/C1

COM1X1 COM1X0 Mô tả

0 0 Mạch T/C1 không đợc kết nối tới chân đầu ra OCX1 0 1 Bật tắt đờng ra OC1X

1 0 Cấm đờng ra OC1X

1 1 Cho phép đờng ra OC1X

X = A hoặc B

Trong chế độ PWM, các bit này có một chức năng khác (Xem bảng 2.14). Khi thay đổi các bit COM1X1/COM1X0, ngắt so sánh đầu ra của T/C1 phải bị vô hiệu hoá bằng cách xoá các bit cho phép ngắt của chúng trong thanh ghi mặt nạ ngắt T/C (TIMSK). Nếu không, một ngắt có thể xảy ra khi các bit này thay đổi.

Bit 1...0 - PWM11, PWM10 : Các bit chọn chế độ điều biến độ rộng xung (Purse width Modulator Select Bits)

Các bit này lựa chọn thao tác PWM của T/C1 đợc chỉ ra trong bảng 2.11

Bảng 2.11 : Lựa chọn chế độ PWM

PWM11 PWM10 Description

0 0 Sự hoạt động PWM của T/C1 bị vô hiệu hoá 0 1 Chọn T/C1 là một PWM 8 bit

1 0 Chọn T/C1 là một PWM 9 bit 1 1 Chọn T/C1 là một PWM 10 bit

Thanh ghi điều khiển B của T/C1 : TCCR1B

Bit 7 - ICNC1 : Bit cho phép bắt tín hiệu vào lọc nhiễu của T/C1 (Input Capture1 Noise Caceler)(4 CKs)

Khi bit ICNC1 bị xoá, chức năng kích hoạt bắt tín hiệu vào lọc nhiễu của T/C1 bị vô hiệu hoá. Sự bắt tín hiệu vào đợc kích hoạt tại sờn lên hoặc xuống đầu tiên đợc lấy mẫu trên chân ICP (Input Capture Pin) nh đã chỉ ra. Khi bit ICNC1 đợc thiết lập, 4 mẫu liên tiếp đợc đo trên chân ICP, và tất cả các mẫu phải cùng mức cao/thấp tuỳ theo đặc tả tạo ra sự bắt tín hiệu vào trong bit ICES1. Tần số lấy mẫu hiện thời là tần số đồng hồ tinh thể.

Bit 6 - ICES1 : Bit lựa chọn sờn bắt tín hiệu T/C1 (Input Capture 1 Edge Select)

Khi bit ICES1 bị xoá, nội dung của T/C1 đợc chuyền tới thanh ghi bắt tín hiệu vào (ICR1) theo sờn xuống của tín hiệu trên chân bắt tín hiệu vào (ICP). Khi bit ICES1 đợc thiết lập, nội dung của T/C1 đợc chuyền tới thanh ghi bắt tín hiệu vào (ICR1) theo sờn lên của tín hiệu trên chân bắt tín hiệu vào (ICP1).

Bit 5,4 : Không sử dụng.

Bit 3 - CTC1 : Bit xoá chức năng thích ứng so sánh của T/C1 (Clear Timer/Counter1 on Compare Match)

Khi bit điều khiển CTC1 đợc thiết lập, mạch T/C1 đợc thiết lập lại giá trị $0000 trong chu kỳ đồng hồ sau một tín hiệu so sánh bằng A. Nếu bit điều khiển CTC1 bị xoá, mạch T/C1 tiếp tục đếm và không bị ảnh hởng bởi một tín hiệu so sánh bằng. Khi một tín hiệu so sánh bằng đợc nhận ra trong chu kỳ đồng hồ CPU tiếp theo sự so sánh bằng, chức năng này sẽ xử lý khác nhau khi một tín hiệu chia thời gian lớn hơn 1 đợc sử dụng cho bộ định thời gian. Khi một tín hiệu chia thời gian bằng 1 đợc sử dụng và nội dung của thanh ghi so sánh A của T/C1 đợc thiết lập là C, thì bộ định thời gian sẽ đếm nh sau nếu CTC1 đợc thiết lâp :

... | C-2 | C-1 | C | 0 | 1 |...

Khi bộ chia thời gian đợc thiết lập chia cho 8 (chế độ CK/8), bộ định thời sẽ đếm nh sau : (adsbygoogle = window.adsbygoogle || []).push({});

... | C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-2 | C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1 | C, 0, 0, 0, 0, 0, 0, 0| 1,1,1,1,1,1,1,1|...

Trong chế độ PWM, bit này không có hiệu lực

Bit 2,1,0 - CS12, CS11, CS10 : Các bit lựa chọn đồng hồ của T/C1 (Clock Select1, Bits 2, 1 and 0) Các bit lựa chọn đồng hồ 2, 1, 0 xác định bộ chia thời gian của T/C1.

Bảng 2.12 : Lựa chọn đồng hồ cho bộ chia thời gian của T/C1

CS12 CS11 CS10 Mô tả 0 0 0 Dừng, bộ T/C1 dừng hoạt động 0 0 1 CK 0 1 0 CK/8 0 1 1 CK/64 1 0 0 CK/256 1 0 1 CK/1024

1 1 0 External Pin T1, falling edge 1 1 1 External Pin T1, rising edge

Điều kiện dừng cung cấp chức năng cho phép/cấm bộ định thời gian. Các chế độ chia của CK (CK/8, CK64...) đợc tỷ lệ hoá trực tiếp từ bộ dao động đồng hồ CK. Nếu các chế độ đồng hồ ngoài đợc sử dụng, thì sự thiết lập tơng ứng phải đợc thực hiện trong thanh ghi điều khiển hớng (Direction Control Register) hiện thời .

Các thanh ghi dữ liệu của T/C1 : TCNT1H và TCNT1L

Nội dung của thanh ghi 16 bit chứa giá trị chia thời gian của bộ T/C1 16 bit. Để đảm bảo rằng cả byte thấp và byte cao đợc đọc và ghi đồng thời khi CPU truy nhập vào các thanh ghi này thì sự truy nhập đợc thực hiện bằng cách sử dụng một thanh ghi tạm 8 bit (TEMP). Thanh ghi tạm này cũng đợc sử dụng khi truy nhập các thanh ghi OCR1A, OCR1B và ICR1. Nếu chơng trình chính và các thủ tục ngắt thực hiện sự truy nhập đến các thanh ghi sử dụng thanh ghi TEMP, thì các ngắt phải bị cấm trong thời gian truy nhập từ chơng trình chính (và từ các thủ tục ngắt nếu các ngắt đợc cho phép từ trong các thủ tục ngắt).

Thao tác ghi thanh ghi TCNT1 của T/C1

Khi CPU ghi vào thanh ghi byte cao TCNT1H, dữ liệu ghi đợc đặt trong thanh ghi TEMP, Tiếp theo, khi CPU ghi thanh ghi byte thấp TCNT1L, byte đữ liệu này đợc ghép với byte dữ liệu trong thanh ghi TEMP và tất cả 16 bit dữ liệu đợc ghi đồng thời vào thanh ghi vào thanh ghi TCNT1 của bộ T/C1. Do đó, thanh ghi byte cao TCNT1H phải đợc truy nhập trớc tiên trong hoạt động ghi vào thanh ghi 16 bit TCNT1.

Thao tác đọc thanh ghi TCNT1 của bộ T/C1

Khi CPU đọc thanh ghi byte thấp TCNT1L, dữ liệu của thanh ghi byte thấp TCNT1L đợc chuyển tới CPU và dữ liệu của thanh ghi byte cao TCNT1H đợc đặt trong thanh ghi TEMP. Khi CPU đọc dữ liệu trong thanh ghi byte cao TCNT1H, CPU nhận dữ liệu trong thanh ghi TEMP. Do đó, thanh ghi byte thấp TCNT1L phải đợc truy nhập trớc tiên trong một thao tác đọc thanh ghi 16 bit TCNT1.

Mạch T/C1 đợc thực thi nh một bộ đếm tăng hoặc bộ đếm tăng/giảm (trong chế độ PWM) với sự truy cập đọc và ghi. Nếu mạch T/C1 đã đợc ghi và một nguồn đồng hồ đợc lựa chọn, thì mạch T/C1 tiếp tục đếm trong chu kỳ đồng hồ của bộ định thời gian sau khi giá trị ghi của nó đợc điều chỉnh.

Thanh ghi so sánh đầu ra B của T/C1 : OCR1BH và OCR1BL

Các thanh ghi so sánh đầu ra là các thanh ghi đọc/ghi 16 bit. Chúng chứa đựng dữ liệu đợc so sánh liên tục với mạch T/C1. Các hoạt động trên các tín hiệu so sánh bằng đợc xác định trong các thanh ghi trạng thái và điều khiển của T/C1. Một tín hiệu so sánh bằng chỉ đợc xuất hiện nếu mạch T/C1 đếm đến giá trị OCR. Khi viết một phần mềm mà thiết lập các thanh ghi TCNT1 và OCR1A hoặc OCR1B cùng một giá trị sẽ không tạo ra một tín hiệu so sánh bằng.

Một tín hiệu so sánh bằng sẽ thiết lập cờ cho phép ngắt so sánh trong chu kỳ đồng hồ CPU tiếp theo sự kiện so sánh.

Do các thanh ghi so sánh đầu ra (OCR1A và OCR1B) là những thanh ghi 16 bit, một thanh ghi tạm (TEMP) phải đợc sử dụng khi thanh ghi OCR1A/B đ- ợc ghi để đảm bảo rằng cả hai byte cùng đợc cập nhật. Khi CPU ghi thanh ghi byte cao OCR1AH hoặc OCR1BH, dữ liệu tạm thời đợc lu trên thanh ghi tạm (TEMP). Khi CPU ghi lên thanh ghi byte thấp OCR1AL hoặc OCR1BL, thanh ghi TEMP đợc ghi đồng thời tới thanh ghi OCR1AH hoặc OCR1BH. Do đó, thanh ghi byte cao OCR1AH hoặc OCR1BH phải đợc ghi trớc trong thao tác ghi vào thanh ghi 16 bit.

Thanh ghi TEMP cũng đợc sử dụng khi truy cập tới các thanh ghi TCNT1 và ICR1. Nếu chơng trình chính và các thủ tục ngắt thực hiện truy cập tới các

Một phần của tài liệu thiết kế hệ thống phần mềm cho C AT90S8535 (Trang 36 - 85)