Đề tài nghiên cứu, tìm hiểu AT90S8535 và ứng dụng thiết kế mạch quang báo
Trang 1BO GIAO DUC VA DAO TAO TRUONG DH KY THUAT CONG NGHE TP HO CHi MINH
KHOA DIEN - ĐIỆN TỬ NGÀNH ĐIỆN TỬ VIỄN THÔNG
ĐỎ ÁN TÓT NGHIỆP
ĐỀ TÀI:
Ì NGHIÊN CỨU, TÌM HIỂU AT90S8535
VA UNG DUNG THIET KE MACH
Trang 2Tim hiểu chip VĐK AVR AT90S8535 và ứng dụng thiết kế mạch Quang Báo
MỤC LỤC
PHÀN A: TÌM HIỂU CHIP VĐK AVR AT90S8535
CHƯƠNG I: GIỚI THIỆU VÈẺ CHIP VĐK AVR 90S8535
3.3 Các bộ dao động tạo xung nhịp
IV TONG QUAN VẺ CẤU TRÚC
5.2 Thanh ghi dia chi EEPROM - EEARH, EEARL
5.3 Thang ghi dữ liệu EEPROM - EEDR
5.4 Thanh ghi điều khiển EEPROM - EECR
5.5 Tránh sai sót trong EEPROM
VI SPI (Serial Peripheral Interface) os
6.1 Giới thiệu
6.2 Chức năng chân SS sesssssscssesccscessecsenececcenseee
VIL CAC PORT NHAP/XUAT -
Trang 5
Trang 3
Tim hiéu chip VDK AVR AT90S8535 va teng dung thiét ké mach Quang Béo
CHUONG II: CAC HOAT DONG
§.2 Thanh ghi trang thai ACSR
VI BO CHUYEN BOI ADC
7.1 Bộ nhớ chương trình và dữ liệu — Loek bits . s-<-
7.2 EIse bifS eSĂŸẰSSSesisseieieeee
7.3 Các bytc nhận dang
7.4 Lập trình Flash và EEPROM .eseeeeenrsrseririeeeee
7.6 Các đặc điểm và lập trình song song
7.8 Các đặc điểm lập trình nối tiếp
CHUONG III: CAC DAC ĐIỂM VE DIEN
I TSO TUYET DOI
Il DAC DIEM DC
CHƯƠNG IV: TÓM TÁT TẬP LỆNH .- 99
CHUONG KET
1 Khả nang can thiệp
2 Xem xét các tính năng được tích hợp bên trong
3 Tốc độ xử lý
4 Các ứng dụng m‹
Trang 6
Trang 4
Tim hiéu chip VBK AVR AT90S8535 va teng dung thiét ké mach Quang Béo
PHAN B: THIET KE & THI CONG MACH QUANG BAO .105
CHƯƠNG MỞ ĐÀU -2S5-teeeereerttrtttrtiiirrrerriee 106
II NGUYÊN LÝ HỌAT ĐỘNG
3.1 Khối điều khiển
3.2 Khối hiển thị
3.3 Khối quét cột
3.4 Khối quét hàng
3.5 Khối giao tiếp máy tinh
IV MỘT SỐ LINH KIỆN SỬ DỤN G TRONG MẠCH
4.1 Ma trận led 8x8 eeeeeeseeeeeeeeseee
4.2 Max232 ase ° 4.3 74HCS573 “ 4 `
4.4 T4HCS95 ee ° 4.5 ULN2803
4.6 UDN2981
CHƯƠNG III: THIET KE PHAN MEM
L YEU CAU CHUONG TRINH
Il THIET Ké PHAN MEM
2.1 Cae giao diện kết nối và truyền dữ liệu bằng Visual Basic
2.2 Lưu đồ giải thuật 2.3 Chương trình
CHƯƠNG IV: CHƯƠNG TRÌNH NẠP CHIP AVR
1 YÊU CÂU CHƯƠNG TRÌNH
II LƯU ĐỎ GIẢI THUẬTT °
KẾT LUẬN
1 DANH GIA TONG QUAN VE DO AN
II HƯỚNG PHÁT TRIÊN ĐÈ TÀI
Trang 7
Trang 6PHAN A - Chuong I
CHƯƠNG I: GIỚI THIỆU VẺ CHIP VĐK AVR 90S8535
Bộ vi xử lý AVR 8bit với bộ nhớ Flash 8Kbytes lập trình được ngay trên hệ thống
AT90S8535-AT90LS8535
I CAC DAC TINH CUA AVR
, AVR sử dụng cấu trúc RISC - cấu trúc có khả năng xử lý cao và năng lượng tiêu thụ
thâp:
e _ 118 lệnh mạnh - hầu hết thực hiện trong một chu kỳ xung nhịp
© _ Tốc độ xử lý trên 8 triệu lệnh/1 giây ở tần số 8Mhz
Bộ nhớ dữ liệu và chương trình:
e - Bộ nhớ 8Kbytes lập trình được ngay trên hệ thống
- Có giao diện nối tiếp SPI lập trình được ngay trên hệ thống
- Có thể chịu được 1000 chu kì ghỉ/xóa
e EEPROM 512bytes
- Có thể chịu được 100.000 chu kì ghi/xóa
e SRAM ndi 512bytes
e _ Lập trình khoá để bảo mật phần mềm chương trình
Các đặc tính ngoại vi:
e _ Bộ chuyển đổi ADC 8 kênh,10bit
Bộ UART lập trình được
Bộ giao diện nối tiếp SPI chủ/tớ
2 Bộ Timer/Counter 8bit với chế độ chia tần tách biệt và chế độ so sánh
1 Bộ Timer/Counter 16bit với chế độ chia tần tách biệt và chế độ so sánh và chế độ bắt
mẫu và 3 kênh PWM (điều chế độ rộng xung) từ 8,9 đến 10bit
Bộ định thoi Watchdog lap trình được với bộ dao động trên chip
Bộ so sánh tương tự trên chip
Các đặc tính ngoại vi đặc biệt:
© _ Có mạch kích hoạt nguồn (Power on set)
Đồng hồ thời gian thật RTC với bộ dao động và bộ đếm số tách biệt
Có các nguồn ngắt ngoài và trong
Có 3 chế độ: Nghỉ, tiết kiệm năng lượng và giảm dòng tiêu thụ (Power down)
Công suất tiêu thụ ở 4Mhz, 3V, 20°C:
e Tích cực: 6.4mA
e_ Tiết kiệm năng lượng (Power down): <luA
Hệ thống vào/ra và cách gói:
e 32 đường vào/ra lập trình được
Dién 4p cung cap:
Trang 7
ani au Boxee,
eer rosea) (aay BOE (2x0) rot re Pat Bra dus) eps eee AINTs) PRS poe song) Poe oct (0014 Pos wy a eee LÍCP) PDš CỈ 3U 6 por ica)
Hình 2.1: Sơ đồ chân AT90S8535
2.2 Port A (PA7 = PAO)
Port A là một cổng vào/ra 2 hướng 8bit Chân Port Có các điện trở nối lên nguồn dương (được chọn cho mỗi bit) Ngõ ra Port A có thể cho dòng điện 20mA đi qua và có
thể điều khiển led hiển thị một cách chính xác Khi chân A0 + A7 được sử dụng như là ngõ vào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn đòng nếu các điện trở nối lên cực dương được kích hoạt
Port A cũng được sử dụng khi ! tín hiệu tương tự ở ngõ vào đến bộ chuyên đổi A/D
Các chân của Port A sẽ được aa ở trạng thái thứ 3 (tông trở cao) khi tín hiệu reset ở mức tích cực ngay cả khi tín hiệu xung nhịp không hoạt động
Port B là một công vào/ra 2 hướng 8bit có các điện trở nối lên nguồn dương Bộ đệm ngõ ra Port B có thể cho dòng điện 20mA đi qua Khi chân Port B được sử dụng như là
ngõ vào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện
trở nối lên cực dương được kích hoạt
Các chân của Port B sẽ được ashe trang thái thứ 3 (tông trở cao) khi tín hiệu reset ở
mức tích cực ngay cả khi tín hiệu xung nhịp không hoạt động
2.4 Port C (PC7 + PC0)
Port C là một công vào/ra 2 hướng 8bit có các điện trở nối lên nguồn dương Bộ đệm
ngõ ra Port C có thể cho dòng điện 20mA đi qua Khi chân Port C được sử dụng như là ngõ vào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện trở nối lên cực dương được kích hoạt Hai chân PC6 và PC7 của Port C ccòn ó thể được sử dụng như một bộ dao động cho bộ bộ định thời Timer/Counter2
- Các chân của Port C sẽ được di trạng thái thứ 3 (tổng trở cao) khi tín hiệu reset ở
mức tích cực ngay cả khi tín hiệu xung nhịp không hoạt động
Trang 10
Trang 8
PHAN A ~ Chuong I
2.5 Port D (PD7 + PDO)
Port D là một cổng vào/ra 2 hướng 8bit có các điện trở nối lên nguồn dương Bộ đệm
ngõ ra Port D có thể cho dòng điện 20mA đi qua Khi chân Port D được sử dụng như là ngõ vào và được đặt xuông mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện trở nôi lên cực dương được kích hoạt
Các chân của Port D sẽ được đặc ở trạng thái thứ 3 (tổng trở cao) cao khi tín hiệu reset
ở mức tích cực ngay cả khi tín hiệu xung nhịp không hoạt động
2.6 Vcc, GND, RESET, XTALI, XTAL2, AVcc, AREE, AGND
'Vcc: Nguồn cung cấp
GND: Dat
RESET: Ngõ vào Reset Bộ vi điều khiển sẽ được thiết lập lại khi chân reset tích cực
mức thấp Xung reset đài hơn 50ns ngay cả khi không có tín hiệu giữ nhịp Các xung ngăn hơn không đảm bảo tạo ra Ì reset
XTALI: Ngõ vào của bộ khuếch đại đảo và mạch tạo xung nhịp bên trong
XTAL2: Ngõ ra của bộ khuếch đại
AVcc: là chân nguồn cung cấp cho Port A và bộ chuyển đổi A/D Nếu bộ chuyển đổi bên trong không sử dụng thì chân này phải được kết nối với Vcc và ngược lại thì chân
này phải được nối với Vcc qua bộ lọc tần số thấp
AREF: là ngõ vào tín hiệu lấy mẫu tương tự cho bộ chuyển đổi A/D Phải cung cấp điện áp 2V tới A Vcc cho chân nay để bộ chuyên đổi hoạt động
AGND: chân GND tương tự Nếu trên board mạch có thiết kế một vùng mass riêng
cho tín hiệu tương tự thi nối chân AGND vào đây Còn không có thì nối AGND vào GND chung
II MÔ TẢ
AT90S8535 là bộ vi điều khiển CMOS 8bit tiêu thụ công suất thấp dựa trên c4u tric AVR
RISC (Reduced Instruction Set Computer: máy tính có tập lện rút gọn) Bằng cách thực hiện
những lệnh mạnh trong một chu kỳ xung nhịp, AT90S8535 đạt được tốc độ xử lý trên 1 triệu
lệnh/I giây ở tần số IMhz cho phép người thiết kế hệ thống tối ưu sự tiêu thụ điện năng mà
Trang 10PHAN A - Chuong I
3.2 Các đặc điểm
Phân cốt lõi là AVR kết hợp với các tập lệnh đa dạng với 32 thanh ghi đa năng
32 thanh ghi được kết nối trực tiếp với bộ số hoc ALU (Arithmetic Logic Unit), cho phép
truy cập 2 thanh ghi độc lập trong một lệnh đơn được thực thi trong một xung nhịp Cấu
trúc này mang lại nhiều khả năng lập trìng có hiệu quả cao đạt trên 10 lần nhanh hơn bộ vi
xử lý CISC (Complex Instruction Set Computer: máy tính có tập lệnh phức tạp) thông
thường
AT90S8535 cung cấp các thông số đặc trưng sau: bộ nhớ Flash 8Kbytes lập trình được
ngay trên hệ thống, EEPROM 5 12bytes, SRAM 512bytes, 32 đường vào/ra đa năng, 32
thanh ghi đa năng, RTC (Real-Time Clock: đồng hồ thời gian thực), 3 bộ timer/counter
hoạt động linh hoạt với các chế độc so sánh, các ngắt ngoài và ngắt trong, I bộ UART nối
tiếp lập trình được, 1 bộ chuyển đổi ADC 8 kênh 10 bit, bộ định thời Watchdog lập trình
được với bộ dao động bên trong, một cổng nối tiếp SPI và 3 chế độ tiết kiệm năng lượng
có thể lựa chọn nhờ phần mềm Chế độ nghỉ làm cho CPU ngừng hoạt động trong khi cho
phép SRAM, Bộ Timer/Counter, công SPI và hệ thống ngắt vẫn tiếp tục hoạt động Chế độ
làm giảm mức tiêu thụ năng lượng lưu nội dung thanh ghi nhưng lại để bộ dao động hoạt
động, cấm tắt cả các chức năng khác trên chip cho đến khi có tín hiệu ngắt kế tiếp hoặc tín
hiệu reset phần cứng Ở chế độ tiết kiệm năng lượng, bộ dao động định thời vẫn tiếp tục
hoạt động và cho phép người sử dung vẫn tiếp tục duy tri 1 b6 dinh thời cơ sở trong khi
các thiết bị còn lại đang trong chế độ nghỉ
Các thiết bị được chế tạo bởi công ty Atmel sử dụng công nghệ bộ nhớ không tự mắt
dữ liệu và có mật độ cao Bộ nhớ Flash ISP trên chip cho phép bộ nhớ chương trình có thể
lập trình được ngay trên hệ thống qua 1 bộ giao diện nói tiếp SPI hoặc bằng bộ nạp
chương trình vào bộ nhớ không tự mất dữ liệu thông thường Bằng cách kết hợp 1 CPU
8bit theo cấu tric RISC với bộ nhớ Flash lập trình được ngay trên hệ thống trong 1 chip
đơn
3.3 Các bộ đao động tạo xung nhịp
q) Dao động thạch anh
XTALI và XTAL2 được ni lần lượt với ngõ vào và ngõ ra của bộ khuếch đại đảo,
bộ khuếch đại này được định để dùng như một bộ dao động ngay trên chip, hoặc 1 bộ
cộng hưởng thạch anh hay 1 bộ cộng hưởng gốc được sử dụng
MAX 1 HC BUFFER wens Ian
—> Chú ý: Khi sử dụng bộ dao động MCU tạo xung nhịp cho I linh kiện bên ngoài, bộ
đệm HC nên được kết nối như hình 3.2
Trang 13
Trang 11
PHAN A ~ Chương I
b) Bộ xung nhịp bên ngoài -
Để điều khiển linh kiện từ nguồn xung nhịp bên ngoài, XTAL2 nên được thả nổi
(không kết nối) và kết nối XTAL1 với nguồn xung nhịp bên ngoài này như hình 3.3
ne XTALZ
ÊKIEBMAI, OSCRLATOR XIAL
Đối với chân bộ dao động định thời, TOSC1 và TOSC2, thạch anh được kết nối 1
cách chính xác giữa 2 chân Không nối tụ điện ngoài Bộ dao động được tối ưu để sử
dụng cùng với đồng hồ thạch anh 32.768Hz Chân TOSCI không được cung cấp
nguôn xung nhịp bên ngoài
IV TONG QUAN VE CAU TRUC
4.1 Giới thiệu
Khái niệm các thanh ghi truy nhập nhanh bao gồm 32 thanh ghi đa năng 8bit được truy nhập trong 1 chu kỳ xung nhịp, tức là một phép toán logic số học sẽ được thực hiện chỉ trong một chu kỳ xung nhịp đơn 2 toán hạng được truy xuất từ tập các thanh ghi đa năng, phép toán được thực hiện và được lưu giữ lại vào tập các thanh ghi đa năng trong ! chu kỳ xung nhịp
6 trong số 32 thanh ghi đa năng có thể được sử dụng làm 3 con trỏ địa chỉ gián tiếp 16bit đùng cho địa chỉ không gian dữ liệu và cho phép tính địa chỉ hiệu dụng 1 trong số 3 con trỏ địa chỉ cũng được sử dụng cho chức năng dò tìm bảng hằng số Các thanh ghi có
chức năng bổ sung này là các thanh ghi 16bit X, Y, Z
Trang 14
Trang 12
< Data Bus 8-bit
Program ‘Status
4K X16 Program Counter and Control Memory
62x EEPROM
Hình 4.1: Cấu trúc RISC của AT90S8535
ALU hỗ trợ các chức năng toán học và logic giữa các thanh ghi hoặc giữa 1 hằng số và
1 thanh ghi Các phép toán trên thanh ghi cũng thực hiện trong ALU
Hơn nữa, trong hoạt động của thanh ghi, các chế độ địa chỉ ô nhớ quy ước còn có thể
được sử dụng trên tập thanh ghi đa năng Điều này có nghĩa là tập thanh ghi đa năng được
gán 32 đường địa chỉ thấp nhất trong không gian dữ liệu (từ $00 + $1F), cho phép truy
nhập chúng như những vùng bộ nhớ thông thường
Không gian bộ nhớ vào/ra bao gồm 64 đường địa chỉ cho các chức năng ngoại vi của
CPU như các thanh ghi điều khiển, các Bộ Timer/Counter, các bộ chuyển đổi A/D và các
chức năng vào/ra khác Bộ nhớ vào/ra có thể được đăng nhập lập tức hoặc như các vị trí không gian dữ liệu theo sau vị trí các tập thanh ghi $20 + $5F
AVR sử dụng cấu trúc Harvard với bộ nhớ và địa chỉ bus tách biệt ding cho chương trình và dữ liệu Bộ nhớ chương trình được thực hiện với 1 đường ống 2 tầng Trong khi
một lệnh đang được thực thi thì chương trình đã nhận được lệnh kế tiếp Dựa trên cơ sở
này bộ nhớ cho phép lệnh được thực thi trong mỗi chu kì Bộ nhớ chương trình là bộ nhớ Flash lập trình được
Trang 15
Trang 13
PHÂN A ~ Chương I
Với các lệnh gọi và nhảy, các lệnh này được truy nhập nhanh chóng trong toàn bộ
vùng không gian dia chi 4K Hau hét các lệnh trong AVR có định dạng từ đơn 16bit Mọi
địa chỉ bộ nhớ chương trình đêu chứ 1 lệnh 16bit hoặc 32bit
Trong suốt quá trình gọi ngắt và thủ tục con, địa chỉ trả lại của bộ đếm chương trình
được giữ trong ngăn xếp Ngăn xếp được định trong vùng hoạt động của bộ nhớ SRAM,
do đó kích thước ngăn xếp chỉ giới hạn trong trong toàn bộ kích thước bộ nhớ và không
gian đã sử dụng của SRAM Tắt cả chương trình người sử dụng phải tạo lại giá trị ban đầu cho con trỏ SP khi khởi động chương trình (trước khi chương trình con và ngắt được thực
th SP 10bit được truy nhập dé doc/ghi trong vùng không gian vào/ra
Vì được hỗ trợ trong cấu trúc AVR nên bộ nhớ dữ liệu SRAM 512bytes có thể được
truy xuất một cách dễ dàng qua 5 chế độ địa chỉ khác nhau
„ Không gian bộ nhớ trong cấu trúc AVR được định theo kiểu ánh xạ bộ nhớ tuyến tính
Khối ¡ ngất linh hoạt có các thanh ghi điều khiển trong không „gian vào/ra với bit cho
phép ngất toàn cục trong các thanh ghi trạng thái Tất cả các ngắt khác đều cé 1 vector
ngắt riêng biệt trong bảng vector ngắt ở đầu bộ nhớ chuong trình Các ngắt có chế độ ưu
tiên phù hợp với vị trí vector ngắt của chúng Vector ngắt càng thấp thì độ ưu tiên càng
cao
Trang 16
Trang 14
PHAN A — Chuong I
4.2 Tap thanh ghi da nang
Hình 4.3 thê hiện câu trúc của 32 thanh ghi đa năng trên CPU
$1B Xregister high byte
SID Y-register high byte
$IE Z-reglster lưw byte SIF Z-regieter hịgh byte
Hình 4.3: Các thanh ghỉ đa năng trên CPU
Tắt cả các lệnh điều hành thanh ghi trong tập lệnh đều có thể được truy xuất trực tiếp
và trong 1 chu ky don Chỉ có I ngoại lệ là 5 lệnh cho các hằng số toán học va logic SBCI, SUBI, CPI, ANDI, ORI, gitta 1 thanh ghi va 1 hang số và lệnh LDI cho việc tải đữ
liệu không đổi 1 cách nhanh chóng Các lệnh nay chi tác động đến | nita thanh ghi trong
tap thanh ghi (R16 + R31)
Các lệnh thông thường SBC, SUB, CP, AND, OR và tất cả các toán học khác giữa 2
thanh ghỉ hoặc 1 thanh ghi đều tác động đến toàn bộ thanh ghi
Như hình 4.3, mỗi thanh ghi được gán địa chỉ bộ nhớ dữ liệu, ánh xạ chúng vào trong
vi tri 32 dau tiên của không gian dữ liệu của người sử dụng Mặc dù không được thực thi
theo đúng quy luật như vùng SRAM, tổ chức bộ nhớ này thể hiện sự linh hoạt tốt trong việc truy xuất thanh ghi, vì thanh ghi X, Y có thể thiết lập đến chỉ mục nào đó trong tập
thanh ghi đa năng
Thanh ghi X,Y,Z Thanh ghi R26 + R31 có thêm một vài chức năng đã được sử dụng Những thanh ghi này là địa chỉ con trỏ dùng cho địa chỉ gián tiếp của không gian dữ liệu Ba thanh
ghi địa chỉ gián tiếp X, Y, Z được định trỏ trong hình 4.4
Trang 17
Trang 15
Bình 4.4: Các thanh ghỉ X, Y va Z
4.3 Don vi sé hoc ALU (Arithmetic Logic Unit):
Đơn vị số học thực thi cao ALU của hệ AVR hoạt động theo hướng kết nối trực tiếp
với tất cả 32 thanh ghi đa năng Trong vòng 1 chu kì xung đơn, tổ chức ALU giữa những
thanh ghi trong tập thanh ghi đa năng được thực thi Tổ chức ALU được chia làm ba mục
chính: toán học, logic, chức năng bit
4.4 Bộ nhớ chương trình Flash lập trình được ngay trên hệ thống AT90S8535 bao gồm 8KB trên chip, bộ nhớ Flash được dùng để lưu trữ chương trình
Bởi tất cả các lệnh có 16 hoặc 32 từ bit nên bộ nhớ Flash đuợc tổ chức với dung lượng
4KxI6bit Bộ nhớ Flash có sức chịu đựng ít nhất là 1000 chu kì ghi/xoá Bộ đếm chương trình (PC: Program Counter) trong AT90S8535 có 12bit mở rộng, do đó đánh địa chỉ 4096
Trang 16Có 5 chế độ địa chỉ khác nhau dùng cho các vùng bộ nhớ dữ liệu: sự dich chuyển trực
tiếp, gián tiếp, gián tiếp, tiền giảm gián tiếp và tăng dữ liệu gián tiếp Trong tập thanh ghi,
từ thanh ghi R26 đến R31 có vai trò là thanh ghi con trỏ địa chỉ gián tiếp
Chế độ địa chỉ trực tiếp tham chiếu trên toàn bộ không gian dữ liệu
Trong chế độ dịch chuyển gián tiếp có chức năng tham chiếu tới 63 vị trí từ địa chỉ cơ
sở băng thanh ghi X, Y, Z
Khi sử dụng chế độ thanh ghi địa chỉ gián tiếp để tự động tăng hay giảm vị trí, thanh
ghi địa chỉ X, Y, Z được sử dụng
32 thanh ghi đa năng, 64 thanh ghi vào/ra và 512 bộ nhớ dữ liệu SRAM nội đều được
sử dụng qua tất cả các chế độ này
4.6 Chế độ địa chỉ dữ liệu và chương trình AVR AT90S8535 sử dụng cấu trúc RISC hỗ trợ các chế độ địa chỉ mạnh và có hiệu
suất cao dùng dé đăng nhập vào bộ nhớ chương trình (Flash) và bộ nhớ đữ liệu (SRAM,
tập thanh ghi và bộ nhớ vào/ra) Những phần này mô tả các chế độ địa chỉ khác nhau được
hỗ trợ bởi cấu trúc AVR Trong các hình, OP có nghĩa là những phần mã hoạt động của từ
lệnh Nói một cách đơn giản là tất cả các hình thể hiện chính xác vị trí của các bit địa chỉ
Trang 19
Trang 17
Hình 4.7: Các toán hạng được chứa trong thanh ghỉ r (Rr) và d (R4)
Kết quả được lưu trữ tại trong thanh ghỉ d (Rd)
Hình 4.8: Địa chỉ toán hang chika 6bit tir lénh
n Ia thanh ghi dja chi dich va nguén
Trang 20
Trang 18
Hình 4.9: Một đường địa chỉ dữ liệu 16bit chứa 1 6 bit LSB của 2 từ lệnh
Rd/Rr chi ré thanh ghi nguon/dich
Data Space
Hình 4.10: Dia chỉ toán hạng là kết qủa của thanh ghi Y,Z
có chứa thêm 6bif địa chỉ của một từ lệnh
Trang 19Hình 4.14: Địa chỉ byte hằng số được định rõ trong thanh ghỉ Z
15bit cao MSB được chọn làm địa chỉ (0 + 4K)
Bit thap LSB dugc chon lam byte thip néu LSB=[0] va la byte cao néu MSB=[1]
Trang 22
Trang 20
Hình 4.15: Chương trình sẽ tiếp tục truy xuất
những gì chứa trong thanh ghỉ Z
PROGRAM MEMORY seco
srr
Hinh 4.16: Chương trình sẽ tiếp tục tray xuất tới địa chỉ PC + k +1
Dia chỉ k được lẫy từ 2048 đắn 2047
4.7 Bộ nhớ dữ liệu EEPROM
AT90S§8535 chứa 512 byte trong bộ nhớ dữ liệu EEPROM Nó vận hành trong vùng không gian dữ liệu riêng biệt, nơi mà những byte dữ liệu đơn có thể được đọc/ghi
EEPROM có thể chịu được ít nhất 100.000 chu kỳ ghi/xoá
4.8 Thời gian đăng nhập bộ nhớ và thời gian thực thi tập lệnh
Phần này mô tả thời gian đăng nhập làm cơ sở để thực thi lệnh và đăng nhập bộ nhớ nội
CPU AVR được vận hành bởi hệ thống Ø, được phát ra một cách trực tiếp từ đồng hồ thạch anh ngoài dùng trong chip Đồng hồ hệ thống này không qua bắt kì bộ chia nào
Bộ xử lý này có một hệ thống 2 tầng và lệnh nạp/giải mã được thực hiện đồng thời với
lệnh thực thi
Trang 23
Trang 21
t ‡
ft i ' i
ALU Operation Execute < 2>
Result Write Back ! < t? Ị
Bình 4.18: Hoạt động của ALU trong một chu kỳ đơn
Việc đăng nhập bộ nhớ dữ liệu SRAM nội được thực hiện trong 2 chu kỳ xung nhịp
của đồng hồ hệ thống được miêu tả ở hình 4.19
Không gian xác định vào/ra của AT90S8535 được thể hiện ở bảng 4.1
Trang 24
Trang 22
PHÂN A ~ Chương I
$3F($5F) SREG | Thanh ghi trang thai
$3E($5E) SPH Thanh ghi con tro(byte cao)
$3D($5D) SPL | Thanh ghi con trỏ (byte thấp)
$3B($5B) GIMSK _ | Thanh ghi che ngắt chung
$3A($5A) GIFR | Thanh ghi cờ ngắt chung
$35($55) MCUCR | Thanh ghi điều khiển chung MCU
$2B($4B) OCRIAH | Thanh ghi so sánh lối ra T/CA(byte cao)
$2A($4A) OCRIAL, | Thanh ghi so sánh lối ra T/CA(byte thấp)
$26($46) ICRIL | Thanh ghi bắt mẫu ngõ ra bộ đếm T/C(byte thấp)
$25($45) TCCR2 | Thanh ghi điều khiển T/C2
$23($43) OCR2 | Thanh ghi so sánh ngõ ra bộ T/C2
$22($42) ASSR_ | Thanh ghi trang thái chế độ bất đồng bộ
$1F($3E) EEARH | Thanh ghi dia chi EEPROM byte cao
$11($31) DDRD | Thanh ghi huéng dit liéu,Port D
$0C($2C) UDR | Thanh ghi dữ liệu vào/ra UART
Trang 23PHAN A — Chuong I
$0A($2A) UCR Thanh ghi điêu khiên UART
$08($28) ACSR_ | Thanh ghi trang thai va điều khiển bộ so sánh tương tự
$07($27) ADMUX | Thanh ghi lựa chọn kênh cho bộ chuyển đổi ADC
$06($26) ADCSR | Thanh ghi trang thai va diéu khién ADC
$05($25) ADCH_ | Thanh ghi dữ liệu ADC byte cao
$(04($24) ADCL _ | Thanh ghi dữ liệu ADC byte thấp
Bảng 4.1: Không gian 1O của AT90S8535
— Chú ý: Những vùng không sử dụng và đặc biệt không được liệt kê trong bảng này
Tắt cả các thiết bị vào/ra của AT90S8535 và thiết bị ngoại vi đều được đặt không gian vào/ra Vị trí vào/ra được truy xuất bằng lệnh IN/OUT để truyền dữ liệu giữa 32 thanh ghi
đa năng và vùng không gian vào/ra Thanh ghi vào/ra có vùng địa chỉ $00 + $1F, do đó việc truy xuất bit sẽ được thực hiện ngay lập tức bằng lệnh SBI/CBI Trong những thanh ghi này, giá trị của bit đơn có thể được kiểm tra bằng lệnh SBIS/SBIC Khi dùng lệnh IN/OUT lênh hệ thống vào/ra thì địa chỉ của hệ thống này được sử dụng từ $00 + $3F Khi
sử dụng đường địa chỉ cla SRAM thì ta thêm vào $20 vào những đường địa chỉ trên Tat
cả các đường địa chỉ thanh ghỉ vào hệ thống vào/ra trong suốt tài liệu này được trình bày cùng với đường địa chỉ SRAM trong ngoặc đơn
Đối với những thiết bị tương thích trong tương lai, những bit đặc biệt được ghỉ là Zero nếu được truy xuất tới Địa chỉ bộ nhớ vào/ra riêng thì không nên ghi
Một vài cờ trạng thái được xoá bằng cách ghi chúng ở mức [1] Lưu ý là lệnh SB1/CBI
sẽ tác động lên tất cả các bit trong thanh ghi vào/ra, cờ sẽ được ghi lại ở mức [1] vì thế nên xoá cờ Lệnh SBI/CBI chỉ làm việc trên thanh ghi $00 + $IF
a) Thanh ghi trang thái (Status Register) SREG
Thanh ghi trạng thái AVR ở vị trí không gian vào/ra $3F (§5F) được định nghĩa
e _ Bir7- I: Global Interrupt Enable: Cho phép ngắt toàn cục
Các bit cho phép ngắt toàn cục phải được thiết lập (mức [1]) cho phép ngắt
Việc cho phép điều khiển các ngắt riêng biệt sẽ được thực hiện trên các thanh ghi
điều khiển riêng biệt Nếu bit cho phép ngắt toàn cục bị xoá (mức [0]) thì không có
ngắt nào được phép thiết lập độc lap Bit I được xoá bang phan cứng sau khi 1 ngắt xảy ra và được thiết lập bằng lệnh RETI cho phép ngắt tiếp theo thực hiện
Các lệnh BLD/BST (nạp bitlưu trữ bit) như nguồn/đích để vận hành Một bit
từ thanh ghi trong tập thanh ghỉ được sao chép vào T bằng lệnh BST và một bit trong T được sao chép vào thanh ghi trong tập thanh ghi bằng lệnh BLD
¢ Bit 5 - H: Haft-carry Flags, bit H cho biết chỉ nhớ một nửa trong một số lệnh số
học
Trang 26
Trang 24
PHAN A - Chuong I
kết quả giữa cờ phủ định N va cờ tràn bù nhị phân V
e Bit 3 - V: Two’s Complement Overflow Flag (cé tran bu nhi phan) Co tran bu nhi
phân V hỗ trợ phép toán bù nhị phân
¢ Bit 2 - N: Negative Flag (cờ phủ định) Cờ phủ định N cho biết một kết quả phủ
định từ một phép toán hay phép logic
© Bit 1 - Z: Zero Flag (co 0) Cờ 0 cho phép cho biết một kết qủa bằng 0 từ phép toán
không gian vào/ra có địa chỉ $3E ($5E) + $3D ($5D) Khi bộ nhớ dữ liệu của
AT90S8535 có $25F vị trí, 10bit được sử dụng
SRAM phải được định rõ bằng chương trình trước khi gọi bất kỳ chương trình con
nào được thực thi và được phép ngắt Con trỏ ngăn xếp phải được thiết lập đến điểm
phía trên $60 Con trỏ ngăn xếp giảm xuống 1 giá trị khi dữ liệu được đây về phía trên ngăn xếp bằng lệnh PUSH và nó giảm xuống 2 khi một địa chỉ được đây lên trên ngăn
xếp cùng với việc gọi chương trình con và ngắt Con trỏ ngăn xếp được tăng lên 1 giá
trị khi dữ liệu được kéo ra từ ngăn xếp bằng lệnh POP và nó được tăng lên 2 khi một địa chỉ được kéo ra từ ngăn xếp cùng với việc trả lại thủ tực con RET hoặc lệnh ngắt
RETI
4.10 Chế độ ngủ
Để lập bắt kỳ chế độ ngủ nào, bit SE trong thanh ghỉ MCUCR phải được đặt lên [1] va
thực thi lệnh SLEEP Bit SM0/SMI trong thanh ghỉ MCUCR chọn lựa chế độ ngu (Idle, Power-save, Power-down) sẽ được kích hoạt bằng lệnh SLEEP
Nếu một ngắt cho phép xảy ra trong khi MCU ngủ thì MCU sẽ dậy và thực thi thường
trình ngắt và sẽ ngủ lại khi hoàn tất thường trình đó.Lú đó bộ nhớ SRAM và I/O không bị thay đôi nội dung tập thanh ghi Ngoài ra nếu có một tín hiệu reset xuất hiện trong suốt
chê độ ngủ thì MCU sẽ dậy thực thi vector reset đó
Trang 27
Trang 25
cũng như các thiết bị nội như Timer Overflow và ngắt hoàn tất quá trình truyền nhận
của UART hoạt động Nếu MCU khởi động từ một ngắt so sánh tương tự thì không
được đáp ứ ứng, bộ so sánh tương tự thì không được đáp ứng, bộ so sánh tương tự có thê làm giảm dòng tiêu thụ bằng cách thiết lập bit ADC trong thanh ghi điều khiển và trạng thái so sánh tương tự (ASCR) Điều này sẽ giúp tái tạo lại năng lượng tiệu thụ
trong chế độ Idle và CPU sẽ khởi động lại một cách nhanh chóng
b) Power-down (Chế độ giảm dòng tiêu thụ)
Khi bit SM1 và SMO duoc đặt lên 10, lệnh SLEEP sẽ làm cho MCU đăng nhập vào
chế độ Power-down Trong chế độ này bộ đao động ngoài sẽ ngưng | hoạt động trong khi bộ ngắt ngoài và bộ định thời 'Watchdog (nếu được phép) vẫn tiếp tục vận hành
Chỉ cần một tín hiệu reset, reset Watchdog (néu được phép) hay một ngắt mức ngoài
cũng có thế đánh thức MCU
Lưu ý là khi một ngắt trigger theo mức được sử dụng để đánh thức chế độ Power- down, mức thấp phải được giữ trong một khoảng thời gian dài hơn chu kỳ nghỉ trễ của
tín hiệu reset trour
Khi thoát khỏi chế độ Power- down, tín hiệu trễ xuất hiện tạo điều kiện để MCU
thức dậy cho đến khi thoát khỏi chế độ ngủ hoàn toàn Điều này cho phép đồng hồ
khởi động và cho đến khi ổn định thì ngưng
Nếu điều kiện đánh thức MCU xuất hiện trước khi MCU thức dậy và bắt đầu thực thi,ví dụ: Mức thấp không giữ được thời gian đủ dài sẽ làm cho việc thoát khỏi trạng
thái ngủ không được thực hiện
©) Power-save (Chế độ tiết kiệm năng lượng) Khi bit SM1 và SM0 được đặt lên 11, lệnh SLEEP sẽ làm cho MCU đăng nhập vào
chế độ Power-save Đây cũng là chế độ Power-down nhưng có một ngoại lệ: nếu Timer/Counter2 phát xung bất đồng bộ, tức là bit AS2 trong thanh ghi ASSR được thiết lập, Timer/Counter2 sẽ hoạt động trong suốt quá trình ngủ Ngoài ra các linh kiện cũng có thể thoát khỏi chế độ Power-save khi có tín hiệu tràn bộ định thời, hay sự kiện
so sánh ngõ ra từ Timer/Counter2 nếu bit cho phép ngắt Timer/Counter2 tương ứng trong thanh ghi TIMSK và bit cho phép ngắt toàn cục trong thanh ghi SREG được thiết
lập
Khi thoát khỏi chế độ Power-save bằng bộ ngắt ngoài, hai chu kỳ lệnh được thực thi trước khi cờ ngất được cập nhật lại và khi được đánh thức bằng bộ định thời bắt
đồng bộ, ba chu kỳ lệnh được thực thi trước khi các cờ được cập nhật lại Và trong
suốt những chu kỳ này, bộ vi xử lý thực thi nhiều lệnh nhưng điều kiện ngắt không
được đọc và thường trình ngắt đã không được khởi động
Nếu bộ định thời bất đồng bộ không phát ra xung bất đồng bộ, chế độ Power-down được chọn thay vì Power-save bởi vì những nội dung trong các thanh ghi của bộ định thời bất đồng bộ sẽ không được định nghĩa sau khi thoát khỏi chế độ Power-save cho
dù AS2 = [0]
Trang 28
Trang 26
PHAN A - Chuong I
V TRUY XUAT DOC/GHI EEPROM
5.1 Giới thiệu ;
Thanh ghi truy xuat b6 nho EEPROM dugc str dung trong khéng gian I/O
Thời gian truy xuất ghi dữ liệu là trong khoảng 2.5 + 4ms, phụ thuộc vào điện áp
nguồn 'Vcc Chức năng seft-timing cho phép phân mêm người sử dụng dò tìm khi byte kế
tiếp có thể được ghi vào Một ngắt đọc đặc biệt của EEPROM có thể được thiết lập đến trigger khi EEPROM sẵn sàng nhận dữ liệu mới
Để tránh định trước việc ghỉ EEPROM, một quá trình ghỉ cụ thể phải được thẻ hiện
Khi đọc EEPROM thì CPU phải được tạm ngưng trong 4 chu kỳ xung nhịp trước khi
lệnh kế tiếp được thực thi Khi EEPROM được ghi thì CPU phải được tạm ngưng trong 2 chu kỳ xung nhịp trước khi lệnh kế tiếp được thực thi
5.2 Thanh ghi địa chỉ EEPROM - EEARH, EEARL
Đối với thao tác ghi cla EEPROM, thanh ghi dữ liệu EEDR chứa dữ liệu được ghi đến
EEPROM trong ving dia chi được định bởi thanh ghi EEAR Đối với thao tác đọc của
EEPROM, thanh ghi dữ liệu EEDR chứa dữ liệu được đọc ra EEPROM trong vùng địa chỉ được định bởi thanh ghi EEAR
5.4 Thanh ghi điều khiển EEPROM - EECR
© Bữ7+ 4- Res: Các bit thụ động Các bit này luôn được đặt ở mức [0]
e Bit 3 - EERIE: EEPROM Ready Interrupt Enable
Trang 29
Trang 27
PHAN A - Chuong I
Khi bit I trong thanh ghi SREG va EERIE được đặt lên [I], ngắt EEPROM Ready
được cho phépvà khi xoá xuống [0] thì ngắt bị câm Ngắt EEPROM Ready phát ra một
ngắt hăng khi EEWE bị xoá xuống [0]
Bit 2 - EEMWE: EEPROM Master Write Enable Việc đặt EEMWE lên [1] sau đó việc thiết lập EEWE sẽ chỉ ghỉ đữ liệu lên bộ nhớ EEPROM tại vùng địa chỉ đã được chọn Nếu EEMWE bị xoá xuống [0] thì thiết lập EEWE cũng không có tác dụng gì Khi EEMWE được đặt lên [1] bằng phần mềm thì phần cứng sẽ xoá bit này xuống [0] sau bốn chu kỳ xung nhịp
Bit 1 - EEWE: EEPROM Write Enable Khi dữ liệu và đường địa chỉ được cài đặt một cách chính xác, bit EEWE phải
được thiết lập để ghi giá trị vào trong EEPROM Khi mức logic [1] được đặt vào bịt
EEWE thì bit EEMWE phải được thiệt lập, nếu không sẽ không thao tác ghi EEPROM được Các dãy lệnh ghi dữ liệu bộ nhớ EEPROM được viết như sau (bước 2 và 3
không cần thiết):
1 Chờ cho đến khi EEWE trở thành [0]
2 Ghi đường địa chỉ mới của EEPROM đến EEARL và EEARH (không bắt buộc)
3 Ghi đữ liệu mới cua EEPROM đến EEDR (không bắt buộc)
4 Ghi mức logic [1] vào bit EEMWE trong thanh ghi EECR (để có thể ghỉ mức
logic [1] vào bit EEMWE thì bit EEWE phải được ghi là [0] trong cùng một chu kỳ)
5 Trong vòng 4 chu kỳ xung nhịp sau khi EEMWE được thiết lập, ghỉ mức logic
[1] lén EEWE
—= Chú ý: Một tín hiệu phá vỡ sự liên tục giữa bước 4 và bước 5 sẽ làm hỏng chu kỳ
ghi, khi đó EEPROM Master Write Enable sẽ nghỉ Nếu có một ngắt thường trình đăng
nhập EEPROM làm gián đoạn một đăng nhập khác vào EEPROM thì sẽ làm cho thanh
ghi EEAR và EEDR bị thay đổi Vì vậy nên cần xóa cờ ngắt cục trong suốt bốn bước
cuối để tránh những vấn đề này
Khi thời gian truy xuất ghi trôi qua (2.5ms tại Vcc= 5V và 4ms tại Vcc = 2.7V), bit
EEWE sé bj xoá xuống [0] bằng phần cứng Phần mềm người sử dụng có thể thăm dò
và chờ bit này xem đã là [0] chưa trước khi ghi byte kế tiếp Khi EEWE được thiết lập, CPU tạm nghỉ trong hai chu kỳ xung trước khi lệnh kế tiếp được thực thi
Bit 0 - EERE: EEPOM Read Enable Khi dja chi chinh xác được cài đặt trong thanh ghi EEAR, bit EERE được thiết lập
Khi bit EERE xoá xuống [0] bằng phần cứng, dữ liệu yêu cầu đã có trong thanh ghi EEDR Việc đăng nhập đọc EEPROM tốn một lệnh và cũng không cần phải kiểm tra
bit EERE Khi bit EERE được thiết lập thì CPU tạm nghỉ trong 4 chu kỳ xung nhịp
trước khi lệnh kế tiếp được thực thi
Người sử dụng nên kiểm tra bit EEWE trước khi bắt đầu chương trình đọc Nếu có một
tiến trình ghi dữ liệu đang diễn ra mà thanh ghi IO EEPROM lại ghi dữ liệu hoặc địa chỉ
mới thì tiễn trình ghi dữ liệu này sẽ bị gián đoạn và kết quả sẽ không rõ ràng
5.5 Tránh sai sét trong EEPROM Trong suốt chu ky điện áp nguồn Vcc thấp, dữ liệu có thể bị thất thoát bởi vì nguồn cung cấp quá thấp để cho CPU và EEPROM vận hành chính xác Vấn đề đặt ra là làm sao tránh những thất thoát dữ liệu đối với các EEPROM trên chip cũng như tránh thất thoát dữ liệu đối với những vi mạch không có EEPROM trên chip
Khi điện áp quá thấp sẽ phát sinh ra hai nguyên nhân dẫn đến đữ liệu trên EEPROM bị sai lệch Thứ nhất, một trình tự ghi thông thường lên EEPROM cần điện áp nhỏ nhất để
Trang 30
Trang 28
1 Giữ cho Reset AVR tích cực mức thấp trong suốt thời gian điện áp nguồn nuôi
không đủ Tốt nhất là dùng mạch bảo vệ reset nguồn nuôi mức thấp bên ngoài,
thông thường hay dùng phát hiện Brown-out (BOD)
2 Tránh ghi vào bộ nhớ EEPROM trong thời gian điện áp nguồn nuôi bị giám thấp
3 Không nên sử dụng bộ nhớ EEPROM một cách lạm dụng Đây là giải pháp chỉ được
sử dụng khi có yêu cầu
VI GIAO DIỆN THIẾT BỊ NGOẠI VI NÓI TIẾP SPI (SERIAL PERIPHERAL
INTERFACE)
SPI cho phép truyền dữ liệu đồng bộ tốc độ cao giữa AT90S8535 và các linh kiện
ngoại vi hoặc giữa các linh kiện AVR
Bảo vệ cờ xung đột khi ghi
Thoát khỏi chế độ Idle (ngủ )