Lựa chọn thiết bị.a Lựa chọn vi điều khiển : Trang 5 ADC cho phép mỗi chân của port A đợc sử dụng là đầu vào cho bộ ADC, làmcho việc sử dụng C AT90S8535 trong các ứng dụng linh hoạt h
Trang 1Mục lục
Lời nói đầu 3
Chơng i Nhiệm vụ và phơng hớng thực hiện 1.1 Nhiệm vụ của đồ án 4
1.2 Phân tích nhiệm vụ 4
1.3 Phơng hớng thực hiện 5
1.3.1 Lựa chọn thiết bị 5
1.3.2 Phơng hớng thiết kế 6
Chơng 2 Lựa chọn linh kiện thiết kế Và một số lý thuyết về chuyển đổi A/D 2.1 Lựa chọn linh kiện thiết kế 8
2.1.1 Giới thiệu vi mạch điều khiển AT90S8535 8
2.1.1.1 Cấu trúc của vi mạch AT90S8535 12
2.1.1.2 Tập thanh ghi đa năng của C AT90S8535 14
2.1.1.3 Bộ số học và Logic - ALU 15
2.1.1.4 Đặc điểm các bộ nhớ trong của C AT90S8535 15
2.1.1.5 Các chế độ địa chỉ của C AT90S8535 18
2.1.1.6 Thời gian truy cập bộ nhớ và thời gian thực hiện lệnh 20
2.1.1.7 Không gian bộ nhớ I/O 21
2.1.1.8 Ngắt và xử lý ngắt trong C AT90S8535 25
2.1.1.9 Các chế độ nghỉ của C AT90S8535 34
2.1.1.10 Các mạch điều khiển trong C AT90S8535 35
2.1.2 Module LCD (20x4 characters) 82
2.1.3 IC Max232 86
2.1.3.1 Giới thiệu chuẩn RS232 86
2.1.3.2 IC Max232 88
2.1.4 Cảm biến nhiệt LM335 89
2.2 Một số lý thuyết về chuyển đổi A/D 90
2.2.1 Khái niệm chung 90
2.2.2 Một số phơng pháp chuyển đổi AD 91
2.2.2.1 Phơng pháp chuyển đổi song song 91
2.2.2.2 Phơng pháp xấp xỉ liên tiếp 92
2.2.2.3 Phơng pháp tích phân hai sờn dốc 92
Chơng 3 Thiết kế hệ thống phần cứng 3.1 Sơ đồ cấu trúc phần cứng của hệ thống 114
3.2 Sơ đồ ghép nối C với module LCD 114
3.3 Sơ đồ ghép nối C với module KeyPad 115
3.4 Sơ đồ ghép nối C với cảm biến nhiệt LM335 116
3.4 Sơ đồ ghép nối C với IC Max232 117
3.5 Sơ đồ kết nối nguồn cho vi mạch điều khiển 117
Chơng 4 thiết kế hệ thống phần mềm cho C AT90S8535 4.1 Biểu đồ chức năng của chơng trình điều khiển C 119
4.2 Lu đồ thuật toán của các chức năng chính 123
4.2.1 Chức năng giao tiếp với LCD controller 123
4.2.2 Chức năng điều khiển và hiển thị kết quả ADC 124
4.2.3 Chức năng giao tiếp với KeyPad 127
Trang 24.2.4 Chức năng truyền nhận dữ liệu nối tiếp với PC 132
Chơng 5 Thiết kế hệ thống phần mềm trên PC 5.1 Mục đích của phần mềm trên PC 134
5.2 Một số chức năng chính của chơng trình 135
5.3 Nhận xét và đánh giá 136
Kết luận 138
Phụ lục 139
Chơng trình điều khiển C AT90S8535 139
Trang 3Lời nói đầu
Ngày này, việc ứng dụng máy tính vào các kỹ thuật đo lờng và điều khiển không còn mới vì khi các thiết bị, hệ thống đo lờng và điều khiển đợc ghép nối với máy tính sẽ có thời gian thu thập và xử lý dữ liệu ngắn trong khi mức độ chính xác vẫn đợc đảm bảo, nhng điều đáng quan tâm hơn cả là khả năng tự
động hoá trong việc thu thập và xử lý dữ liệu Chính vì điều này làm cho máy tính đợc ứng dụng trong hầu hết vào các lĩnh vực trong cuộc sống hàng ngày
đặc biệt là trong lĩnh vực công nghiệp
Một bớc tiến quan trọng trong kỹ thuật vi xử lý là sự ra đời của các bộ vi
xử lý kỹ thuật số Đây là một vi mạch điện tử có mật độ tích hợp cao bao gồm rất nhiều các mạch số có khả năng nhận, xử lý và xuất dữ liệu Đặc biệt là quá trình xử lý dữ liệu đợc thực hiện theo một chơng trình là một tập hợp các lệnh từ bên ngoài mà ngời sử dụng có thể thay đổi dễ dàng tùy thuộc vào từng ứng dụng Do đó một bộ vi xử lý có thể thực hiện đợc rất nhiều các yêu cầu
điều khiển khác nhau tuỳ thuộc vào nhu cầu sử dụng.
Sự ra đời của kỹ thuật vi xử lý là sự kết hợp giữa kỹ thuật phần cứng và phần mềm đã làm cho hoạt động của các mạch điện tử trở nên mềm dẻo hơn với những phần mềm rất linh hoạt mà ngời sử dụng có thể sửa chữa, thay đổi hoặc bổ sung làm cho ứng dụng ngày càng trở nên hoàn thiện mà không cần phải thiết kế lại toàn bộ ứng dụng.
Trong đồ án này, em sử dụng vi mạch điều khiển AT90S8535 của hãng Atmel để thiết kế một mạch đo nhiệt độ đơn giản Đây là một bộ vi xử lý 8 bit năng lợng thấp (theo kiểu chíp CMOS) trên cơ sở cấu trúc RICS của hãng Atmel, tốc độ xử lý dữ liệu của IC AT90S8535 rất cao (xấp xỉ 8 MISP tại tần
số 8MHz) cho phép hệ thống có thể đợc thiết kế tối u làm tăng tốc độ xử lý.
Do đó, nó cung cấp khả năng linh hoạt rất cao trong các ứng dụng nhúng Vì vậy, việc tìm hiểu cấu trúc và đặc tính của vi mạch điều khiển AT90S8535 có thể giúp chúng ta sử dụng vi mạch điều khiển này cho các ứng dụng cần thiết.
Em xin chân thành cảm ơn thầy Bùi Quốc Anh đã tận tình hớng dẫn để
em hoàn thành đồ án này Em cũng xin chân thành cảm ơn các anh ở trung tâm NET.JSC đã giúp đỡ em trong suốt thời gian thực hiện đồ án Tuy nhiên,
do trình độ còn nhiều hạn chế nên đồ án không thể tránh khỏi những thiếu sót, vì vậy em rất mong đợc sự chỉ bảo của các thầy cô cũng nh của những ng-
ời đi trớc trong lĩnh vực này để đồ án của em hoàn thiện hơn qua đó em có thể xây dựng đợc những ứng dụng trong thực tế.
Chơng i
Nhiệm vụ và phơng hớng thực hiện
1.1 Nhiệm vụ của đồ án.
Trang 4Từ mục đích tổng quát của đề tài là thiết kế và xây dựng một hệ thống
đo nhiệt độ đơn giản, có thể phân tách ra thành các nhiệm vụ chính cần thực hiện nh sau:
Thiết kế và xây dựng hệ thống ghép nối vi điều khiển (C)AT90S8535 với module LCD (4x20 character), keypad (16 keys), cảmbiến nhiệt LM335 Ngoài ra hệ thống còn phải có khả năng giao tiếp vớimáy tính (PC) qua cổng RS 232
Hình 1.1 : Sơ đồ tổng thể của hệ thống cần thiết kế
Thiết kế và xây dựng phần
mềm điều khiển C để thu thập dữ liệu từ cảm biến nhiệt nhiệt LM335,
từ keypad hoặc từ PC Xử lý dữ liệu nhận đợc để hiển thị trên LCD hoặctruyền sang PC
Xây dựng phần mềm trên PC để có thể giao tiếp đợc với C quacổng RS 232
1.2 Phân tích nhiệm vụ.
Để có thể thiết kế và xây dựng đợc hệ thống nh trên cần phải thực hiện các bớc sau :
Nghiên cứu và tìm hiểu bộ vi xử lý AT90S8535
Tìm hiểu sự hoạt động của module LCD và cảm biến nhiệt LM 335
Tìm hiểu sự hoạt động và phơng pháp mã hoá keypad để có thểghép nối với C
Tìm hiểu phơng pháp truyền thông sử dụng chuẩn RS 232
Thiết kế sơ đồ mạch nối ghép giữa C với LCD, keypad, IC LM335
và giữa C với máy tính thông qua cổng RS 232
Lập trình phần mềm nạp cho C để thực hiện các kết nối trên
Viết phần mềm trên PC để giao tiếp với C qua cổng RS 232
Lắp giáp mạch đã thiết kế, chạy kiểm thử và đánh giá kết quả
Viết báo cáo tốt nghiệp
1.3 Phơng hớng thực hiện.
1.3.1 Lựa chọn thiết bị.
a) Lựa chọn vi điều khiển :
Trong thực tế có rất nhiều các họ vi xử lý khác nhau có thể sử dụng đợctrong ứng dụng này nh họ vi điều khiển 8051 của Intel, 68hC11 của Motorolahay họ vi điều khiển 8515 của ATMEL Tuy nhiên, trong đồ án sử dụng bộ
vi xử lý AT90S8535 của ATMEL, do đây là một sản phẩm mới của hãngATMEL nên việc tìm hiểu nó sẽ đem lại rất nhiều lợi ích trong việc thiết kế
PC
RS 232
Trang 5ADC cho phép mỗi chân của port A đợc sử dụng là đầu vào cho bộ ADC, làmcho việc sử dụng C AT90S8535 trong các ứng dụng linh hoạt hơn rất nhiều
so với C AT90S8515 đang đợc sử dụng rộng rãi tại Việt Nam
b) Thiết bị hiển thị dữ liệu :
Đối với các loại dữ liệu đợc hiển thị dới dạng số thì giải pháp tối u là sửdụng các LED 7 thanh do loại thiết bị hiển thị này có giá thành tơng đối rẻ
Tuy nhiên, do ứng dụng không chỉ hiển thị chữ số (giá trị nhiệt độ) mà còn
phải hiển thị cả các ký tự trong bảng chữ cái, do đó lựa chọn thiết bị hiển thịLCD vì loại thiết bị hiển thị này có khả năng hiển thị cả chữ cái và chữ số mộtcách rõ nét Mặc dù so với các loại đèn LED thì LCD có giá thành cao hơn,nhng bù lại thiết bị hiển thị LCD có nhiều đặc tính u việt hơn hẳn so với cácloại đèn LED Đặc biệt, thiết bị LCD cung cấp khả năng hiển thị dữ liệu vôcùng linh hoạt do ta có thể điều khiển xuất dữ liệu một cách trực tiếp thôngqua tập lệnh điều khiển của vi mạch điều khiển và bộ mã ký tự sẵn có trongCGRAM của LCD Một điều cần quan tâm khác là thiết bị LCD tiêu tốn rất ítnăng lợng
Trên thị trờng hiện nay có khá nhiều module LCD của các hãng khácnhau nh Samsung, Hitachi, Motorola với nhiều loại kích thớc Trong đồ án
sử dụng module LCD có kích thớc 4x20 characters với 16 chân ghép nối.Không nhất thiết phải chọn hãng cung cấp vì các module LCD đều đợc xâydựng theo cùng một tiêu chuẩn, do đó cách thức điều khiển và ghép nối cácmodule LCD thông dụng hiện nay cũng tơng tự nhau
c) Thiết bị vào dữ liệu và điều khiển (Keypad) :
Để ngời sử dụng có thể giao tiếp đợc với hệ thống, cần phải ghép nối Cvới một module keypad Do ứng dụng có thể làm việc với cả chữ cái và chữ sốnên ta sử dụng keypad loại 16 keys, trong đó mỗi một phím đợc thiết kế nhmột công tắc để có thể nhập đợc dữ liệu có dạng nh sau :
10 chữ số trong hệ thập phân từ 0 9
26 chữ cái la tinh từ A Z
Các phím điều khiển bao gồm : Send, Bspace, , , /, Clear.
Do số ký tự có thể đợc sử dụng cùng với các phím chức năng lớn hơn rấtnhiều so với tổng số phím sẵn có trên module keypad Vì vậy, bắt buộc phải
sử dụng phơng pháp Multikey, tức là sử dụng phần mềm để mỗi một phím trênmodule keypad có thể mã hoá đợc không ít hơn hai ký tự khác nhau Bằngcách này, với keypad có 16 phím ta có thể mã hoá đợc toàn bộ bảng chữ cái vàchữ số đồng thời vẫn có thể thực hiện đợc các chức năng điều khiển nh trìnhbầy ở trên
d) Giao tiếp giữa C và PC :
Mặc dù hệ thống đợc thiết kế dựa trên C AT90S8535 đã có thể làm việc
độc lập trong qua trình thu thập, xử lý và hiển thị dữ liệu tới ngời sử dụng màkhông cần có sự trợ giúp của PC Tuy nhiên, trong hầu hết các ứng dụng đềucần phải lu trữ lại dữ liệu mà nếu thực hiện việc này dựa trên C AT90S8535
đòi hỏi rất nhiều kỹ thuật và chi phí Trong khi đó, thao tác lu trữ dữ liệu trên
PC lại rất đơn giản, vì vậy giải pháp tối u nhất là sử dụng PC để làm nhiệm vụphức tạp này Vấn đề còn lại chỉ là thao tác truyền dữ liệu cần lu trữ từ Csang PC, việc này đợc thực hiện khá đơn giản vì bản thân C AT90S8535 đã
đợc tích hợp một bộ UART để sử dụng trong hoạt động truyền tin với các thiết
bị ở xa Nh vậy, dựa vào mạch UART của C ta có thể thực hiện truyền nhậndữ liệu với PC theo chuẩn RS 232 Một vấn đề cần quan tâm khi ghép nối Cvới PC theo chuẩn RS 232 là sự tơng quan về mặt điện áp tín hiệu dạng TTLcủa C và điện áp tín hiệu dạng RS 232 của PC Để thực hiện việc chuyển đổitín hiệu dạng TTL sang dạng tín hiệu RS 232 ta sử dụng IC Max232, IC này
Trang 6có nhiệm vụ tạo ra tín hiệu 10V từ mức điện áp TTL để tạo sự tơng thích vềmức điện áp với chuẩn RS 232
1.3.2 Phơng hớng thiết kế.
Từ sơ đồ tổng thể của hệ thống nh trên hình 1.1 và từ việc lựa chọn thiết
bị nh trình bầy ở trên, hệ thống cần thiết kế có thể đợc thể hiện nh trong sơ đồhình 1.2, trong đó :
Khối LCD display : Sử dụng module LCD sẵn có trên thị trờng đợc
ghép nối với C để hiển thị các thông tin cần thiết cho ngời sử dụng
Khối Keypad : Đợc nối ghép với C để ngời sử dụng có thể nhập
dữ liệu hoặc điều khiển sự hoạt động của hệ thống Module này đợc thiết
kế dới dạng các công tắc và sử dụng trực tiếp các đặc tính của các cổng I/
O lập trình đợc của C để thực hiện mà không cần nguồn hỗ trợ bênngoài
Khối LM 335 : Là một IC cảm biến nhiệt làm nhiệm vụ biến đổi
nhiệt độ môi trờng sang dạng điện áp để làm đầu vào cho bộ ADC của
C làm việc
Khối Max 232 : Sử dụng IC Max 232 ghép nối trợc tiếp với C làm
nhiệm vụ trao đổi thông tin giữa C và PC theo chuẩn RS 232
Khối nguồn : Làm nhiệm vụ biến nguồn xoay chiều 220V sangnguồn một chiều 5V ổn định để cấp nguồn cho các khối khác hoạt
động
Hình 1.2 : Sơ đồ khối thiết kế phần cứng
Trang 72.1 Lựa chọn linh kiện thiết kế.
2.1.1 Giới thiệu vi mạch điều khiển AT90S8535.
AT90S8535 là một vi mạch điều khiển năng lợng thấp 8 bit (công nghệ chíp CMOS) trên cơ sở cấu trúc RICS của hãng ATMEL, nó thuộc họ vi điều
khiển AT90S/LS8535 Bằng cách thực hiện mỗi lệnh trong một đơn chu kỳ,AT90S8535 có thể đạt tới 1 MIPS cho mỗi MHz cho phép hệ thống có thể đợcthiết kế một cách tối u nhất sự tiêu thụ năng lợng làm tăng tốc độ xử lý Về mặtcấu tạo C này cũng tơng tự nh C AT90S8515 với 4 cổng I/O lập trình đợc, tuynhiên về mặt chức năng thì C AT90S8535 đợc tích hợp thêm nhiều tính năngmới mà C AT90S8515 không có Các đặc trng chính của C AT90S8535 đợctrình bầy dới đây :
8KB bộ nhớ chơng trình
512 byte EEPROM
512 byte SRAM
32 line (4 cổng) I/O lập trình đợc
32 thanh ghi đa năng 8 bit
8 kênh đầu vào ADC riêng biệt với 10 bit kết quả
2 bộ Timer/Counter 8 bit với bộ đếm độc lập và chế độ so sánh
1 bộ Timer/Counter 16 bit với bộ đếm độc lập và các chế độ PWM
1 bộ UART lập trình trao đổi thông tin nối tiếp
1 bộ Watchdog Time lập trình đợc với bộ tạo giao động trong
1 bộ so sánh analog
1 cổng phối ghép nối tiếp thiết bị ngoại vi SPI
3 chế độ làm việc là : Idle, Power-Save và Power-down
Nguồn cung cấp từ 4.0 - 6.0V, tần số làm việc 0 - 8MHz
Vi mạch điều khiển AT90S8535 đợc chế tạo theo công nghệ chíp nhớ cố
định với mật độ cao Bộ nhớ Flash ISP trên chíp cho phép bộ nhớ chơng trình
có thể đợc lập trình lại thông qua một cổng SPI phối ghép nối tiếp với thiết bịngoại vi Ngoài ra, C AT90SS8535 còn hỗ trợ cho việc lập trình thông quacác công cụ pháp triển hệ thống nh C, assemblers
Vi điều khiển AT90S8535 có 4 cấu hình chân khác nhau là : PDIP (Có
40 chân), PLCC, TQFP, MLF (Có 44 chân) Sơ đồ chân của mỗi loại nh sau
Hình 2.1 : Cấu hình chân của C AT90S8535
LCD display
Keypad
LM335
C + I/O port
Nguồn
Max 232
Trang 8TQFP MLF
Chức năng các chân của C AT90S8535 nh sau :
VCC : Chân cấp nguồn 5V
GND : Chân nối đất
RESET : Là đầu vào reset Tín hiệu reset ở bên ngoài sẽ tạo ra bởi
mức thấp của trở kháng trên chân Reset Xung reset dài quá 50ns sẽ tạo
ra tín hiệu reset Xung ngắn hơn sẽ không đảm bảo phát sinh tín hiệureset
XTAL1 : Là một đầu vào có tác dụng đảo chiều bộ khuếch đại tạo
dao động và là đầu vào của mạch điều khiển đồng hồ bên trong
XTAL2 : Là đầu ra của tín hiệu đảo từ bộ khuếch đại tạo dao động
AVCC : Là chân cung cấp điện áp cho cổng A và bộ chuyển đổi
ADC, nếu ADC không đợc sử dụng thì chân này phải đợc nối với nguồn
5V (chân VCC), nếu ADC đợc sử dụng thì chân này phải đợc nối tớinguồn 5V qua bộ lọc thông thấp
AREF : Là đầu vào chuẩn của tín hiệu tơng tự cho bộ chuyển đổi
ADC Để cho ADC hoạt động đợc, nguồn sử dụng cho chân này phải cóphạm vị từ 2V đến AVCC
AGND : Chân nối đất của tín hiệu analog, nếu bo mạch có một mức
nối đất riêng của tín hiệu analog, thì chân này phải đợc nối tới mức nối
Trang 9Đệm ra của cổng A có khả năng kéo dòng lên tới 20mA và có thể điềukhiển trực tiếp sự hiển thị LED Khi các chân PA0 đến PA7 đợc sử dụng
nh các cổng vào và ở mức thấp, chúng sẽ là đầu vào hiện thời nếu các
điện trở trong đợc kích hoạt Cổng A cũng có thể đợc sử dụng nh những
đầu vào analog để đa tín hiệu tới bộ bộ chuyển đổi ADC Các chân củacổng A ở trạng thái không xác định khi reset, ngay cả khi đồng hồ khônghoạt động
Port B (PB7 BP0) : Là một cổng vào ra hai chiều 8 bit với các trở
kháng trong Đệm ra của cổng B có khả năng kéo dòng lên tới 20mA.Khi là đầu vào, các chân của cổng B trong trạng thái trở kháng thấp sẽ là
đầu vào hiện thời nếu các điện trở trong đợc kích hoạt Cổng B là cổngcung cấp các chức năng khác nhau với những đặc tính đặc biệt của CAT90S8535 Các chân của cổng B ở trạng thái không xác định khi reset,ngay cả khi đồng không hoạt động
Port C (PC0 PC7) : Là một cổng vào ra hai chiều 8 bit với các trở
kháng trong Đệm ra của cổng C có khả năng kéo dòng lên tới 20mA.Khi là đầu vào, các chân của cổng C trong trạng thái trở kháng thấp sẽ là
đầu vào hiện thời nếu các điện trở đợc kích hoạt Hai chân của cổng C cóthể đợc lựa chọn để sử dụng giống nh bộ tạo dao động cho bộTimer/Counter2 Các chân của cổng C ở trạng thái không xác định khireset, ngay cả khi đồng không hoạt động
Port D (PD0 PD7) : Là một cổng vào ra hai chiều 8 bit với các trở
kháng trong Đệm ra của cổng C có khả năng kéo dòng lên tới 20mA.Khi là đầu vào, các chân của cổng D trong trạng thái trở kháng thấp sẽ
là đầu vào hiện thời nếu các điện trở đợc kích hoạt Cổng D cũng cungcấp những chức năng có đặc tính đặc biệt của C AT90S8535 Các châncủa cổng D ở trạng thái không xác định khi reset, ngay cả khi đồngkhông hoạt động
Hình 2.2 : Sơ đồ khối vi mạch điều khiển AT90S8535
Trang 102.1.1.1 Cấu trúc của vi mạch AT90S8535.
Vi mạch điều khiển AT90S8535 có những phơng thức truy cập nhanh tớitâp thanh ghi đa năng bao gồm 32 thanh ghi 8 bit với thời gian truy cập trongmột đơn chu kỳ đồng hồ Điều này có nghĩa trong một đơn chu kỳ, một thaotác của bộ ALU đợc thực hiện sẽ lấy hai toán hạng từ hai thanh ghi trong tậpthanh ghi, sau khi thao tác đợc thực hiện và kết qua trả sẽ đợc lu trở lại tậpthanh ghi trong một chu kỳ đồng hồ
Sáu trong số 32 thanh ghi đa năng này có thể đợc sử dụng nh 3 thanh ghi
địa chỉ gián tiếp 16 bit trỏ đến không gian địa chỉ dữ liệu, làm cho phép tính
địa chỉ đạt đợc hiệu quả cao Một trong 3 con trỏ địa chỉ này cũng đợc sửdụng giống nh con trỏ địa chỉ tới vùng nhớ dữ liệu cố định Các thanh ghi địachỉ này là các thanh ghi 16 bit X, Y, Z
Hình 2.3 : Sơ đồ khối kiến trúc của C AT90S8535
Bộ ALU cung cấp các chức năng tính toán số học và logic giữa cácthanh ghi hoặc giữa một hằng số và một thanh ghi Những thao tác của mộtthanh ghi đơn cũng đợc thực hiện trong bộ ALU Sự hoạt động của ALU đợcphân chia làm 3 loại chính là số học, logic và các chức năng bit
Ngoài các chức năng của thanh ghi, các chế độ đánh địa chỉ bộ nhớ
Trang 11Không gian vùng nhớ I/O bao gồm 64 địa chỉ ($20 $5F) dành cho cácchức năng điều khiển thiết bị ngoại vi của C nh : Các thanh ghi điều khiển,
bộ Timer/Couter, bộ chuyển đổi ADC và các chức năng I/O khác Vùng nhớI/O có thể đợc truy nhập trực tiếp hoặc gián tiếp thông qua tập các thanh ghi
C AT90S8535 sử dụng kiến trúc Harvard - với bộ nhớ và bus độc lậpcho chơng trình và dữ liệu Bộ nhớ chơng trình đợc thực hiện với một
“pipeline” hai trạng thái Trong khi một lệnh đang đợc thực hiện, lệnh tiếptheo đợc nạp trớc từ bộ nhớ chơng trình Cách thức này cho phép các lệnh liêntiếp đợc thực hiện trong từng đơn chu kỳ đồng hồ Bộ nhớ chơng trình là bộnhớ Flash cho phép nạp dữ liệu trong hệ thống
Với những lệnh nhẩy và lệnh gọi, toàn bộ không gian địa chỉ 4K đợc truynhập trực tiếp Hầu hết các lệnh của AVR đều có độ dài 16 bit Mỗi địa chỉ bộnhớ chơng trình bao gồm một lệnh 16 bit hoặc 32 bit
Mỗi một module ngắt có những thanh ghi điều khiển trong không gian I/
O với một bit cho phép ngắt chung đợc đặt trong thanh ghi trạng thái Mỗingắt khác nhau có một vector ngắt độc lập trong bảng vector ngắt ở tại vị tríbắt đầu của bộ nhớ chơng trình Mỗi ngắt khác nhau đều có mức độ u tiêntuân theo vị trí vector ngắt của chúng Địa chỉ của vector ngắt càng thấp, mức
độ u tiên càng cao Khi xẩy ra ngắt, một chơng trình con phụ vụ ngắt đợc gọi,
địa chỉ trở về PC đợc đẩy vào ngăn xếp Vùng nhớ ngăn xếp đợc cấp pháttrong vùng nhớ dữ liệu của SRAM và do đó, dung lợng của ngăn xếp bị giớihạn bởi tổng dung lợng của SRAM và cách sử dụng thông thờng của SRAM.Tất cả các chơng trình của ngời sử dụng phải đợc khởi đầu bằng con trỏ ngănxếp (SP) trong thủ tục reset (trớc khi các chơng trình con hoặc các ngắt đợcthực thi) Con trỏ stack sử dụng 10 bit để truy nhập ghi/đọc trong không gianI/O 512 byte dữ liệu SRAM có thể đợc truy cập dễ dàng bởi 5 chế độ địa chỉkhác nhau đợc cung cấp bởi C AT90S8535
Hình 2.4 : Bản đồ bộ nhớ của C AT90S8535
2.1.1.2 Tập thanh ghi đa năng của C AT90S8535.
Tất cả các thanh ghi trong tập thanh ghi của C AT90S8535 khi thực mộthiện lệnh trong tập lệnh đều có thể đợc truy cập trực tiếp trong một đơn chu
kỳ đồng hồ Ngoại trừ 5 lệnh trực tiếp SBCI, SUBI, CPI, ANDI, ORI giữa mộthằng số và một thanh ghi và lệnh LDI sử dụng để nạp tức thì hằng dữ liệu,những lệnh này phải sử dụng các thanh ghi của nửa thứ hai trong tập thanh ghi(từ R16 R31) Các lệnh còn lại đều có thể sử dụng bất kỳ thanh ghi nào trongtập thanh ghi
Hình 2.5 : Địa chỉ 32 thanh ghi đa năng của C
Trang 12Qua hình 2.5 có thể thấy, mỗi thanh ghi đều đợc gán một địa chỉ trongkhông gian địa chỉ dữ liệu, chúng đợc đặt trong 32 vị trí đầu tiên của khônggian dữ liệu sử dụng Mặc dù không đợc thực hiện một cách vật lý nh trongSRAM, việc tổ chức bộ nhớ này cung cấp sự linh hoạt lớn trong việc truy nhậptới các thanh ghi, nh các thanh ghi X, Y, Z có thể đợc thiết lập để trỏ tới bất
kỳ thanh ghi nào trong tập thanh ghi
Các thanh ghi từ R26 R31 đợc thêm vào một số chức năng nhằm mởrộng khả năng sử dụng của tập thanh ghi Những thanh ghi này là những contrỏ địa chỉ đợc sử dụng trong chế độ địa chỉ gián tiếp của không gian dữ liệu
Ba thanh ghi địa chỉ gián tiếp là X, Y, Z đợc mô tả nh trong hình 2.6 :
Hình 2.6 : Mô tả các thanh ghi địa chỉ gián tiếp X, Y, Z
Trong các chế độ địa chỉ khác nhau, các thanh ghi này có chức năng điềuchỉnh linh hoạt đối với từng trờng hợp, tự động tăng, giảm hoặc không đổi
2.1.1.3 Bộ số học và Logic - ALU.
Bộ ALU của C AT90S8535 đợc nối trực tiếp với 32 thanh ghi đa năng.Trong một đơn chu kỳ đồng hồ, các thao tác của ALU giữa các thanh ghitrong tập thanh ghi đợc thực hiện và giữa một thanh ghi với một hằng số hoặctrên một đơn thanh ghi Các hoạt động của ALU đợc chia làm 3 loại chính là :
số học, logic và các phép toán trên bit
2.1.1.4 Đặc điểm các bộ nhớ trong của C AT90S8535.
a) Bộ nhớ chơng trình (Flash program memory) : Trong C
AT90S8535 chứa đựng 8KB bộ nhớ Flash lập trình đợc dùng để lu trữ chơngtrình Nó đợc tổ chức nh một bộ nhớ 4Kx16 bit để phù hợp với sự làm việc củacác lệnh có độ dài 16 hoặc 32 bit Bộ nhớ Flash này có thể chịu đợc ít nhất
1000 chu kỳ ghi/xoá Vì bộ đếm chơng trình (PC) của C AT90S8535 có độ
dài 12 bit, do đó nó có thể mã hoá 4096 địa chỉ trong bộ nhớ chơng trình
b) Bộ nhớ SRAM : 608 vị trí địa chỉ thấp nhất trong vùng nhớ dữ liệu
đợc dùng để địa chỉ hoá cho tập thanh ghi, bộ nhớ I/O và SRAM 96 vị trí địachỉ đầu tiên là của tập thanh ghi và bộ nhớ I/O, 512 vị trí địa chỉ tiếp theo làcủa bộ nhớ SRAM Một địa chỉ bất kỳ trong trong không gian địa chỉ dữ liệuSRAM đều có thể đợc xác định thông qua 5 chế độ địa chỉ khác nhau là : trựctiếp, tơng đối, gián tiếp, gián tiếp với sự giảm trớc và gián tiếp với sự tăng sau.Trong tập thanh ghi, các thanh ghi từ R26 tới R31 đợc sử dụng nh các thanhghi con trỏ địa chỉ gián tiếp
ở chế độ địa chỉ trực tiếp có cho phép truy cập tới toàn bộ không gian dữliệu Chế độ địa chỉ tơng đối cho phép xác định 63 vị trí địa chỉ từ địa chỉ cơ
sở cho bởi các thanh ghi Y hoặc Z Khi sử dụng các chế độ thanh ghi giántiếp với sự tự động giảm trớc hoặc tăng sau, nội dung của các thanh ghi địa chỉ
X, Y và Z đều tự động tăng hoặc giảm sau khi thực hiện 32 thanh ghi đa
Trang 13c) Bộ nhớ EEPROM : C AT90S8535 có 512 byte bộ nhớ EEPROM,
đợc tổ chức nh một không gian dữ liệu riêng biệt cho phép mỗi byte có thể
đ-ợc ghi/đọc Bộ nhớ EEPROM có thể thực hiện ít nhất 100.000 chu kỳ ghi/xoá
Sự truy nhập giữa EEPROM và C đợc thực hiện thông qua các thanh ghi địachỉ, thanh ghi dữ liệu và thanh ghi điều khiển của EEPROM, các thanh ghinày có thể đợc truy cập trong không gian I/O Thời gian truy cập ghiEEPROM trong phạm vi từ 2.5 đến 4 ms, tuỳ thuộc vào điện áp trên chân VCC.EEPROM có một chức năng tự động tính thời gian cho phép phần mềm củangời sử dụng kiểm tra khi byte tiếp theo có thể đợc ghi/đọc Một ngắt đặc biệtkiểm tra sự sẵn sàng của EEPROM có thể đợc thiết lập để kích hoạt khiEEPROM sẵn sàng tiếp nhận dữ liệu mới Để ngăn cản việc ghi EEPROMngoài ý muốn, một quy trình ghi cụ thể phải đợc tuân theo Khi đọcEEPROM, C bị tạm dừng trong 4 chu kỳ đồng hồ trớc khi lệnh tiếp theo đợcthực hiện Khi ghi EEPROM, C tạm dừng trong 2 chu kỳ đồng hồ trớc khithực hiện lệnh tiếp theo
Thanh ghi địa chỉ EEPROM : EEARH và EEARL
Các thanh ghi địa chỉ của EEPROM (EEARH và EEARL) chỉ định địa
chỉ của một byte trong không gian 512 byte EEPROM Các byte dữ liệu củaEEPROM đợc địa chỉ hóa từ 0 đến 511
Thanh ghi dữ liệu EEPROM : EEDR
Trong thao tác ghi của EEPROM, thanh ghi EEDR chứa dữ liệu đợc ghitới EEPROM theo địa chỉ đợc xác định bởi thanh ghi EEAR Trong thao tác
đọc EEPROM, thanh ghi EEDR chứa dữ liệu đọc ra từ EEPROM tại địa chỉcho trong thanh ghi EEAR
Thanh ghi điều khiển EEPROM : EECR
Bit 3 - EERIE : Bit cho phép sẵn sàng ngắt của EEPROM
Khi bit I trong thanh ghi SREG và bit EERIE đợc thiết lập, ngắt trạng tháisẵn sàng của EPROM đợc cho phép Khi bị xoá ngắt bị vô hiệu hoá Ngắt trạngthái sẵn sàng EEPROM tạo ra một ngắt cứng khi bit EEWE bị xoá
Bit 2 - EEMWE : Bit cho phép thao tác ghi EEPROM
Bit EEMWE xác định có hay không sự thiết lập bit EEWE để gây ra thaotác ghi EEPROM Khi bit EEMWE đợc thiết lập, thì sự thiết lập của bit EEWE
sẽ ghi dữ liệu vào EEPROM tại địa chỉ đã lựa chọn Nếu bit EEMWE là 0, thì sựthiết lập của bit EEWE sẽ không có kết quả Khi bit EEMWE đã đợc thiết lậpbởi phần mềm, phần cứng xoá bit này về 0 sau 4 chu kỳ đồng hồ
Bit 1 - EEWE : Bit cho phép ghi EEPROM
Trang 14Tín hiệu cho phép ghi EEPROM (EEWE) là một xung chọn ghi tớiEEPROM Khi địa chỉ và dữ liệu đã đợc thiết lập phù hợp, bit EEWE phải đợcthiết lập để ghi giá trị vào trong EEPROM Bit EEEMWE phải đợc thiết lậpkhi giá trị logic 1 đợc ghi vào bit EEWE, nếu không thì không xẩy ra thao tác
ghi EEPROM Quy trình dới đây phải đợc tuân theo khi ghi EEPROM (thứ tự của bớc 2 và 3 không cần quan tâm).
1 Đợi cho đến khi bit EEWE trở về 0
2 Ghi địa chỉ mới của EEPROM tới thanh ghi địa chỉ EEPROM (tuỳ chọn)
3 Ghi dữ liệu mới vào thanh ghi EEDR (tuỳ chọn)
4 Ghi giá trị logic 1 vào bit EEMWE trong thanh ghi EECR (Để có thểghi giá trị logic 1 vào bit EEMWE, thì bit EEWE phải đợc ghi là 0 trong cùngmột chu kỳ đồng hồ)
5 Trong vòng 4 chu kỳ đồng hồ sau khi thiết lập bit EEMWE, ghi giá trịlogic 1 tới bit EEWE
Chú ý : Một ngắt giữa bớc 4 và 5 sẽ làm lỗi chu kỳ ghi, vì bit EEMWE
sẽ hết thời gian Nếu một thủ tục ngắt truy xuất tới EEPROM trong khi mộtngắt khác cũng đang truy xuất EEPROM, thì nội dung của các thanh ghiEEAR và EEDR sẽ bị thay đổi, gây lỗi ngắt truy xuất EEPROM Để tránhnhững vấn đề này cần xoá các cờ ngắt chung trong thời gian thực hiện 4 bớccuối cùng Khi thời gian truy cập ghi kết thúc (2.5ms và VCC = 5V hoặc 4ms
và VCC = 2.7V), bit EEWE đợc xoá bởi phần cứng, Sử dụng phần mềm có thểthăm dò bít này và đợi nó trở về không trớc khi thực hiện ghi byte tiếp theo.Khi bit EEWE đã đợc thiết lập, C tạm dừng trong 2 chu kỳ đồng hồ trớc khilệnh tiếp theo đợc thực hiện
Bit 0 - EERE : Bit cho phép đọc EEPROM
Tín hiệu cho phép đọc EEPROM là xung chọn đọc đến EEPROM Khi
địa chỉ phù hợp đợc thiết lập trong thanh ghi EEAR, bit EERE phải đợc thiếtlập Khi bit EERE bị xoá bởi phần cứng, dữ liệu yêu cầu đợc tìm thấy trongthanh ghi EEDR Sự truy xuất đọc EEPROM cần một lệnh và không cần thăm
dò bit EERE Khi bit EERE đã đợc thiết lập, C tạm dừng trong 4 chu kỳ
đồng hồ trớc khi lệnh tiếp theo đợc thực hiện
Ngời sử dụng cần phải thăm dò bit EEWE trớc khi bắt đầu thao tác đọc.Nếu dữ liệu hoặc địa chỉ mới đợc ghi vào các thanh ghi vào/ra của EEPROMkhi một thao tác ghi đang diễn ra, thì thao tác ghi sẽ bị ngắt và kết quả không
đợc xác định
2.1.1.5 Các chế độ địa chỉ của C AT90S8535.
Vi mạch điều khiển AT90S8535 hỗ trợ các chế độ địa chỉ rất mạnh vàhiệu quả cao cho việc truy nhập tới bộ nhớ chơng trình (bộ nhớ Flash) và bộnhớ dữ liệu (SRAM, tập thanh ghi và bộ nhớ I/O) Dới đây là các chế độ địachỉ của C AT90S8535 :
a) Địa chỉ trực tiếp một thanh ghi
Trang 15Các toán hạng đợc chứa trong thanh ghi r (Rr) và d (Rd).
Kết quả đợc lu trong thanh ghi d (Rd)
c) Địa chỉ I/O trực tiếp
Toán hạng địa chỉ chứa trong 6 bit LSB của từ lệnh,
n là địa chỉ của thanh ghi nguồn hoặc đích
d) Địa chỉ dữ liệu trực tiếp
16 bit địa chỉ dữ liệu đợc chứa trong 16 bit LSB của hai từ lệnh.
Rd/Rr chỉ rõ thanh ghi nguồn hoặc thanh ghi đích.
e) Địa chỉ dữ liệu tơng đối
Toán hạng địa chỉ là kết quả của nội dung thanh ghi Y hoặc Z
đợc cộng với địa chỉ chứa trong 6 bit LSB của từ lệnh (a)
f) Địa chỉ dữ liệu gián tiếp
Toán hạng địa chỉ là nội dung của thanh ghi X, Y hoặc Z
g) Địa chỉ dữ liệu gián tiếp giảm trớc
Trang 16Nội dung các thanh ghi X, Y, Z giảm 1 trớc khi thực hiện Toán hạng địa chỉ là nội dung đã giảm của thanh ghi X, Y, Z
h) Địa chỉ dữ liệu gián tiếp tăng sau
Thanh ghi X, Y hoặc Z đợc cộng 1 sau khi thực hiện.
Địa chỉ toán hạng là nội dung của thanh ghi X, Y hoặc Z trớc khi cộng
i) Địa chỉ cố định khi thực hiện lệnh LPM
Địa chỉ byte cố định đợc xác định bởi nội dung của thanh ghi Z.
15 bit MSB lựa chọn địa chỉ từ (0 – 4K), bit LSB cho phép 4K), bit LSB cho phép
chọn byte thấp nếu LSB = 0 hoặc byte cao nếu đặt LSB = 1.
j) Địa chỉ gián tiếp trong bộ nhớ chơng trình với lệnh IJMP và ICALL
Chơng trình đợc tiếp tục thực hiện tại địa chỉ đợc chứa bởi thanh ghi Z (Bộ đếm chơng trình (PC) đợc nạp với nội dung của thanh ghi Z)
k) Địa chỉ tơng đối của bộ nhớ chơng trình với lệnh RJMP và RCALL
Chơng trình đợc tiếp tục thực hiện tại địa chỉ PC + k + 1
Địa chỉ tơng đối k bắt đầu từ - 2048 tới 2047
2.1.1.6 Thời gian truy cập bộ nhớ và thời gian thực hiện lệnh.
C AT90S8535 đợc điều khiển bởi đồng hồ hệ thống 0, đợc tạo trực tiếp
Trang 17Hình 2.9 mô tả khái niệm thời gian thao tác trong của tập thanh ghi.Trong một đơn chu kỳ đồng hồ, một thao tác sử dụng hai toán hạng trong haithanh ghi của ALU đợc thực hiện và kết quả đợc lu trở lại thanh ghi đích.
Hình 2.9: Hoạt động của ALU trong đơn chu kỳ đồng hồ
Sự truy nhập vào bộ nhớ SRAM đợc thực hiện trong hai chu kỳ đồng hồ
(Địa chỉ SRAM) Tên thanh ghi/cổng Chức năng
$3F ($5F) SREG Thanh ghi trạng thái
$3E ($5E) SPH địa chỉ byte cao của con trỏ Stack
$3D ($5D) SPL Địa chỉ byte thấp của con trỏ Stack
$3B ($5B) GIMSK Thanh ghi mặt nạ ngắt chung
$3A ($5A) GIFR Thanh ghi cờ ngắt chung
$39 ($59) TIMSK Thanh ghi mặt nạ ngắt của bộ Timer/Counter
$38 ($58) TIFR Thanh ghi cờ ngắt của bộ Timer/Counter
$35 ($55) MCUCR Thanh ghi điều khiển chung của MCU
$34 ($45) MCUSR Thanh ghi trạng thái chung của MCU
$33 ($53) TCCR0 Thanh ghi điều khiển bộ Timer/Counter 0
$32 ($52) TCNT0 8 bit dữ liệu của bộ Timer/Counter 0
$2F ($4F) TCCR1A Thanh ghi điều khiển A của bộ Timer/Counter 1
$2E ($4E) TCCR1B Thanh ghi điều khiển B của bộ Timer/Counter 1
$2D ($4D) TCNT1H Byte cao của bộ Timer/Counter 1
$2C ($4C) TCNT1L Byte thấp của bộ Timer/Counter 1
$2B ($4B) OCR1AH Byte cao của thanh ghi A so với đầu ra của Timer/Counter1
$2A ($4A) OCR1AL Byte thấp của thanh ghi A so với đầu ra của Timer/Counter1
$29 ($49) OCR1BH Byte cao của thanh ghi B so với đầu ra của Timer/Counter1
$28 ($48) OCR1BL Byte thấp của thanh ghi B so với đầu ra của Timer/Counter1
$27 ($47) ICR1H Thanh ghi lu trữ Byte cao của đầu vào Timer/Counter1
$26 ($46) ICR1L Thanh ghi lu trữ Byte cao đầu vào của Timer/Counter1
$25 ($45) TCCR2 Thanh ghi điều khiển bộ Timer/Counter 2
$24 ($44) TCNT2 8 bit dữ liệu của bộ Timer/Counter 2
$23 ($43) OCR2 Thanh ghi so với đầu ra của bộ Timer/Counter 2
$22 ($42) ASSR Thanh ghi trạng thái chế độ không đồng bộ
$21 ($41) WDTCR Thanh ghi điều khiển mạch kiểm tra tuần tự bộ định thời gian
Trang 18$1F ($3E) EEARH Thanh ghi địa chỉ Byte cao của EEPROM
$1E ($3E) EEARL Thanh ghi địa chỉ Byte thấp của EEPROM
$1D ($3D) EEDR Thanh ghi dữ liệu EEPROM
$1C ($3C) EECR Thanh ghi điều khiển EEPROM
$1B ($3B) PORTA Thanh ghi dữ liệu, cổng A
$1A ($3A) DDRA Thanh ghi điều hớng dữ liệu, cổng A
$19 ($39) PINA Các chân vào của cổng A
$18 ($38) PORTB Thanh ghi dữ liệu cổng B
$17 ($37) DDRB Thanh ghi điều hớng dữ liệu, cổng B
$16 ($36) PINB Các chân vào của cổng B
$15 ($35) PORTC Thanh ghi dữ liệu cổng C
$14 ($34) DDRC Thanh ghi điều hớng dữ liệu, cổng C
$13 ($33) PINC Các chân vào của cổng C
$12 ($32) PORTD Thanh ghi dữ liệu của cổng D
$11 ($31) DDRD Thanh ghi điều hởng dữ liệu, cổng D
$10 ($30) PIND Các chân vào của cổng D
$0F ($2F) SPDR Thanh ghi dữ liệu cổng vào/ra của thiết bị ngoại vi
$0E ($2E) SPSR Thanh ghi trạng thái của SPI
$0D ($2D) SPCR Thanh ghi điều khiển SPI
$0C ($2C) UDR Thanh ghi dữ liệu vào/ra của bộ UART
$0B ($2B) USR Thanh ghi trạng thái UART
$0A ($2A) UCR Thanh ghi điều khiển UART
$09 ($29) UBRR Thanh ghi tốc độ baud của UART
$08 ($28) ACSR Thanh ghi điều khiển và trạng thái của mạch so sánh Analog
$07 ($27) ADMUX Thanh ghi lựa chọn của bộ dồn kênh ADC
$06 ($26) ADCSR Thanh ghi điều khiển và trạng thái của bộ ADC
$05 ($25) ADCH Thanh ghi dữ liệu byte cao của bộ ADC
$04 ($24) ADCL Thanh ghi dữ liệu byte thấp của bộ ADC
Tất cả các cổng I/O của C AT90S8535 và các thiết bị ngoại vi đều đợc
đặt trong gian cổng I/O Các vị trí cổng I/O đợc truy nhập bởi lệnh IN và OUTtruyền dữ liệu giữa 32 thanh ghi đa năng và không gian I/O Các thanh ghi I/O
có địa chỉ trong phạm vi từ $00 đến $1F có thể đợc truy nhập trực tiếp tới cácbit bằng cách sử dụng các lệnh SBI và CBI Trong các thanh ghi này, giá trịcác bit đơn có thể đợc kiểm tra bằng cách sử dụng các lệnh SBIS và SBIC Khi
sử dụng các lệnh I/O cụ thể IN và OUT, các địa chỉ I/O từ $00 đến $3F phải
đợc sử dụng Khi xác định địa chỉ các thanh ghi I/O nh địa chỉ của SRAM,phải thêm $20 vào các địa chỉ này
Bảng 2.2 : Vị trí các bit trong các thanh ghi I/O
B TOIE1 - TOIE0
Trang 19COM1 A0
COM1 B1
COM1 B0 - -
PWM1 1
PWM1 0
OCR2U B
TCR2U B
Trang 20PORTA 6
PORTA 5
PORTA 4
PORTA 3
PORTA 2
PORTA 1
PORTA 0
PORTB 6
PORTB 5
PORTB 4
PORTB 3
PORTB 2
PORTB 1
PORTB 0
PORTC 6
PORTC 5
PORTC 4
PORTC 3
PORT C2
PORT C1
PORT C0
PORTD 6
PORTD 5
PORTD 4
PORTD 3
PORT D2
PORT D1
PORT D0
Trang 21Một vài bit cờ trạng thái có thể đợc xoá bằng cách ghi trị 1 vào vị trí của
nó Chú ý đối với các lệnh CBI và SBI sẽ có tác dụng trên tất cả các bit trongthanh ghi I/O và thao tác ghi lại 1 vào bất kỳ cờ nào đã đợc thiết lập đồngnghĩa với việc xoá cờ đó Tuy nhiên, các lệnh CBI và SBI chỉ làm việc với cácthanh ghi có địa chỉ từ $00 đến $1F Chức năng của mỗi bit trong các thanhghi sẽ đợc giới thiệu trong từng phần có liên quan, dới đây là hai thanh ghichính của vi mạch điều khiển AT90S8535
Thanh ghi trạng thái C : SREG
Thanh ghi trạng thái (Status register) của C AT90S8535 có địa chỉ tại vịtrí $3F ($5F) trong không gian I/O đợc định nghĩa nh sau :
Bit 7 - I : Bit cho phép ngắt chung (Global Interrupt Enable)
Bit cho phép ngắt chung phải đợc thiết lập để cho phép các ngắt Sau đó,mỗi sự điều khiển ngắt cho phép riêng đợc thực hiện trong các thanh ghi điềukhiển độc lập Nếu bit cho phép ngắt chung bị xoá, thì không có ngắt nào đợccho phép Bit I đợc xoá bởi phần cứng sau khi một ngắt xảy ra và đợc thiết đặtbởi lệnh RETI để cho phép các ngắt tiếp theo
Bit 6 - T : Bit lu trữ sao chép (Bit Copy Storage)
Các lệnh sao chép bit BLD (BitLoaD) và BST (BitSTore) sử dụng bit T
nh là nguồn hoặc đích cho thao tác bit Một bit của một thanh ghi trong tậpthanh ghi có thể sao chép vào trong bit T bằng lệnh BST và một bit trong T cóthể đợc sao chép vào một bit trong thanh ghi của tập thanh ghi bởi lệnh BLD
Bit 5 - H : Bit cờ nhớ phụ (Half-carry Flag)
Cờ nhớ phụ H xác định số nhớ trong một số thao tác số học
Bit 4 - S : Bit dấu (Sign Bit, S = N V)
Bit dấu S luôn là một phép logic NAND giữa cờ phủ định N và cờ tràn số
bù hai V
Bit 3 - V : Bit cờ tràn bù hai (Two’s Complement Oveflow Flag)
Cờ tràn số bù hai V hỗ trợ cho phép tính số bù hai
Bit 2 - N : Bit cờ phủ định (Negative Flag)
Cờ phủ định N cho biết một kết quả âm từ một phép tính số học hoặc logic
Bit 1 - Z : Bit cờ Zero (Zero Flag)
Cờ Zero Z cho biết một kết quả bằng không từ một phép tính số hoặc logic
Bit 0 - C : Bit cờ nhớ (Carry Flag)
Cờ carry C xác định số nhớ trong một phép tính số hoặc logic
Chú ý : Thanh ghi trạng thái không tự động đợc lu và khôi phục khi tham
gia vào một thủ tục ngắt hoặc khi trở về từ một thủ tục ngắt Do đó, nó phải đợc thựchiện bởi phần mềm
Thanh ghi con trỏ ngăn xếp : SP
Trang 22Con trỏ ngăn xếp của C AT90S8535 đợc thực hiện nh hai thanh ghi 8bit ở địa chỉ $3E($5E) và $3D($5D) trong không gian I/O Do bộ nhớ SRAMcủa AT90S8535 có $25F địa chỉ, do đó con trỏ SP cần sử dụng 10 bit để xác
định các vị trí địa chỉ cần thiết
Con trỏ ngăn xếp SP trỏ tới vùng dữ liệu ngăn xếp trong SRAM nơi màmột chơng trình con phuc vụ ngắt và ngắt đợc định vị Không gian ngăn xếptrong vùng dữ liệu SRAM phải đợc khai báo trong chơng trình trớc bất kỳ lờigọi chơng trình con nào đợc thực hiện hoặc bất kỳ ngắt nào đợc cho phép Contrỏ ngăn xếp phải đợc thiết đặt ở những địa chỉ lớn hơn $60 SP giảm đi 1 bytekhi dữ liệu đợc đẩy vào Stack bởi lệnh PUSH và nó giảm đi 2 byte khi một địachỉ đợc đẩy vào Stack trong lời gọi chơng trình con hoặc ngắt SP đợc tăng lên
1 byte khi dữ liệu đợc lấy ra khỏi Stack với lệnh POP và nó đợc tăng 2 bytekhi một địa chỉ đợc lấy ra từ Stack với lệnh trở về từ chơng trình con REThoặc lệnh trở về từ một ngắt RETI
2.1.1.8 Ngắt và xử lý ngắt trong C AT90S8535.
C AT90S8535 cung cấp 16 nguồn gây ngắt khác nhau và một ngắtReset Các ngắt này và ngắt Reset có một vector chơng trình độc lập trongkhông gian bộ nhớ chơng trình Tất cả các ngắt đợc gán với các bit cho phépngắt riêng và phải đợc thiết lập cùng với bit I trong thanh ghi SREG để chophép ngắt xảy ra
Vị trí địa chỉ thấp nhất trong không gian bộ nhớ chơng trình đợc tự động
định nghĩa là địa chỉ của vector Reset, tiếp theo đó là địa chỉ của các vectorngắt khác Danh sách đầy đủ của các vector ngắt đợc thể hiện trong bảng 2.3,bảng này cũng cho biết các cấp độ u tiên của các ngắt tuỳ theo vị trí địa chỉcủa vector ngắt của nó theo nguyên tắc, địa chỉ càng thấp thì mức độ u tiêncàng cao RESET có mức u tiên cao nhất, tiếp theo là INT0 v.v
Bảng 2.3 : Địa chỉ của các vector ngắt trong C AT90S8535
TT vector ngắt Địa chỉ Nguồn gây ngắt Định nghĩa ngắt
1 $000 RESET Reset và khởi động lại mạch Watchdog
4 $003 TIMER2 COMP Ngắt thích ứng so sánh của T/C 2
5 $004 TIMER2 OVF Ngắt tràn của T/C 2
6 $005 TIMER1 CAPT Ngắt lu giữ sự kiện của T/C 1
7 $006 TIMER1 COMPA Ngắt thích ứng so sánh A của T/C 1
8 $007 TIMER1 COMPB Ngắt thích ứng so sánh B của T/C 1
9 $008 TIMER1 OVF Ngắt tràn của T/C 1
11 $00A SPI, STC Ngắt kết thúc truyền nối tiếp qua SPI
12 $00B UART, RX Ngắt kết thúc nhận dữ liệu của UART
13 $00C UART, UDRE Ngắt báo thanh ghi dữ liệu của UART rỗng
14 $00D UART, TX Ngắt hoàn thành truyền dữ liệu qua UART
16 $00F EE_RDY Ngắt báo EEPROM đã sẵn sàng R/W
17 $010 ANA_COMP Ngắt so sánh độ dài tín hiệu Analog
Một chơng trình bình thờng có thể thiết lập cho các địa chỉ của vectorReset và các vector ngắt khác nh sau :
Địa chỉ Lệnh Nhãn/toán hạng Giải thích
$003 rjmp TIM2_COMP ;Điều khiển so sánh Timer2
Trang 23$009 rjmp TIM0_OVF ;Điều khiển tràn Timer0
$00a rjmp SPI_STC ;Điều khiển kết thúc truyền dữ liệu qua SPI
$00b rjmp UART_RXC ;Điều khiển kết thúc UART RX
$00c rjmp UART_DRE ;Điều khiển thông báo hết dữ liệu trong UDR
$00d rjmp UART_TXC ;Điều khiển kết thúc UART TX
$00e rjmp ADC ;Ngắt thông báo kết thúc chuyển đổi ADC
Các nguồn Reset của C AT90S8535.
C AT90S8535 có 3 nguồn Reset khác nhau là : Power-on Reset (Resetkhi nguồn bật), Reset ngoài và Watchdog Reset
Power-on Reset : MCU đợc thiết lập lại khi điện áp cung cấp thấp hơn
ngỡng điện áp Power-on Reset (VPOT)
Reset ngoài : MCU đợc thiết lập lại khi một mức điện áp thấp xuất
hiện trên chân RESET trong khoảng thời gian lớn hơn 50ns
Watchdog Reset : MCU đợc thiết lập lại khi chu kỳ của mạch
Wachdog timer kết thúc và mạch Wachdog đợc cho phép
Trong thời gian Reset, tất cả các thanh ghi I/O đợc thiết lập lại với giá trịkhởi tạo và sự thực hiện chơng trình đợc bắt đầu từ địa chỉ $000 Lệnh đặttrong địa chỉ $000 phải là lệnh RJMP (lệnh nhảy quan hệ) để thi hành thủ tụcReset Nếu một chơng trình không cho phép bất một ngắt nào, thì các vectorngắt sẽ không đợc sử dụng và đoạn mã của chơng trình có thể đợc đặt tại các
vị trí này
Thông tin về bất cứ nguồn Reset nào gây ra sự thiết lập lại MCU đợc thểhiện đầy đủ trong các bit của thanh ghi trạng thái MCU - MCUSR
Thanh ghi trạng thái MCU : MCUSR
Bit 7 2 : Ressered bits
Bit 1 - EXTRF : Bit cờ Reset từ bên ngoài (EXTernal Reset Flag)
Sau một tín hiệu Reset Power-on, bit này không đợc xác định (X) Nó chỉ
có thể đợc thiết lập bởi một tín hiệu reset từ bên ngoài Một tín hiệu ResetWatchdog sẽ không thay đổi giá trị của bit này Bit này đợc xoá bằng cách ghigiá trị logic 0 vào bit
Bit 0 - PORF : Bit cờ Reset Power-on (Power-On Reset Flag)
Bit này chỉ đợc thiết lập bởi một tín hiệu Reset Power-on Một tín hiệuReset Watchdog hoặc tín hiệu Reset từ bên ngoài sẽ không làm thay đổi giá trịcủa bit này Bit đợc xoá bằng cách ghi giá trị 0 vào bit
Bảng 2 4 : Giá trị của các bit EXTRF và PORF sau Reset
Power-on Reset Không thay đổi 1
Watchdog Reset Không thay đổi Không thay đổi
Có thể sử dụng các giá trị của các bít này để xác định một điều kiện gây
ra Reset Đối với phần mềm cần phải xoá cả hai bit PORF và EXTRF càng
Trang 24sớm càng tốt trong chơng trình Kiểm tra giá trị của các bit PORF và EXTRtrớc khi các bit đợc xoá Nếu bit đợc xoá trớc khi xuất hiện một tín hiệu Reset
từ bên ngoài hoặc của Watchdog, thì nguồn gốc của ngắt có thể đợc tìm thấybằng cách sử dụng bảng 2.5
Vi mạch điều khiển AT90S8535 có hai thanh ghi điều khiển mặt nạ ngắt
8 bit là : Thanh ghi mặt nạ ngắt chung - GIMSK (General Interrupt Maskregister) và thanh ghi mặt nạ ngắt của các mạch Timer/Counter – 4K), bit LSB cho phép TISMK(Timer/Counter Interrupt Mask register)
Khi xẩy ra một ngắt, bit cho phép ngắt chung I bị xoá và tất cả các ngắt
bị cấm Sử dụng phần mềm có thể thiết lập cho bit I để cho phép các ngắt
đang bị che Bit I đợc lập sau khi thực hiện lệnh trở về từ ngắt - RETI
Khi bộ đếm chơng trình PC trỏ tới một vector ngắt hiện tại để thực hiệnchơng trình con phục vu ngắt, phần cứng sẽ xoá cờ ngắt tơng ứng với ngắtpháp sinh Một vài cờ ngắt cũng có thể đợc xoá bằng cách ghi giá trị logic 1vào vị trí bit cờ đó Nếu một điều khiện ngắt xẩy ra khi bit cho phép ngắt t ơngứng bị xoá, thì cờ ngắt sẽ đợc thiết lập và đợc nhớ cho đến khi ngắt đó đợc chophép hoặc cờ đợc xoá bởi phần mềm
Nếu một hoặc nhiều điều kiện ngắt xẩy ra khi bit cho phép ngắt chung bịxoá, các cờ ngắt tơng ứng sẽ đợc thiết lập và đợc nhớ cho đến khi bit cho phépngắt chung đợc thiết lập và các ngắt sẽ đợc thực hiện tuỳ theo cấp u tiên củamỗi ngắt
Chú ý : Mức ngắt ngoài không có cờ và sẽ chỉ đợc nhớ lâu bằng điều
kiện ngắt tích cực Ngoài ra, thanh ghi trạng thái SREG sẽ không tự động lulại khi tham gia một ngắt và khôi phụ lại khi trở về từ chơng trình con phục vụngắt, do đó nó phải đợc điều khiển bằng phần mềm
Các thanh ghi điều khiển ngắt của C AT90S8535
Thanh ghi mặt nạ ngắt chung : GIMSK (General Interrupt Mask)
Bit 7 - INT1 : Bit cho phép ngắt ngoài mức 1 (External Interrupt Request 1 Enable)
Khi bit INT1 đợc thiết lập và bit I trong thanh ghi trạng thái SREG đợcthiết lập, thì chân yêu cầu ngắt mức 1 từ bên ngoài đợc cho phép Các bitISC11 và ISC10 trong thanh ghi điều khiển chung MCUCR sẽ xác định ngắt từbên ngoài đợc kích hoạt theo sờn lên hay sờn xuống hoặc theo mức nhận biếtcủa tín hiệu trên chân INT1 Sự kích hoạt trên chân này sẽ gây ra một yêu cầungắt cho dù chân INT1 đợc cấu hình nh một đầu ra Ngắt tơng ứng của mộtyêu cầu ngắt ngoài mức 1 đợc thực hiện từ địa chỉ $002 trong bộ nhớ chơngtrình
Trang 25trong thanh ghi điều khiển chung MCUCR sẽ xác định ngắt từ bên ngoài đợckích hoạt theo sờn lên hay sờn xuống hoặc theo mức nhận biết của tín hiệutrên chân INT0 Sự kích hoạt trên chân này sẽ gây ra một yêu cầu ngắt cho dùchân INT0 đợc cấu hình nh một đầu ra Ngắt tơng ứng của một yêu cầu ngắtngoài mức 0 đợc thực hiện từ địa chỉ $001 trong bộ nhớ chơng trình.
Bit 5 0 : Reserved bits
Thanh ghi cờ ngắt chung : GIFR (General Interrupt Flag Register)
Bit 7- INTF1 : Bit cờ ngắt ngoài mức 1 (External Interrupt Flag 1)
Khi một tín hiệu theo sờn hoặc một sự thay đổi mức logic trên chân INT1
sẽ gây ra một yêu cầu ngắt, bit INTF1 đợc thiếp lập Cờ này luôn đợc xoá khichân này đợc thiết lập cho các ngắt có mức yêu tiên thấp, do đó trạng thái củamột ngắt có mức u tiên thấp có thể đợc xác định bằng cách đọc bit này
Nếu bit I trong thanh ghi trạng thái SREG và bit INT1 trong thanh ghimặt nạ ngắt chung GIMSK đợc thiết lập, MCU sẽ nhẩy tới địa chỉ ngắt $002
Do ngắt đợc tác động bởi tín hiệu sờn và sự thay đổi mức logic, cờ này đợcxoá khi thủ tục ngắt đợc thực hiện, nó cũng có thể đợc xoá bởi việc ghi giá trịlogic 1 vào vị trí của cờ
Bit 6 - INTF0 : Bit cờ ngắt ngoài mức 0 (External Interrupt Flag 0)
Khi một tín hiệu sờn hoặc một sự thay đổi logic trên chân INT0 gây ramột yêu cầu ngắt, bit INTF0 đợc thiếp lập Cờ này luôn đợc xoá (0) khi chânnày đợc đặt cấu hình cho các ngắt có mức u tiên thấp, nh vậy trạng thái củamột ngắt có mức u tiên thấp có thể đợc xác định bằng cách đọc bit này
Nếu bit I trong thanh ghi trạng thái SREG và bit INT1 trong thanh ghimặt nạ ngắt chung GIMSK đợc thiết lập, MCU sẽ nhẩy tới địa chỉ ngắt $001
Do ngắt đợc tác động bởi tín hiệu sờn và sự thay đổi mức logic, cờ này đợcxoá khi thủ tục ngắt đợc thực hiện, nó cũng có thể đợc xoá bởi việc ghi giá trịlogic 1 vào vị trí của cờ
Thanh ghi mặt nạ ngắt của các bộ Timer/Counter : TIMSK
Bit 7 - OCIE2 : Bit cho phép ngắt so sánh bằng T/C2 (Timer/Counter2 Output
Compare Match Interrupt Enable)
Khi bit OCIE2 đợc thiết lập và bit I trong thanh ghi trạng thái (SREG)
đ-ợc thiết lập, ngắt so sánh bằng T/C2 đđ-ợc cho phép Ngắt tơng ứng tại địa chỉ
$003 đợc thực hiện nếu xuất hiện một tín hiệu so sánh bằng trong T/C2 (tức
là, khi bit OFC2 đợc thiết lập trong thanh ghi cờ ngắt T/C [TIFR])
Bit 6 - TOIE2 : Bit cho phép ngắt tràn T/C2 (Timer/Counter2 Overflow
Interrupt Enable)
Khi bit TOIE2 đợc thiết lập và bit I trong thanh ghi trạng thái (SREG)
đ-ợc thiết lập, ngắt tràn T/C2 đđ-ợc cho phép Ngắt tơng ứng tại địa chỉ $004 đđ-ợcthực hiện nếu xuất hiện một tín hiệu tràn trong T/C2 (tức là, khi bit TOV2 đ ợcthiết lập trong thanh ghi cờ ngắt T/C [TIFR])
Bit 5 - TICIE1 : Bit cho phép ngắt bắt sự kiện vào của T/C1 (Timer/Counter1
Input Capture Interrup Enable)
Khi bit TICIE1 đợc thiết lập và bit I trong thanh ghi trạng thái (SREG)
đ-ợc thiết lập, ngắt bắt sự kiện vào của T/C1 đđ-ợc cho phép Ngắt tơng ứng tại đạichỉ $005 đợc thực hiện nếu xuất hiện một sự kiện gây ra sự bắt tín hiệu trên
Trang 26chân 20, PD6 (ICP) (tức là, khi bit ICF1 đợc thiết lập trong thanh ghi cờ ngắt
T/C [TIFR])
Bit 4 - OCIE1A : Bit cho phép ngắt so sánh bằng A của T/C1 (Timer/Counter1
Output CompareA Match Interrupt Enable)
Khi bit OCIE1A đợc thiết lập và bit I trong thanh ghi trạng thái đợc thiếtlập, ngắt so sánh bằng A của T/C1 đợc cho phép Ngắt tơng ứng tại đại chỉ
$006 đợc thực hiện nếu xuất hiện một tín hiệu so sánh bằng A trong T/C1 (tức
là, khi bit OCF1A đợc thiết lập trong thanh ghi cờ ngắt T/C [TIFR])
Bit 3 - OCIE1A : Bit cho phép ngắt so sánh bằng B của T/C1 (Timer/Counter1
Output CompareB Match Interrupt Enable)
Khi bit OCIE1B đợc thiết lập và bit I trong thanh ghi trạng thái đợc thiếtlập, ngắt so sánh bằng B của T/C1 đợc cho phép Ngắt tơng ứng tại địa chỉ
$007 đợc thực hiện nếu xuất hiện một tín hiệu so sánh bằnh B trong T/C1 (tức
là, khi bit OCF1B đợc thiết lập trong thanh ghi cờ ngắt T/C [TIFR])
Bit 2 - TOIE1 : Bit cho phép ngắt tràn của T/C1 (Timer/Counter1 Overflow
Interrupt Enable)
Khi bit TOIE1 đợc thiết lập và bit I trong thanh ghi trạng thái (SREG)
đ-ợc thiết lập, ngắt tràn T/C1 đđ-ợc cho phép Ngắt tơng ứng tại đại chỉ $008 đđ-ợcthực hiện nếu xuất hiện một tín hiệu tràn trong T/C1 (tức là, khi bit TOV1 đ ợcthiết lập trong thanh ghi cờ ngắt T/C [TIFR])
Bit 1: Không sử dụng
Bit 0 - TOIE0 : Bit cho phép ngắt tràn của T/C0 (Timer/Counter0 Overflow
Interrupt Enable)
Khi bit TOIE0 đợc thiết lập và bit I trong thanh ghi trạng thái (SREG)
đ-ợc thiết lập, ngắt tràn T/C0 đđ-ợc cho phép Ngắt tơng ứng tại đại chỉ $009 đđ-ợcthực hiện nếu xuất hiện một tín hiệu tràn trong T/C0 (tức là, khi bit TOV0 đ ợcthiết lập trong thanh ghi cờ ngắt T/C [TIFR])
Thanh ghi cờ ngắt của các bộ Timer/Counter : TIFR (Timer/Counter Interrupt
Flag)
Bit 7 - OFC2 : Bit cờ so sánh đầu ra của T/C2 (Output compare Flag2)
Bit OCF2 đợc thiết lập khi xuất hiện tín hiệu so sánh bằng giữa bộ T/C2
và dữ liệu trong OCR2 (Thanh ghi so sánh đầu ra của T/C 2) OCF2 đợc xoábằng phần cứng khi thực hiện chơng trình điều khiển vector ngắt tơng ứng BitOCF2 có thể đợc xoá bằng cách ghi giá trị logic 1 vào cờ này Khi bit I trongthanh ghi trạng thái SREG và bit OCIE (T/C2 compare Match Interupt Enable)
và bit OCF2 đợc thiết lập, ngắt thích ứng so sánh của T/C2 đợc thực hiện
Bit 6 - TOV2 : Bit cờ tràn của T/C2 (Timer/Counter2 Overflow Flag)
Bit TOV2 đợc thiết lập khi xuất hiện một tín hiệu tràn trong T/C2 BitTOV2 đợc xoá bởi phần cứng khi thực hiện chơng trình điều khiển vector ngắttơng ứng Một cách khác, bit TOV2 có thể đợc xoá bằng cách ghi giá trị 1 vàobit cờ này Khi bit I trong thanh ghi trạng thái SREG và bit TOIE2 (T/C2Overflow Interupt Enable) và bit TOV2 đợc thiết lập, ngắt tràn của T/C2 đợcthực hiện Trong chế độ PWM, bit này đợc thiết lập khi bộ T/C1 bắt đầu đếm từgiá trị $0000
Bit 5 - ICF1 : Cờ bắt tín hiệu vào T/C1 (Input Capture Flag1)
Bit ICF1 đợc thiết lập để dựng cờ cho phép lu giữ một sự kiện đầu vào,
và cho biết giá trị của T/C1 đã đợc chuyển đến thanh ghi bắt tín hiệu vào(ICR1) Bit ICF1 đợc xoá bởi phần cứng khi thực hiện chơng trình điều khiểnvector ngắt tơng ứng Một cách khác, bit ICF1 có thể đợc xoá bằng cách ghi
Trang 27Bit OCF1A đợc thiết lập khi xuất hiện tín hiệu so sánh bằng giữa T/C1 vàdữ liệu trong OCR1A (Output Compare Register 1A) Bit OCF1A đợc xoá bởiphần cứng khi thực hiện chơng trình điều khiển vector ngắt tơng ứng Cũng cóthể xoá bit OCF1A bằng cách ghi giá trị 1 vào vị trí cờ này Khi bit I trongthanh ghi trạng thái SREG, bit OCIE1A (Timer/Counter1 Compare MatchInterruptA Enable) và bit OCF1A đợc thiết lập, ngắt so sánh bằng A của T/C1
đợc thực hiện
Bit 3 - OCF1B : Bit cờ so sánh B đầu ra của T/C1 (Output Compare Flag 1B)
Bit OCF1B đợc thiết lập khi xuất hiện tín hiệu so sánh bằng giữa T/C1 vàdữ liệu trong OCR1B (Output Compare Register 1B) Bit OCF1B đợc xoá bởiphần cứng khi thực hiện chơng trình điều khiển vector ngắt tơng ứng Cũng cóthể xoá bit OCF1B bằng cách ghi giá trị 1 vào vị trí cờ này Khi bit I trongthanh ghi trạng thái SREG, bit OCIE1B (Timer/Counter1 Compare MatchInterruptB Enable) và bit OCF1B đợc thiết lập, ngắt thích ứng so sánh B củaT/C1 đợc thực hiện
Bit 2 - TOV1 : Bit cờ tràn của T/C1 (Timer/Counter1 Overflow Flag)
Bit TOV1 đợc thiết lập khi xuất hiện một tín hiệu tràn trong T/C1 BitTOV1 đợc xoá bởi phần cứng khi thực hiện chơng trình điều khiển vector ngắttơng ứng Một cách khác, bit TOV1 có thể đợc xoá bằng cách ghi giá trị 1 vàobit cờ này Khi bit I trong thanh ghi trạng thái SREG, bit TOIE1(Timer/Counter1 Overflow Interrupt Enable) và bit TOV1 đợc thiết lập, ngắttràn của T/C1 đợc thực hiện Trong chế độ PWM, bit này đợc thiết lập khi bộT/C1 bắt đầu đếm từ giá trị $0000
Bit 1 : Không sử dụng
Bit 0 - TOV0 : Bit cờ tràn T/C0 (Timer/Counter0 Overflow Flag)
Bit TOV0 đợc thiết lập khi xuất hiện một tín hiệu tràn trong T/C0 BitTOV0 đợc xoá bởi phần cứng khi thực hiện chơng trình điều khiển vector ngắttơng ứng Một cách khác, bit TOV0 có thể đợc xoá bằng cách ghi giá trị 1 vàobit cờ này Khi bit I trong thanh ghi trạng thái SREG, bit TOIE0(Timer/Counter0 Overflow Interrupt Enable) và bit TOV0 đợc thiết lập, ngắttràn của T/C0 đợc thực hiện Trong chế độ PWM, bit này đợc thiết lập khi bộT/C1 bắt đầu đếm từ giá trị $0000
Các ngắt ngoài của C AT90S8535
Các ngắt ngoài của C AT90S8535 đợc gây ra bởi sự thay đổi tín hiệutrên các chân INT1 và INT0 Có thể thấy rằng, nếu đợc cho phép các ngắtngoài sẽ xảy ra cho dù các chân INT1/INT0 đợc thiết lập nh là các đầu ra Đặc
điểm này cung cấp một cách tạo ra ngắt bằng phần mền Các ngắt ngoài có thể
đợc tạo ra khi xuất hiện sờn xuống hoặc sờn lên hay mức thấp của tín hiệu.Khi ngắt ngoài đợc cho phép và đợc thiết lập điều kiện kích hoạt theo mức,ngắt sẽ xảy ra trong khoảng thời gian chân đợc giữ ở mức thấp Các ngắt ngoài
đợc thiết lập nh mô tả trong thanh ghi điều khiển MCU (MCUCR)
Thanh ghi điều khiển MCU : MCUCR (MCU Control Register)
Thanh ghi MCUCR chứa các bit điều khiển dành cho các chức năngchung của MCU
Bit 7 : Không sử dụng.
Bit 6 - SE : Bit cho phép nghỉ (Sleep Enable)
Bit SE phải đợc thiết lập để đa MCU vào chế độ nghỉ khi lệnh SLEEP
đ-ợc thực hiện Để tránh đa MCU vào chế độ nghỉ ngoài ý muốn, chỉ nên thiếtlập bit SE trớc khi thực hiện lệnh SLEEP
Bit 4,5 - SM1/SM0 : Các bit chọn chế độ nghỉ (Sleep Mode Select Bits 0 and 1)
Các bit này cho phép chọn ngời lập trình chọn một trong 3 chế độ nghỉ
có sẵn của C AT90S8535 nh trong bảng 2.6
Trang 28Bảng 2.6 : Lựa chọn các chế độ nghỉ của CAT90S8535
Bit 3,2 - ISC11,ISC10 : Các bit điều khiển nhận biết ngắt mức 1 (Interrupt
Sense Control 1 Bits 1 and 0)
Ngắt ngoài mức 1 đợc kích hoạt bởi chân yêu cầu ngắt ngoài INT1 nếubit I trong thanh ghi trạng thái SREG và mặt nạ ngắt tơng ứng trong thanh ghimặt nạ ngắt GIMSK đợc thiết lập Các sờn và mức kích hoạt ngắt trên chân yêucầu ngắt ngoài INT1 đợc định nghĩa trong bảng 2.7
Bảng 2.7 : Điều khiển nhận biết ngắt ngoài mức 1
0 0 Mức thấp trên chân INT1 phát sinh một yêu cầu ngắt
0 1 Dự trữ (Reserved)
1 0 Yêu cầu phát sinh ngắt trên chân INT1 theo sờn xuống
1 1 Yêu cầu ngắt phát sinh trên chân INT1 theo sờn lên
Giá trị trên chân INT đợc lấy mẫu trớc khi kiểm tra các sờn Nếu yêu cầungắt tác động theo sờn đợc lựa chọn, thì những xung cuối cùng kéo dài hơnmột chu kỳ đồng hồ CPU sẽ phát sinh một ngắt Xung ngắn sẽ không đảm bảophát sinh ngắt Nếu yêu cầu ngắt tác dộng theo mức thấp đợc lựa chọn, thìmức thấp phải đợc giữ cho đến khi hoàn thành lệnh đang thực hiện mới gây rayêu cầu ngắt Nếu đợc cho phép, một ngắt tác động theo mức sẽ phát sinh mộtyêu cầu ngắt trong khoảng thời gian chân INT1 đợc giữ ở mức thấp
Bit 1,0 - ISCO1,ISCO0 : Các bit điều khiển nhận biết ngắt mức 0
(Interrupt Sense Control 1 Bits 1 and 0)
Ngắt ngoài mức 0 đợc kích hoạt bởi chân yêu cầu ngắt ngoài INT0 nếubit I trong thanh ghi trạng thái SREG và mặt nạ ngắt tơng ứng trong thanh ghimặt nạ ngắt GIMSK đợc thiết lập Các sờn và mức kích hoạt ngắt trên chân yêucầu ngắt ngoài INT0 đợc định nghĩa trong bảng 2.8
Bảng 2.8 : Điều khiển nhận biết ngắt ngoài mức 0
ISC0
0 0 Mức thấp của chân INT0 phát sinh một yêu cầu ngắt
0 1 Dự trữ (Reserved)
1 0 Yêu cầu phát sinh ngắt của chân INT0 theo sờn xuống
1 1 Yêu cầu ngắt của chân INT0 phát sinh ngắt theo sờn lên
Giá trị trên chân INT đợc lấy mẫu trớc khi kiểm tra các sờn Nếu yêu cầungắt tác động theo sờn đợc lựa chọn, thì những xung cuối cùng kéo dài hơnmột chu kỳ đồng hồ CPU sẽ phát sinh một ngắt Xung ngắn sẽ không đảm bảophát sinh ngắt Nếu yêu cầu ngắt tác động theo mức thấp đợc lựa chọn, thìmức thấp phải đợc giữ cho đến khi hoàn thành lệnh đang thực hiện mới gây rayêu cầu ngắt Nếu đợc cho phép, một ngắt tác động theo mức sẽ phát sinh mộtyêu cầu ngắt trong khoảng thời gian chân INT0 đợc giữ ở mức thấp
Thời gian hồi đáp ngắt (Interrup response time)
Thời gian hồi đáp thực hiện ngắt của tất cả các ngắt đợc cho phép của C
Trang 29nhảy tới chơng trình con phục vụ ngắt và lệnh nhảy này mất hai chu kỳ đồng
hồ Nếu một ngắt xảy ra trong khi đang thực hiện một lệnh nhiều chu kỳ đồng
hồ, lệnh này sẽ phảo đợc kết thúc trớc khi ngắt đó đợc phục vụ
Quá trình trở về từ chơng trình con phục vụ ngắt mất 4 chu kỳ đồng hồ.Trong 4 chu kỳ đồng hồ này, bộ đếm chơng trình đợc lấy ra khỏi ngăn xếp,con trỏ ngăn xếp tăng 2 byte và bit cờ I trong thanh ghi SREG đợc thiết lập.Khi C AT90S8535 kết thúc một ngắt, nó luôn trở về chơng trình chính vàthực hiện thêm một lệnh trớc khi bất kỳ ngắt tiếp theo nào đợc phục vụ
2.1.1.9 Các chế độ nghỉ của C AT90S8535
Để đa vi mạch điều khiển AT90S8535 vào bất kỳ chế độ nghỉ nào trong 3chế độ nghỉ sẵn có, bit SE trong thanh ghi MCUCR phải đợc thiết lập và mộtlệnh SLEEP phải đợc thực hiện Các bit SM0 và SM1 trong thanh ghi MCUCR
đợc sử dụng để lựa chọn chế độ mong muốn (Idle, Power-down, Power Save),chế độ nghỉ lựa chọn sẽ đợc kích hoạt bởi lệnh SLEEP
Nếu một ngắt đợc phép xảy ra khi MCU đang trong chế độ nghỉ, MCU
đ-ợc đánh thức để thực hiện chơng trình con phục vụ ngắt và tiếp tục thực hiệnlệnh tiếp theo sau lệnh SLEEP Nội dung của tập thanh ghi, SRAM và bộ nhớI/O không bị thay đổi Nếu một điều kiện Reset xảy ra khi MCU đang trongchế độ nghỉ, MCU đợc đánh thức và thực hiện vector reset
Chế độ Idle (Idle Mode)
Khi các bit SM1/SM0 đợc đặt là 00, lệnh SLEEP sẽ đa MCU vào chế độIdle, dừng hoạt động của CPU và cho phép SPI, UARTs, Analog Comparator ,ADC, Timer/Counters, Watchdog và hệ thống ngắt tiếp tục hoạt động Điềunày cho phép MCU đợc đánh thức bởi các yêu cầu ngắt ngoài cũng nh cácngắt trong hay ngắt tràn thời gian (Timer Overflow) và ngắt thông báo kếtthúc nhận dữ liệu từ UART Nếu ngắt từ bộ so sánh tín hiệu tơng tự (AnalogComparator) không đợc yêu cầu thì bộ so sánh tín hiệu tơng tự có thể không
đợc hoạt động bằng việc thiết lập bit ADC trong thanh ghi ACSR (AnalogComparator Control and Status Register) Điều này sẽ làm giảm sự tiêu thụnăng lợng trong chế độ Idle Khi MCU kết thúc chế độ Idle, CPU bắt đầu thựchiện chơng trình tức thì bằng cách thực thi lệnh tiếp theo ngay sau lệnhSLEEP
Chế độ Power-down (Power-down Mode)
Khi các bit SM1/SM0 đợc đặt là 01, lệnh SLEEP sẽ đa MCU vào chế độPower-down Trong chế độ này, bộ tạo dao động ngoài sẽ dừng hoạt độngtrong khi các ngắt ngoài và bộ Watchdog (nếu đợc cho phép) vẫn tiếp tục hoạt
động Chỉ một tín hiệu reset ngoài hoặc một tín hệu Reset của Watchdog (nếu
đợc cho phép) hay một ngắt ngoài tác động theo mức có thể đánh thức MCU
Chú ý : khi một ngắt tác động theo mức đợc dùng để đánh tức MCU từ
chế độ Power-down thì mức thấp phải đợc giữ trong khoảng thời gian lâu hơnkhoảng thời gian trễ reset (tTOUT)
Khi đánh thức MCU khỏi chế độ Power-down, một trễ điều kiện đánhthức xảy ra đến khi sự đánh thức có hiệu lực Điều này cho phép đồng hồ khởi
động lại và ổn định sau khi bị dừng hoạt động Khoảng thời gian đánh thứcbằng khoảng thời gian Reset
Nếu một điều kiện đánh thức không xuất hiện trớc khi MCU thức dậy vàbắt đầu thực hiện, cụ thể là mức thấp không đợc giữ trong thời gian đủ lâu,ngắt đánh thức MCU sẽ không đợc thực hiện
Chế độ Power-Save (Power-Save Mode)
Trang 30Khi các bit SM1/SM0 đợcđặt là 11, lệnh SLEEP sẽ đa MCU vào chế độPower-Save Chế độ này cũng giống chế độ Power-down, trừ một điều T/C2 đ-
ợc khoá không đồng bộ, bit AS2 trong thanh ghi ASSR đợc thiết lập, T/C2 sẽhoạt động trong khi MCU đang trong chế độ nghỉ Ngoài cách đánh thứcMCU nh trong chế độ Power-down, MCU cũng có thể đợc đánh thức bởi các
sự kiện tràn bộ Timer (Timer Overflow) hoặc so sánh đầu ra (OutputCompare) từ T/C2 nếu các bit cho phép ngắt T/C2 tơng ứng đợc thiết lập trongthanh ghi TIMSK và bit I trong thanh ghi trạng thái SREG đợc thiết lập
Khi kết thúc chế độ Power-Save bằng một ngắt ngoài, hai chu kỳ lệnh
đ-ợc thực hiện trớc khi các cờ ngắt đđ-ợc cập nhật Khi đánh thức MCU bằng bộthời gian không đồng bộ (asynchronous timer), ba chu kỳ lệnh đợc thực hiệntrớc khi các cờ ngắt đợc cập nhật Trong các chu kỳ này, bộ vi xử lý thực hiệncác lệnh, nhng điều kiện ngắt không đọc đợc và chơng trình phục vụ ngắt cha
đợc bắt đầu
Khi dánh thức MCU từ chế độ Power-Save bởi một ngắt thời gian không
đồng bộ, MCU sẽ thức dậy thậm trí nếu các ngắt chung không đợc cho phép
Để đảm bảo chơng trình con phục vụ ngắt đợc thực hiện khi đánh thức MCUthì bit I trong thanh ghi trạng thái cũng phải đợc thiết lập
Nếu bộ thời gian không đồng bộ không đợc đếm thời gian một cáchkhông đồng bộ thì nên sử dụng chế độ Power-down thay chế độ Power-Savebởi vì nội dung của các thanh ghi trong bộ thời gian không đồng bộ đợc coi làkhông xác định sau khi MCU đợc đánh thức ở chế độ Power-Save, thậm trí bitAS2 có thể bị xoá về 0
2.1.1.10 Các mạch điều khiển trong C AT90S8535.
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ạngthái không đồng bộ từ một bộ tạo dao động ngoài Bộ tạo dao động này đợctối u cho việc sử dụng với một đồng hồ tinh thể với chu kỳ 32.768 kHz chophé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/C2cũ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
Trang 31Bộ 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 đợckế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 AS2trong 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ộtRTC 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 haichâ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 chochâ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ờigian của CK hoặc từ một nguồn đồng hồ ngoài Ngoài ra, nó có thể đợc dừnggiống nh sự mô tả trong thanh ghi điều khiển T/C0 (TCCR0) Cờ trạng tháitrà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 bitcho phép/không cho phép ngắt cho mạch T/C0 thực hiện trong thanh ghi mặtnạ ngắt T/C (TISMK)
Hình 2.13 : Sơ đồ khối mạch Timer/Counter0
Trang 32Khi 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ấymẫ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ếpgiữ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
CS0 2
CS0 1
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ácchế độ chia thời gian CK đợc chia trực tiếp từ đồng hồ tạo dao động CK Nếucác chế độ đồng hồ ngoài đợc sử dụng, thì sự thiết lập tơng ứng phải đợc thựchiệ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
Trang 33Bộ T/C1 16 bit có thể lựa chọn nguồn đồng hồ từ CK, mạch chia thờigian 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ínhiệ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ồmcá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
T/C1 cũng có thể đợc sử dụng nh giống nh một mạch điều biến độ rộngxung (PWM) 8, 9 hoặc 10 bit Trong chế độ này bộ đếm và các thanh ghi sosánh đầu ra OCR1A/OCR1B cung cấp nh một mạch PWM đối ngẫu độc lậpkhô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ộidung của T/C1 tới thanh ghi lu giữ tín hiệu vào của T/C1 (ICR1), đợc gây rabở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 raquá 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ệnhiệ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ênchâ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 (OutputCompareA 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
Trang 34 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ênchâ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 (OutputCompareA 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
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ảng2.14) Khi thay đổi các bit COM1X1/COM1X0, ngắt so sánh đầu ra của T/C1phải bị vô hiệu hoá bằng cách xoá các bit cho phép ngắt của chúng trongthanh ghi mặt nạ ngắt T/C (TIMSK) Nếu không, một ngắt có thể xảy ra khicá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
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ủaT/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 bitICNC1 đợ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ẫuphả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 bitICES1 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
Trang 35Khi bit ICES1 đợc thiết lập, nội dung của T/C1 đợc chuyền tới thanh ghi bắttí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ềukhiể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ínhiệ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 khimột tín hiệu chia thời gian lớn hơn 1 đợc sử dụng cho bộ định thời gian Khimột tín hiệu chia thời gian bằng 1 đợc sử dụng và nội dung của thanh ghi sosánh A của T/C1 đợc thiết lập là C, thì bộ định thời gian sẽ đếm nh sau nếuCTC1 đợc thiết lâp :
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
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ácchế độ 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 ControlRegister) hiện thời
Các thanh ghi dữ liệu của T/C1 : TCNT1H và TCNT1L
Trang 36Nội dung của thanh ghi 16 bit chứa giá trị chia thời gian của bộ T/C1 16bit Để đảm bảo rằng cả byte thấp và byte cao đợc đọc và ghi đồng thời khiCPU 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ìnhchính và các thủ tục ngắt thực hiện sự truy nhập đến các thanh ghi sử dụngthanh ghi TEMP, thì các ngắt phải bị cấm trong thời gian truy nhập từ chơngtrì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ụcngắ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 trongthanh 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 độngghi 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 bytethấ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 caoTCNT1H, CPU nhận dữ liệu trong thanh ghi TEMP Do đó, thanh ghi bytethấp TCNT1L phải đợc truy nhập trớc tiên trong một thao tác đọc thanh ghi 16bit 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 A của T/C1 : OCR1AH và OCR1AL
Thanh ghi so sánh đầu ra B của T/C1 : OCR1BH và OCR1BL
Trang 37đế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ánhbằ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 thanhghi byte cao OCR1AH hoặc OCR1BH, dữ liệu tạm thời đợc lu trên thanh ghitạ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 thaotá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 ghiTCNT1 và ICR1 Nếu chơng trình chính và các thủ tục ngắt thực hiện truy cậptới các thanh ghi có sử dụng thanh ghi TEMP, thì các ngắt phải bị cấm trongthời gian truy nhập từ chơng trình chính
Thanh ghi bắt tín hiệu vào của T/C1 : ICR1H và ICR1L
Thanh ghi bắt tín hiệu vào là một thanh ghi chỉ đọc 16 bit Khi sờn lênhoặc sờn xuống (tuỳ theo sự thiết lập bit bắt tín hiệu vào ICES1) của tín hiệutại chân bắt tín hiệu vào (ICP) đợc phát hiện, giá trị hiện tại của mạch T/C1 đ-
ợc truyền tới thanh ghi bắt tín hiệu vào (ICR1) Đồng thời, cờ bắt tín hiệu vào(ICF1) đợc thiết lập
Do thanh ghi bắt tín hiệu vào ICR1 là một thanh ghi 16 bit, một thanhghi tạm TEMP đợc sử dụng khi ICR1 đợc đọc để đảm bảo cả hai byte cùng đ-
ợc đọc Khi CPU đọc thanh ghi byte thấp ICR1L, dữ liệu đợc gửi tới CPU vàdữ liệu của thanh ghi byte cao ICR1H đợc đặt trong thanh ghi tạm TEMP KhiCPU đọc dữ liệu trong thanh ghi byte cao ICR1H, CPU sẽ nhận dữ liệu trongthanh ghi tạm TEMP Do đó, thanh ghi byte thấp ICR1L phải đợc truy nhậptrớc tiên trong một thao tác đọc thanh ghi 16 bit ICR1
Mạch T/C1 trong chế độ điều biến độ rộng xung : PWM
Khi chế độ PWM đợc chọn, mạch T/C1, thanh ghi so sánh đầu ra A củaT/C1 (OCR1A) và thanh ghi so sánh đầu ra B của T/C1 (OCR1B) có độ rộng
8, 9 hoặc 10 bit đối ngẫu, hoạt động tự do, không có xung nhiễu và đợc hiệuchỉnh phase PWM với các đầu ra trên các chân PD5(OC1A) và PD4(OC1B).Mạch T/C1 hoạt động giống nh một bộ đếm tăng/giảm, sự đếm tăng từ $0000
đến TOP (Xem bảng 2.13), sau đó quay và đếm ngợc trở lại tới 0 trớc chu kỳtiếp theo đợc lặp lại Khi giá trị đếm bằng với nội dung của 10 bit thấp củathanh ghi OCR1A hoặc OCR1B, các chân PD5 (OC1A) hoặc PD4(OC1B) đợcthiết lập hoặc xoá tuỳ theo sự thiết lập của các bit COM1A1/ COM1A0 hoặcCOM1B1/ COM1B0 trong thanh ghi điều khiển của T/C1 (TCCR1A)
Bảng 2.13 : Các giá trị TOP của bộ định thời gian và tần số PWM
Độ phân giải Timer TOP Frequenc
Trang 38PWM value y
8-bit $00FF (255) f TCK1 /510 9-bit $01FF (511) f TCK1 /1022 10-bit $03FF(1023) f TCK1 /2046
Chú ý : Nếu thanh ghi so sánh đầu ra chứa giá trị TOP và bộ chia thời
gian không đợc sử dụng (CS12 CS10 = 001), thì đầu ra PWM sẽ không đa rabất kỳ một xung nào, bởi vì giá trị của sự đếm tăng và đếm giảm đợc đạt đến
đồng thời Khi bộ chia thời gian đợc sử dụng (CS12 CS10 ≠ 001 hoặc 000),
đầu ra PWM đợc kích hoạt khi bộ đếm đạt giá trị TOP, nhng tín hiệu so sánhbằng đếm giảm không kiểm soát đợc giá trị đạt đến trớc lần tiếp theo bộ đêm
đạt giá trị TOP, tạo ra một chu kỳ xung PWM
Tín hiệu thích ứng so sánh đợc xoá, thực hiện đếm tăng
Đặt thích ứng so sánh, thực hiện đếm giảm (không đảo PWM)
1 1 Tín hiệu thích ứng so sánh đợc xoá, thực hiện đếm giảm
Đặt thích ứng so sánh, thực hiện đếm tăng (đảo PWM)
X = A hoặc B
Chú ý : Trong chế độ PWM, 10 bit thấp của các thanh ghi OCR1A hoặc
OCR1B, khi đợc ghi chúng đợc chuyển đến một vị trí tạm và đợc chốt khi bộT/C1 đạt đến giá trị TOP Điều này ngăn cản sự cố của hiện tợng kéo dài xungPWM (glitches) trong một thao tác ghi không đồng bộ vào thanh ghi OCR1Ahoặc OCR1B
Hình 2.16 : Hiệu ứng chốt không đồng bộ OCR1
Trong khoảng thời gian giữn thao tác ghi và thao tác chốt, một thao tác
đọc từ thanh ghi OCR1A hoặc OCR1B sẽ đọc nội dung thanh ghi tạm Điềunày có nghĩa là hầu hết các giá trị ghi gần thời điểm đó luôn đợc đọc ra từthanh ghi OCR1A/B
Khi thanh ghi OCR1A/ OCR1B chứa đựng giá trị $0000 hoặc TOP, đầu
ra OCR1A/OCR1B đợc cập nhật mức thấp hoặc mức cao trên tín hiệu so sánhbằng tiếp theo tuỳ thuộc sự thiết lập của các bit COM1A1/ COM1A0 hoặc
Trang 39Trong chế độ PWM, bit cờ tràn của T/C1 (TOV1) đợc thiết lập khi bộ
đếm tăng lên từ giá trị $0000 Ngắt tràn của T/C1 hoạt động giống nh trongchế độ T/C thờng, cụ thể là, nó đợc thực hiện khi cờ TOV1 đợc thiết lập, với
điều kiện là ngắt tràn T/C1 và các ngắt chung đợc cho phép Điều này cũng
đ-ợc áp dụng cho cờ so sánh đầu ra T/C1 và các ngắt khác
Bộ Timer/Counter2 8 bit (T/C2)
Bộ T/C2 8 bit có thể lựa chọn nguồn đồng hồ từ PCK2 hoặc bộ chia thờigian PCK2 Nó cũng có thể bị dừng nh trong phần mô tả thanh ghi điều khiểnT/C2 (TCCR2)
Các cờ trạng thái khác nhau (Overflow and Compare Match) đợc xác
định trong thanh ghi cờ ngắt T/C (TIFR) Các tín hiệu điều khiển đợc xác địnhtrong thanh ghi điều khiển T/C2 (TCCR2) Sự thiết lập cho phép/cấm ngắt đ-
ợc xác định trong thanh ghi mặt nạ ngắt của T/C (TIMSK)
Mạch T/C hỗ trợ chức năng so sánh đầu ra sử dụng thanh ghi so sánh đầu
ra (OCR2) nh một nguồn dữ liệu để so sánh với nội dung của bộ T/C Chứcnăng so sánh đầu ra bao gồm tuỳ chọn xoá của bộ đếm dựa trên tín hiệu sosánh bằng và hành động trên chân so sánh đầu ra, chân PD7(OC2) với tín hiệu sosánh bằng Việc ghi tới PORTD7 không thiết lập giá trị OC2 tới giá trị
định trớc
Mạch T/C2 cung có thể đợc sử dụng nh một bộ điều chế độ rộng xung 8bit Trong chế độ này, mạch T/C2 và thanh ghi so sánh đầu ra cung cấp một
bộ PWM không nhiễu độc lập với các xung
Hình 2.17 : Sơ đồ khối của mạch Timer/Counter2
Thanh ghi điều khiển T/C2 : TCCR2 (Timer/Counter2 Control Register)
Trang 40 Bit 5,4 - COM21, COM20 : Chế độ so sánh đầu ra, Bit 1 và 0
Các bit điều khiển COM21 và COM20 xác định bất kỳ hành động trênchân đầu ra nào sau một tín hiệu so sánh bằng trong mạch T/C2 Các hành
động trên chân đầu ra có hiệu ứng trên chân PD7 (OC2) Đây là một chứcnăng thay thế cho một cổng vào/ra và bit điều khiển hớng tơng ứng phải đợcthiết lập để điều khiển một chân đầu ra
1 0 Cấm đờng ra OC2
1 1 Cho phép đờng ra OC2
Chú ý : Trong chế độ PWM, các bit này có mộtc chức năng khác, tham
khảo bảng 2.18 để biết chi tiết
Bit 3 - CTC2 : Xoá chức năng so sánh bằng của T/C (Clear
Timer/Counter on Compare Match)
Khi bit điều khiển CTC2 đợc thiết lập, mạch T/C2 đợc Reset từ gia trị
$00 trong chu kỳ đồng hồ sau một tín hiệu so sánh bằng Nếu bit điều khiểnCTC2 bị xoá, mạch T/C2 tiếp tục đếm và không bị ảnh hởng bởi một tín hiệuthích ứng so sánh Khi một tín hiệu thích ứng so sánh đợc nhận ra trong trongchu kỳ đồng hồ CPU theo sau tín hiệu bằng, chức năng này sẽ có những hiệuứng khác nhau khi sử dung bộ chia thời gian lớn hơn 1 đợc sử dụng cho bộ
định thời gian Khi giá trị bộ chia thời gian bằng 1 đợc sử dụng và thanh ghi
so sánh của T/C2 đợc thiết lập tới C, thì bộ định thời gian của T/C2 sẽ đếm nhsau nếu bit CTC2 đợ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 gian sẽ đếm nh sau :
| 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,
Trong chế độ PWM, bit này không có hiệu lực
Bit 2,1,0 - CS22, CS21, CS20 : Các bit lựa chọn đồng hồ cho T/C2
Các bit lựa chọn đồng hồ 2, 1 và 0 xác định bộ thời gian của T/C2
Bảng 2.17 : Lựa chọn bộ chia thời gian cho T/C2