Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7 Tài liệu hướng dẫn sử dụng ST7
Trang 1BIÊN DỊCH TỪ TÀI LIỆU ST7 USER GUIDE CỦA
STMICROELECTRONICS
TP.HCM, THÁNG 1 NĂM 2008
Trang 2TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 2
MỤC LỤC
MỤC LỤC 2
TỔNG QUAN VỀ VI ĐIỀU KHIỂN 5
I GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN 6
II PHÂN LOẠI 6
III CẤU TRÚC TỔNG QUAN CỦA VDK: 7
VI ĐIỀU KHIỂN ST7 9
I GIỚI THIỆU 10 U II SƠ ĐỒ CHÂN 11
III SƠ ĐỒ BỘ NHỚ VÀ THANH GHI 12
IV VÙNG NHỚ LẬP TRÌNH FLASH (Flash Programming Memory) 14
1 Giới thiệu 14
2 Đặc điểm chính (main features) 15
3 Chế độ lập trình (Programming Modes) 15
4 Giao tiếp ICC (ICC Interface) 16
5 Bảo vệ vùng nhớ ( Memory Protection) .16
6 Tài liệu liên quan (Related Documentation) .17
7 Mô tả thanh ghi (Register description) 17
V DATA EEPROM 17
1 Giới thiệu (Introduction) .17
2 Đặc điểm chính .18
3 Truy xuất bộ nhớ 18
VI BỘ XỬ LÝ TRUNG TÂM (Central Processing Unit) 19
1 Giới thiệu 19
2 Đặc điểm chính .19
3 Các thanh ghi nội .20
Trang 3TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 3
VII NGẮT 23
1 Ngắt mềm không che được 24
2 Ngắt ngoại 24
3 Ngắt thiết bị ngoại vi 24
VIII CÁC CỔNG I/O : 28
1 Giới thiệu: 28
2 Chức năng: 28
3 Thực thi các cổng I/O 30
4 Các chân không được sử dụng 31
5 Chế độ tiết kiệm năng lượng 31
6 Ngắt 31
IX CÁC THIẾT BỊ NGOẠI VI ĐƯỢC TÍCH HỢP: 31
1 Bộ định thời Watchdog (WDG) : 31
2 Bộ định thời 12 bit tự động nạp lại 33
3 Giao tiếp ngoại vi nối tiếp (SPI) 45
4 Bộ chuyển đổi tín hiệu tương tự sang tín hiệu số 59
X TẬP LỆNH ASSEMBLER CỦA VI ĐIỀU KHIỂN ST7 65
1 Các lệnh số học 65
2 Các lệnh Logic 66
3 Các lệnh xử lí bit 66
4 Các lệnh nhảy 67
5 Các lệnh di chuyển dữ liệu 68
6 Một số lệnh khác 68
XI CÁC CHẾ ĐỘ ĐINH ĐỊA CHỈ CỦA HỌ VI ĐIỀU KHIỂN ST7 71
1 Định địa chỉ tức thời 71
Trang 4TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 4
2 Định địa chỉ trực tiếp ngắn 71
3 Định địa chỉ trực tiếp dài 71
4 Định địa chỉ NO OFFSET INDEXED 72
5 Định địa chỉ SHORT INDEXED ADDRESSING 72
6 Định địa chỉ LONG INDEXED 72
7 Định địa chỉ gián tiếp ngắn 72
8 Định địa chỉ gián tiếp dài 72
9 Định địa chỉ SHORT INDIRECT INDEXED 73
10 Định địa chỉ LONG INDIRECT INDEXED 73
11 Định địa chỉ tương đối 73
12 Thao tác trên bit 73
Trang 5TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 5
TỔNG QUAN VỀ VI ĐIỀU KHIỂN
Trang 6TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 6
I GIỚI THIỆU KHÁI QUÁT VỀ VI ĐIỀU KHIỂN
Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khả năng tính toán, xử lý,
và thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp như nhau Các khối này bao gồm bộ nhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện được công việc Để kết nối các khối này đòi hỏi người thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ người thiết
kế Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ
Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller-Vi điều khiển
Một số đặc điểm khác nhau giữa vi xử lí và VĐK:
Về phần cứng: VXL cần được ghép thêm các thiết bị ngoại vi bên ngoài như bộ nhớ, và các thiết bị ngoại vi khác, … để có thể tạo thành một bản mạch hoàn chỉnh Đối với VĐK thì bản thân nó đã là một hệ máy tính hoàn chỉnh với CPU, bộ nhớ, các mạch giao tiếp, các bộ định thời và mạch điều khiển ngắt được tích hợp bên trong mạch
Về các đặc trưng của tập lệnh: Do ứng dụng khác nhau nên các bộ VXL và VĐK cũng
có những yêu cầu khác nhau đối với tập lệnh của chúng Tập lệnh của các VXL thường mạnh
về các kiểu định địa chỉ với các lệnh cung cấp các hoạt động trên các lượng dữ liệu lớn như 1byte, ½ byte, word, double word, Ở các bộ VĐK, các tập lệnh rất mạnh trong việc xử lý các kiêu dữ liệu nhỏ như bit hoặc một vài bit
Do VĐK cấu tạo về phần cứng và khả năng xử lí thấp hơn nhiều soi với VXL nên giá thành của VXL cũng rẻ hơn nhiều Tuy nhiên nó vẫn đủ khả năng đáp ứng được tất cả các yêu cầu của người dùng
Vi điều khiển được ứng dụng trong các dây chuyền tự động loại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v.v
II PHÂN LOẠI
i Độ dài thanh ghi
Trang 7TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 7
Dựa vào độ dài của các thanh ghi và các lệnh của VĐK mà người ta chia ra các loại VĐK 8bit, 16bit, hay 32bit
Các loại VĐK 16bit do có độ dài lệnh lớn hơn nên các tập lệnh cũng nhiều hơn, phong phú hơn Tuy nhiên bất cứ chương trình nào viết bằng VĐK 16bit chúng ta đều có thể viết trên VDK 8bit với chương trình thích hợp
ii Kiến trúc CISC và RISC
VXL hoặc VDK CISC là VDK có tập lệnh phức tạp Các VDK này có một số lượng lớn các lệnh nên giúp cho người lập trình có thể linh hoạt và dễ dàng hơn khi viết chương trình
VDK RISC là VDK có tập lệnh đơn giản Chúng có một số lương nhỏ các lệnh đơn giản DO đó, chúng đòi hỏi phần cứng ít hơn, giá thành thấp hơn, và nhanh hơn so với CISC Tuy nhiên nó đòi hỏi người lập trình phải viết các chương trình phức tạp hơn, nhiều lệnh hơn
iii Kiến trúc Harvard và kiến trúc Vonneumann
Kiến trúc Harvard sử dụng bộ nhớ riêng biệt cho chương trình và dữ liệu Bus địa chỉ và bus dữ liệu độc lập với nhau nên quá trình truyền nhận dữ liệu đơn giản hơn
Kiến trúc Vonneumann sử dụng chung bộ nhớ cho chương trình và dữ liệu Điều này làm cho VĐK gọn nhẹ hơn, giá thành nhẹ hơn
Một số loại VDK có trên thị trường:
+Thanh ghi PC, lưu giũ địa chỉ của lệnh kế tiếp cần thực thi + Một tập các thanh ghi dùng để lưu thông tin tạm thời
ii ROM:
ROM là bộ nhớ dùng để lưu giữ chương trình ROM còn dùng để chứa số liệu các bảng, các tham số hệ thống, các số liệu cố định của hệ thống Trong quá
Trang 8TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 8
trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình
iii RAM:
RAM là bọ nhớ dữ liệu Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và kết quả cuối cùng của các phép toán, xử lí thông tin Nó cũng dùng để tổ chức các vùng đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu
iv BUS:
BUS là các đường dẫn dùng để di chuyển dữ liệu Bao gồm: bus địa chỉ, bus
dữ liệu , và bus điều khiển
v Bộ định thời: Được sử dụng cho các mục đích chung về thời gian
Trang 9TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 9
VI ĐIỀU KHIỂN ST7
Trang 10TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 10
Tập lệnh và chế độ định địa chỉ của ST7 cho thấy sức mạnh và tính linh hoạt đối với những người phát triển phần mềm, cho phép thiết kế mã ứng dụng ngắn gọn và đạt hiệu quả cao Thêm vào đó , tất cả
vi điều khiển ST7 có đặc điểm tính toán trên từng bit, tính toán số không dấu 8x8 và chế độ định địa chỉ gián tiếp
Thiết bị có một module debug trên chip (DM) hỗ trợ debug trên mạch(ICD-in-circuit debugging)
Trang 11TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 11
II SƠ ĐỒ CHÂN
Trang 12TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 12
III SƠ ĐỒ BỘ NHỚ VÀ THANH GHI
Như được thấy trong figure 4, MCU có khả năng định địa chỉ đến 64 k bytes bộ nhớ và có những thanh ghi xuất/nhập
Bộ nhớ bao gồm 128 bytes định vị các thanh ghi phần cứng (Hardware register) xem bảng 2, 384 bytes RAM, 256 bytes EEPROM và 8 kbytes bộ nhớ lập trình Không gian bộ nhớ RAM dành tới 128 bytes cho vùng stack được đánh địa chỉ từ 0180F tới 01FFh
Những bytes địa chỉ cao nhất chứa trạng thái reset và bảng vector ngắt
Vùng nhớ Flash chứa 2 sector(Figure 4) được ánh xạ vào tầm địa chỉ cao nhất vì vậy bảng reset và vector ngắt được định vị ở sector 0 (F000h – FFFFh)
Kích thước của Flash sector 0 và những lựa chọn thiết bị khác được định dạng bởi option byte Quan trọng (Important): vùng nhớ dành sẵn (“reserved”) không bao giờ được truy suất Truy suất vùng nhớ này có thể có những ảnh hưởng không lường trước được trên thiết bị
Trang 13TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 13
Trang 14TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 14
Ghi chú: x = không xác định, R/W = Đọc/ghi
Chú ý:
1 Nội dung của thanh ghi DR của các cổng giao tiếp I/O chỉ có thể được đọc ở cấu hình ngõ xuất Trong cấu hình ngõ nhập, giá trị của các chân I/O sẽ được trả về thay vì nội dung của thanh ghi DR
2 Các bit liên đới với những chân không sử dụng phải được giữ ở giá trị khởi tạo của nó
IV VÙNG NHỚ LẬP TRÌNH FLASH (Flash Programming Memory)
Trang 15TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 15
2 Đặc điểm chính (main features)
• ICP (In-circuit programming)
• IAP (In-application programming)
• ICT (In-circuit testing) - load và thực thi mẫu kiểm tra ứng dụng của user trong Ram
• Kích thước sector 0 được thiết lập bởi option byte
3.1 In-circuit programming(ICP)
ICP sử dụng giao thức được gọi là ICC (In-cỉcuit communication) cho phép một vi điều khiển cắm trên board mạch in (PCB-printed cỉcuit board) giao tiếp với thiết bị lập trình bên ngoài thông qua cáp ICP hoạt động theo 3 bước:
• Đưa ST7 vào chế độ ICC : Điều này được thực hiện bằng cách điều khiển chuỗi tín hiệu đặc biệt thông qua chân ICCCLK/DATA trong lúc chân RESET ở mức thấp khi ST7 vào chế độ ICC, nó tìm thấy vector RESET đặc biệt chỉ tới bộ nhớ hệ thống của có chứa thủ tục giao thức ICC Thủ tục này cho phép ST7 nhận bytes từ giao tiếp ICC
• Nạp code driver ICP vào trong ram từ chân ICCDATA
• Thi hành doạn mã vừa nạp vào trong ram để lập trình vùng nhớ FLASH
Phụ thuộc vào đoạn mã được nạp vào ram , lập trình vùng nhớ FLASH có thể bị thay đổi (số bytes chương trình, định vị chương trình, hay lựa chọn giao tiếp tuần tự để nạp chương trình)
3.2 In-Application programming (IAP)
Trang 16TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 16
Chế độ này sử dụng một chương trình điều khiển IAP được nạp vào sector 0 bởi người sử dụng trước đó( in ICP mode)
Chế độ này được điều khiển hoàn toàn bởi phần mềm của user Điều này cho phép nó uyển chuyển với ứng dụng của user
Chế độ IAP có thể được dùng để lập trình mọi vùng nhớ trừ secter 0, đây là vùng cấm không được ghi hoặc xóa vì nó dùng để phục hồi trong trường hợp thực thi chương trình bị lỗi
4 Giao tiếp ICC (ICC Interface)
ICP cần tối thiểu từ 4 cho đến 6 chân để kết nối với công cụ lập trình Những chân này là:
RESET: Reset thiết bị
VSS : Devide power supply ground
ICCCLK: Cổng nhập dữ liệu tuần tự ICC
CLKIN/PB4: Chân nhận xung CLOCK từ bên ngoài
VDD: Nguồn cung cấp cho ứng dụng
5 Bảo vệ vùng nhớ ( Memory Protection)
Có hai kiểu bảo vệ vùng nhớ khác nhau: bảo vệ đọc và bảo vệ ghi xóa được dùng bởi cá nhân
5.1 Bảo vệ đọc (read-out protection)
Bảo vệ đọc, khi được chọn cung cấp sự bảo vệ dựa trên nguồn gốc nội dung vùng nhớ chương trình
và dựa trên truy suất ghi tới vùng nhớ Flash
Trong thiết bị Flash , sự bảo vệ này được bỏ đi bởi lựa chọn tái lập trình Trong trường hợp này, cả
bộ nhớ dữ liệu E2 và bộ nhớ lập trình được tự động xóa và thiết bị có thể được lập trình lại bảo vệ đọc phụ thuộc vào loại thiết bị:
Trong thiết bị Flash , nó được cho phép và loại bỏ thông qua bit FMP_R trong byte lựa chọn (option byte)
Trong thiết bị rom nó được cho phép bởi lựa chọn mặt nạ đặc biệt trong danh sách lựa chọn (option byte)
5.2 Bảo vệ ghi xóa vùng nhớ Flash (Flash Write/eraser Protection)
Bảo vệ ghi /xóa , khi được thiết lập thì không thể overwrite và xóa bộ nhớ chương trình Nó không dùng với dữ liệu E2 mục đích của nó cung cấp chế độ bảo mật cao cho ứng dụng và ngăn chặn mọi thay đổi nội dung vùng nhớ
Trang 17TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 17
Cảnh báo: mỗi lần thiết lập chế độ bảo vệ này, nó có thể không bao giờ được xóa Thiết bị Flash được bảo vệ ghi thì không tái lập trình được nữa bảo vệ ghi/xóa được cho phép thông qua bit FMP_W trong byte option
6 Tài liệu liên quan (Related Documentation)
Để có thêm chi tiết về lập trình Flash và giao thức ICC, tham khảo “The ST7 Flash programming reference manual” và “The ST7 ICC protocol reference manual”
7 Mô tả thanh ghi (Register description)
Thanh ghi trạng thái/điều khiển Flash (Flash control/status register-FCSR)
Có khả năng đọc /ghi
Giá trị reset: 0000 0000 (00h)
RASS key thứ 1: 0101 0110 (56h)
RASS key thứ 2: 1010 1110 (AEh)
Chú ý: thanh ghi này phục vụ cho lập trình sử dụng ICP, IAP hay các phương pháp lập trình khác
Nó điều khiển lập trình Flash và tác vụ xóa
Khi một EPB hay công cụ lập trình khác được sử dụng( in socket or ICP mode), the RASS keys được gửi một cách tự động
V DATA EEPROM
1 Giới thiệu (Introduction)
Bộ nhớ chỉ đọc có khả năng lập trình xóa bằng điện(EEPROM) được dùng để lưu trữ dữ liệu Sử dụng EEPROM yêu cầu một giao thức truy xuất cơ bản được mô tả trong chương này
Trang 18TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 18
2 Đặc điểm chính
• Lên đến 32 byte được lập trình trong cùng chu kỳ
• EEPROM điện thế đơn (mono-voltage)
Tác vụ đọc( Read Operation [E2LAT = 0])
EEPROM có thể được đọc như bộ nhớ ROM bình thường khi bit E2LAT của thanh ghi EECSR được xóa
Trang 19TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 19
Đối với ST7, DATA EEPROM cũng có thể được dùng để thực thi mã máy Tránh ghi lên vùng nhớ DATA EEPROM khi nó đang thực thi lệnh, điều này có thể dẫn tới một đoạn code không được mong đợi được thực thi
Tác vụ ghi (E2LAT = 1)
Để truy xuất chế độ ghi, bit E2LAT phải được lập bởi phần mềm( bit E2PGM còn lại được xóa)
VI BỘ XỬ LÝ TRUNG TÂM (Central Processing Unit)
• Hai thanh ghi đánh chỉ số 8 bits
• Thanh ghi stack pointer 16 bits
Trang 20TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 20
• Ngắt phần cứng có thể che
• Ngắt phần mềm không thể che
3 Các thanh ghi nội
Sáu thanh ghi nội được chỉ trong hình 10 thì không xuất hiện trong vùng bộ nhớ và được truy xuất bằng những câu lệnh đặc biệt
THANH GHI TÍCH LŨY (Accumulator-A):
Thanh ghi A là một thanh ghi dùng chung 8-bit thường dùng để chứa toán hạng và kết quả của các phép toán số học và logic và dùng để tính toán
THANH GHI CHỈ SỐ (X và Y):
Trong chế độ định địa chỉ bằng chỉ số, hai thanh ghi 8 bits này thường dùng để tạo ra những địa chỉ trực tiếp hoặc chứa kết quả tạm thời cho việc tính toán Thanh ghi Y không bị ảnh hưởng bởi lệnh gọi những chương trình con( không push vào hoặc pop ra stack)
Program counter(PC): PC là thanh ghi 16-bit chứa địa chỉ của lệnh kế tiếp để được thực thi bởi CPU Nó được tạo bởi hai thanh ghi 8-bit, PCL là 8 bits thấp, PCH là 8 bits cao
CONDITION CODE REGISTER (CC):
Trang 21TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 21
Đọc / Ghi
Giá trị khởi tạo : 111x1xxx
Thanh ghi CC 8-bit chứa trạng thái ngắt quãng và 4 cờ trạng thái của kết quả vừa được tính toán Thanh ghi này có thể được điều khiển bởi lệnh push và pop
Những bit này có thể được truy xuất riêng rẽ hay được điều khiển bởi những câu lệnh đặc biệt Bit H (half cary): Bit này được lập bởi phần cứng khi có nhớ xuất hiện giữa bit 3 và 4 trong ALU khi thực hiện lệnh ADD hoặc ADC Nó cũng được reset bởi phần cứng khi thực hiện những lệnh trên
H = 0: không có half carry xuất hiện
H = 1: có half carry xuất hiện
Bit này được kiểm tra bằng lệnh JRH hoặc JRNH bit H rất có ích trong chương trình BCD
Bit I (interrup mask): Bit này được lập bởi phần cứng khi bước vào interrup hoặc bằng phần mềm
để khóa tất cả interrup ngoại trừ interrup mềm TRAP Bit này được xóa bởi phần mềm
I = 0: cho phép ngắt
I = 1: cấm ngắt
Bit này được điều khiển bởi lệnh RIM,SIM,IRET và được kiểm tra bởi lệnh JRM và JRNM
Bit N (Negative): Bit này được set và clear bởi phần cứng nó biểu diễn dấu kết của quả của phép toán số học , nó chính là bit thứ 7 của kết quả
0: kết quả của phép tính cuối cùng là dương hoặc bằng 0
1: kết quả của phép tính cuối cùng là âm
Bit này được truy suất bởi lệnh JRMI và JRPL
Bit Z (zero): Bit này được lập và xóa bởi phần cứng bit này chỉ ra rằng kết quả của phép toán là 0 0: kết quả phép toán khác không
1: kết quả phép toán bằng không
Bit này được truy xuất bởi lệnh kiểm tra JREQ và JRNE
Trang 22TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 22
Bit C (nhớ/mượn): Bit này được lập và xóa bởi phần cứng và phần mềm nó chỉ ra rằng có tràn hoặc mượn xảy ra khi thực hiện phép toán số học
0: không có nhớ hoặc mượn xuất hiện
1: có nhớ hoặc mượn xuất hiện
Bit này được điều khiển bởi lệnh SCF, RCF và kiểm tra bởi lệnh JRC và JRNC Nó cũng bị ảnh hưởng bởi lệnh dịch và quay
STACK POINTER (SP) :
Đọc / ghi
Giá trị khởi tạo: 01FFh
Stack pointer là một thanh ghi 16 bits luôn luôn chỉ đến byte kế tiếp trong vùng stack Nó bị giảm
đi sau khi đẩy dữ liệu vào vùng stack và tăng lên sau khi lấy dữ liệu ra khỏi vùng stack( Figure 11) Vùng stack có 128 bytes có địa chỉ từ 0180h tới 01FFh Sau khi reset MCU hay sau lệnh reset stack(RSP) con trỏ stack chứa giá trị 01FFh( bit sp0 đến sp6 được lập) ở địa chỉ cao nhất của vùng stack
Chú ý: khi vượt qua địa chỉ thấp của vùng stack(0180h) con trỏ stack sẽ chỉ đến địa chỉ cao nhất của stack(01FFh) , vì vậy dữ liệu trước đó sẽ bị ghi đè lên và bị mất Trường hợp tương tự khi stack vượt qua địa chỉ cao nhất của stack
Stack thường dùng để lưu địa chỉ trả về khi gọi chương trình con (trả về PC của lệnh tiếp theo lời gọi chương trình con ) và ngữ cảnh CPU( PC+X+A+CC) khi có interrup
Trang 23TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 23
VII NGẮT
Nhân ST7 có thể bị ngắt bởi một hoặc hai yếu tố khác nhau: Các ngắt phần cứng có thể che
và ngắt phần mềm không thể che (TRAP) Lưu đồ quá trình ngắt được chỉ ra trong Figure 20 Ngắt có thể che phải được khởi động bằng cách gán 0 cho bit I để có thể được phục vụ Tuy nhiên, việc vô hiệu ngắt có thể được chốt và và tiến hành khi nó chúng được kích hoạt
Chú ý: Sau khi reset, tất cả các ngắt đề bị vô hiệu hóa
Khi một ngắt được phục vụ:
Quá trình bình thường bị đình chỉ sau khi thực thi xong lệnh hiện tại
Các thanh ghi PC, X, A và CC được lưu vào trong stack
Bit I của thanh ghi CC được gán 1 để ngăn không cho thêm lệnh ngắt nào được thực hiện
Thanh ghi PC được nạp giá trị vector ngắt của lệnh ngắt được phục vụ và lệnh đầu tiên của thủ tục phục vụ ngắt sẽ được tìm nạp
Thủ tục phục vụ ngắt nên được kết thúc bằng câu lệnh IRET để phục hồi trạng thái các thanh ghi đã được đưa vào stack Sau lệnh IRET, bit I được xóa về 0 và chương trình chính được phục hồi
Quản lí quyền ưu tiên
Mặc định, một phục vụ ngắt không thể bị ngắt quãng vì bit I được gán giá trị 1 bởi phần cứng
để bắt đầu một tác vụ ngắt
Trang 24TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 24
Trong trường hợp khi một vài ngắt được diễn ra đồng thời, quyền ưu tiên do phần cứng chỉ định sẽ quyết định một trong số đó được thực hiện trước
Ngắt và Chế độ tiết kiệm năng lượng
Tất cả các ngắt cho phép bộ xử lí thoát khỏi chế độ tiết kiệm năng lương WAIT Chỉ có một
số các ngắt ngoại có khả năng cho phép bộ xử lí thoát khỏi chế độ tiết kiệm năng lượng HALT
1 Ngắt mềm không che được
Ngắt này được bắt đầu khi câu lệnh TRAP được thực thi mà không cần quan tâm đến trạng thái của bit I Nó sẽ được phục vụ như trong lưu đồ ở Figure 20
2 Ngắt ngoại
Vector ngắt ngoại có thể được nạp vào thanh ghi PC nếu xảy ra sự kiện ngắt ngoại tương ứng
và bit I được xóa về 0 Những ngắt này cho phép bộ xử lí thoát khỏi chế độ tiết kiệm năng lượng HALT
Cực tính ngắt ngoại được chọn thông qua thanh ghi hỗn hợp hoặc thanh ghi ngắt (nếu có) Một ngắt ngoại được kích hoạt sẽ được chốt và yêu cầu ngắt sẽ tự động bị xóa khi bắt đầu thủ tục phục vụ ngắt
3 Ngắt thiết bị ngoại vi
Các cờ ngắt thiết bị ngoại vi khác nhau trong thanh ghi trạng thái có thể gây ra ngắt khi chúng được kích hoạt nếu có đủ 2 điều kiện:
Trang 25TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 25
Bit I trên thanh ghi CC có giá trị 0
Bit kích hoạt tương ứng được gán giá trị 1 trên thanh ghi điều khiển
Nếu một trong hai điều kiện trên không thỏa mãn, Ngắt sẽ bị khóa và đợi cho đến khi thỏa mãn
Xóa một yêu cầu ngắt được thực hiện theo một trong các cách sau:
Ghi giá trị 0 vào bit tương ứng trên thanh ghi trạng thái
Truy xuất thanh ghi trạng thái trong khi cờ được gán 1 và tiếp sau đó là đọc hoặc ghi một thanh ghi kết hợp
Chú ý: Quá trình xóa trên sẽ reset lại chốt nội Vì thế các ngắt đang trong trạng thái đợi sẽ bị mất nếu quá trình trên được thực thi
THANH GHI EXTERNAL INTERRUPT CONTROL (EICR)
Đọc/Ghi
Giá trị khởi tạo : 0000 0000 (00h)
Bit 7:6 = IS3[1:0] -tính nhạy ei3
Trang 26TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 26
Những bit này chỉ ra tính nhạy ngắt cho ei3 (Cổng B0) theo như bảng 6
Bit 5:4 = IS2[1:0] -tính nhạy ei2
Những bit này chỉ ra tính nhạy ngắt cho ei2 (Cổng B3) theo như bảng 6
Bit 3:2 = IS1[1:0] -tính nhạy ei1
Những bit này chỉ ra tính nhạy ngắt cho ei1 (Cổng A7) theo như bảng 6
Bit 1:0 = IS0[1:0] -tính nhạy ei0
Những bit này chỉ ra tính nhạy ngắt cho ei0 (Cổng A0) theo như bảng 6
Chú ý:
Thanh ghi 8 bit này chỉ có thể được ghi khi bit I trên thanh ghi CC được gán giá trị 1
Thay đổi độ nhạy của một ngắt ngoại sẽ xóa ngắt đang trong trạng thái chờ này Điều này có thể được sử dụng để xóa những ngắt không mong muốn đang trong trạng thái chờ
THANH GHI EXTERNAL INTERRUPT SELECTION (EISR)
Đọc/Ghi
Giá trị khởi tạo: 0000 1100 (0Ch)
Bit 7:6 = ei3[1:0] – Chọn chân ei3
Các bit này được ghi bằng phần mềm Chúng lực chọn các chân giao tiếp cổng B được sử dụng cho ngắt ngoại ei3 như bảng dưới đây
Trang 27TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 27
Bit 5:4 = ei2[1:0] – Chọn chân ei2
Các bit này được ghi bằng phần mềm Chúng lực chọn các chân giao tiếp cổng B được sử dụng cho ngắt ngoại ei2 như bảng dưới đây
1) Trạng thái reset
1) Trạng thái reset
2) PB4 không thể được sử dụng như một ngắt ngoại trong chế độ HALT
Bit 3:2 = ei1[1:0] – Chọn chân ei1
Các bit này được ghi bằng phần mềm Chúng lực chọn các chân giao tiếp cổng A được sử dụng cho ngắt ngoại ei1 như bảng dưới đây
* Trạng thái reset
Bit 1:0 = ei1[1:0] – Chọn chân ei0
Các bit này được ghi bằng phần mềm Chúng lực chọn các chân giao tiếp cổng A được sử dụng cho ngắt ngoại ei0 như bảng dưới đây
* Trạng thái reset
Bit 1:0 = Được dành sẵn
Trang 28TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 28
VIII CÁC CỔNG I/O :
1 Giới thiệu:
Các cổng I/O dùng để truyền dữ liệu Mỗi cổng có thể chứa đến 8 chân Mỗi chân đều có thể được lập trình là cổng xuất hay cổng nhập Bên cạnh đó, một số chân cụ thể còn có các chức năng khác
2 Chức năng:
Mỗi cổng đều có một thanh ghi Data (DR) và một thanh ghi Data Direction (DDR) Thanh ghi Option (OR)- Thanh ghi dùng để quy định cổng xuất hay nhập- thì có thể được cung cấp hoặc không
Mỗi chân I/O được lập trình với các bit tương ứng trên các thanh ghi DDR, DR hay OR: bit x tương ứng với chân x của cổng
Trang 29TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 29
Trang 30TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 30
Tùy vào thiết bị, có thể thiết lập một cổng I/O như là một cổng nhận tín hiệu ngắt bằng cách gán giá trị 1cho bit ORx tương ứng Ở chức năng này một tín hiệu kích cạnh hoặc một tín hiệu số trên cổng nhập sẽ sinh ra một yêu cầu ngắt thông qua vector ngắt tương ứng
Việc nhận tín hiệu kích cạnh lên hay xuống sẽ được lập trình độc lập cho mỗi vector ngắt Thanh ghi External Interrupt Control (EICR) hoặc thanh ghi hỗn hợp (Miscellaneous) sẽ điều khiển các trạng thái này, tùy vào từng thiết bị
2.2 Chế độ cổng xuất
Thiết lập một chân là cổng xuất bằng cách gán 0 cho bit DDRx tương ứng Việc ghi bit DR
sẽ gán một giá trị số vào cổng I/O thông qua chốt Việc đọc bit DR sẽ trả về giá trị được chứa trước đó
2.3 Chức năng thay thế (alternative function):
Rất nhiều cổng I/O có một hoặc nhiều chức năng alternate Việc này có thể bao gồm xuất tín hiệu từ, hoặc nhận tín hiệu vào một thiết bị ngoại vi on-chip Bảng mô tả chân sẽ mô tả tín hiệu của thiết bị ngoại vi nào có thể là tín hiệu xuất/ nhập đến cổng nào
Một tín hiệu đến từ một thiết bị ngoại vi on-chip có thể là tín hiệu xuất trên một chân I/O Để làm điều này, chúng ta sẽ kích hoạt thiết bị ngoại vi on-chip như là một cổng xuất ( thiết lập bit trong thanh ghi Control của thiết bị ngoại vi) Khi đó việc thiết lập các thiết bị ngoại vi sẽ có ưu tiên cao hơn việc thiết lập các cổng I/O tiêu chuẩn Trạng thái của cổng I/O có thể được đọc ở địa chỉ của thanh ghi Data DR của chân I/O tương ứng
Khi I/O được thiết lập chức năng alternate thì nó sẽ được thả nổi (floating), vì nếu ở trạng thái kéo lên (pull-up) sẽ làm tăng sự tiêu thụ điện năng Trước khi sử dụng I/O như một cổng nhập alternate, phải thiết lập nó không có ngắt Nếu không việc ngắt có thể bị sai lệch
Các cổng I/O mà có thể được thiết lập chức năng alternate cho cả các tín hiệu tương tự lẫn các tín hiệu số thì cần thêm một số chú ý đặc biệt Người sử dụng phải điều khiển các thiết bị ngoại vi sao cho các tín hiệu không đến cùng một thời điểm tại cùng một chân
Trang 31TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 31
4 Các chân không được sử dụng
Những chân không được sử dụng phải được gắn với các mức điện thế cố định
5 Chế độ tiết kiệm năng lượng
Có hai chế độ : Chế độ WAITvà HALT Ở các chế độ này, các cổng I/O không có bất cứ hiệu ứng hay sự thi hành nào Các ngắt ngoại sẽ giải phóng thiết bị khỏi chế độ tiết kiệm năng lượng
1.2 Các đặc điểm chính:
Bộ đếm lùi tự do khả lập trình
Reset khả lập trình
Reset (nếu watchdog được kích hoạt) khi bit T6 trở về 0
Có thể chọn reset ở chế độ HALT (tiết kiệm năng lương) (thiết lập bằng cách chỉnh sửa byte option)
Phần cứng Watchdog có thể được chọn bằng Option Byte
Trang 32TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 32
1.3 Mô tả chức năng:
Giá trị bộ đếm được chứa trong thanh ghi CR (bit T[6:0]), giảm sau mỗi 16000 chu kì máy,
và độ dài khoảng thời gian đếm có thể được lập trình bởi người sử dụng Nếu watchdog được kích hoạt ( bit WDGA có giá trị 1) và khi bộ đếm 7-bit T[6:0] đếm ngược từ 40h về 3Fh (T6 trở về 0), nó sẽ reset lai MCU ( thời gian trung bình là 30.10-6s)
Chương trình ứng dụng phải thiết lập giá trị cho thanh ghi CR trong nhữnng khoảng thời gian đều đặn để tránh việc MCU bị reset Bộ đếm được sử dụng là một bộ đếm chạy độc lập: nó đếm xuống cả khi watchdog bị vô hiệu Giá trị trong thanh ghi CR phải nằm giữa FFh và C0h :
Bit WDGA có giá trị 1 (watchdog được kích hoạt)
Bit T6 phải có giá trị 1 để MCU không bị reset
Các bit T[5:0] chứa giá trị số đếm, thể hiện khoảng thời gian còn lại trước khi watchdog reset MCU
Sau một lần reset, watchdog sẽ bị vô hiệu hóa Sau khi được kích hoạt, không thể vô hiệu hóa lại watchdog, trừ khi MCU được reset
Trang 33TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 33
1.4 Chọn WatchDog bằng phần cứng
Nếu phần cứng Watchdog được lựa chọn bởi Option Byte thì watchdog sẽ luôn được kích hoạt và bit WDGA trong thanh ghi CR sẽ không được sử dụng
1.5 Ngắt
Không sử dụng ngắt đối với thiết bị ngoại vi Watchdog
1.6 Mô tả thanh ghi điều khiển (CR)
Giá trị khởi tạo: 0111 1111 (7Fh)
Bit 7 = Bit kích hoạt WDRA
Bit này được gán giá trị là 1 bằng phần mềm và chỉ bị xóa bằng phần cứng sau khi reset Khi WDGA =1, watchdog được kích hoạt, có thể sinh tín hiệu reset MCU
WDGA =0, watchdog bị vô hiệu hóa
Bit WDGA không được sử dụng nếu watchdog đã được chọn trong Option Byte
Bit 6:0 = T[6:0] - bộ định thời 7-bit
Những bit này chứa giá trị đếm xuống MCU sẽ được reset khi nó đếm từ 40h tới 3Fh ( T6 trở về 0)
2 Bộ định thời 12 bit tự động nạp lại
2.1 Giới thiệu
Bộ định thời 12 bit tự động nạp lại có thể được sử dụng cho các mục đích nói chung về thời gian Nó dựa trên một bộ đếm lên chay độc lập 12-bit với một thanh ghi bắt tín hiệu nhập và bốn kênh ngõ ra PWM Có 6 chân giao tiếp với bên ngoài:
Bốn ngõ ra PWM
Trang 34TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 34
Chân ATIC cho chức năng bắt tín hiệu nhập
Thanh ghi bắt tín hiệu nhập 12 bit (ATICR)
Kích hoạt một quá trình bằng tín hiệu kích cạnh lên hoặc kích cạnh xuống
Có thể sử dụng ngắt IC
Trang 35TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 35
2.3 Mô tả chức năng
Chế độ PWM
Chế độ này cho phép các chân ngõ xuất PWMx sinh lên đến 4 tín hiệu Pulse Width Modulated (xung được điều chỉnh độ rộng) Các ngõ xuất PWMx có thể được kích hoạt hoặc vô hiệu bằng các bit OEx trong thanh ghi PWMCR
Tần số PWM và Duty Cycle
Bốn tín hiệu PWM có chung một tần số (fPWM) được điều khiển bởi chu kì bộ đếm và giá trị thanh ghi ATR
fPWM = fCOUNTER / (4096 – ATR)
Theo cách thức dưới đây,
Nếu fCOUNTER là 32 MHz, thì giá trị tối đa của fPWM là 8 MHz (Giá trị ATR = 4092), giá trị tối thiểu là 8 MHz ( Giá trị ATR = 0)
Nếu fCOUNTER là 4 MHz, thì giá trị tối đa của fPWM là 2 MHz (Giá trị ATR = 4094), giá trị tối thiểu là 1 MHz ( Giá trị ATR = 0)
Giá trị lớn nhất của ATR là 4094 vì nó phải thấp hơn giá trị DCR – trong trường hợp này là
4095
Lúc khởi động, bộ đếm bắt đầu đếm từ 0
Khi bộ đếm lên bị tràn (sự kiện OVF), giá trị Duty Cycle đã được nạp trước được chuyển vào thanh ghi Duty Cycle (DCR) và các tín hiệu PWMx được gán mức cao Khi bộ đếm lên đạt đến giá trị DCRx thì tín hiệu PWMx được gán mức thấp Để thu được tín hiệu trên chân PWM, thì nội dung của thanh ghi DCRx tương ứng phải lớn hơn nội dung của thanh ghi ATR
Các bit cực tính có thể được dùng để đảo ngược tín hiệu bất kì trong 4 tín hiệu xuất Quá trình đảo ngược được đồng bộ với việc tràn số đếm nếu bit TRAN trên thanh ghi TRANCR được gán giá trị 1 (giá trị khởi tạo)
Trang 36TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 36
Chế độ so sánh ngõ xuất
Để sử dụng chức năng này, nạp một giá trị 12-bit vào thanh ghi DCRxH và DCRxL Khi bộ đếm lên CNTR đạt đến giá trị chứa trong các thanh ghi DCRxH và DCRxL, bit CMPF trong thanh ghi PWMxCSR sẽ được gán 1 và một yêu cầu ngắt được sinh nếu bit CMPIE được gán 1 Chú ý: Chức năng so sánh ngõ xuất chỉ có hiệu lực khi giá trị DCRx khác 0 (giá trị khởi tạo)
Chức năng Gián đoạn (Break)
Chức năng Gián đoạn được sử dụng để shutdown trong tình trạn khẩn cấp
Chức năng Gián đoạn được kích hoạt bởi một chân BREAK (tích cực mức thấp) Để sử dụng chân BREAK thì trước đó phải gán giá trị 1 cho bit BPEN trong thanh ghi BREAKCR bằng phần mềm
Khi chân BREAK xuất hiện giá trị mức thấp, bit BA sẽ được gán 1 và chức năng Gián đoạn
sẽ được kích hoạt
Phần mềm có thể gán giá trị 1 cho bit BA để kích hoạt chức năng gián đoạn mà không cần sử dụng chân BREAK
Khi chức năng gián đoạn được kích hoạt (Bit BA = 1):
Khuôn mẫu Gián đoạn (Các bit PWM[3:0] trong thanh ghi BREAKCR) được gán vào các chân xuất PWMx (sau khi qua bộ đảo)
Bộ đếm 12 bit PWM được gán giá trị khởi tạo
ARR, DCRx và các thanh ghi tương ứng được gán giá trị khởi tạo
Thanh ghi PWMCR được reset
Khi chức năng Gián đoạn bị vô hiệu sau khi thực hiện gián đoạn (bit BA được chuyển từ 1 sang 0), việc điều khiển các ngõ xuất PWM được chuyển sang cho các thanh ghi Ngõ giao tiếp (Port Register)
Trang 37TÀI LIỆU HƯỚNG DẪN SỬ DỤNG ST7 – ST GROUP 37