LỜI NÓI ĐẦUĐề tài “Thiết kế và thi công hệ thống thực hành vi điều khiển H8 phục vụ cho môn học hệ thống nhúng” được phát triển mở rộng dựa trên Starter Kit H8SX1582 của hãng Renesas, có
Trang 1LỜI NÓI ĐẦU
Đề tài “Thiết kế và thi công hệ thống thực hành vi điều khiển H8 phục vụ cho môn học hệ thống nhúng” được phát triển mở rộng dựa trên Starter Kit H8SX1582 của hãng Renesas, có thể sử dụng làm tài liệu để hổ trợ nghiên cứu cách lập trình các ứng dụng cho môn học hệ thống nhúng cho sinh viên hệ Đại học Đề tài bao hàm các bài thí nghiệm cô động đối với vi điều khiển H8SX1582, ở mỗi bài thí nghiệm đều có tóm tắt lại lý thuyết của vi điều khiển này
Chúng tôi xin chân thành cảm ơn lãnh đạo Trường Đại học Lạc Hồng và lãnh đạo khoa Điện - Điện Tử đã tạo mọi điều kiện thuận lợi để đề tài này được thực hiện hoàn tất
Trang 2Bài 1 : Biên dịch và debug một chương trình đơn giản 11 Bài 2 : Khảo sát các port I/O – lập trình quét 8 led đơn 25
Bài 5 : Sử dụng module LCD của RSKH8SX1582 56 Bài 6 : Khảo sát bàn phím ma trận 4x4
Trang 3CHƯƠNG 1: GIỚI THIỆU BỘ THỰC HÀNH HỆ THỐNG NHÚNG TRÊN KIT RSKH8SX1582
Phần cứng hệ thống bao gồm :
• Kit vi điều khiển H8SX1582 (gọi tắt kit RSK – Renesas Starter Kit)
• Board mở rộng Kit RSK sẽ được gắn trực tiếp trên board này và có thể tháo ra để
sử dụng kit RSK cho mục đích khác
• GIỚI THIỆU KIT RSK
Phần cứng chi tiết có thể xem chi tiết trên CD của Renesas Kit RSK sau đã được gắn thêm một số linh kiện
Trang 4Hình 1: Giao diện mặt TOP của RSK
Trang 5Hình 2: Giao diện mặt BOTTOM của RSK
Trang 6• HƯỚNG DẪN SỬ DỤNG BOARD MỞ RỘNG
Board mở rộng sử dụng nguồn cung cấp 5VDC (biến đổi từ nguồn 220VAC) Trên board có jack đưa ra 5VDC để cấp cho kit RSK Kit RSK có thể gắn vào hoặc tháo ra dễ dàng trên board mở rộng
• Giới thiệu giao diện
• Giao diên board mở rộng – hình 3
• Giao diện kết nối giữa RSK và board mở rộng – hình 4
• Module ứng dụng lập trình – hình 5: động cơ bước; led ma trận; cảm biến nhiệt; cảm biến độ ẩm; loa tín hiệu buzzer
Trang 7•
Module bàn phím 4x4 – hình 6
Hình 3 : Giao diện board mở rộng
Trang 8Hình 4 : Kết nối hoàn chỉnh giữa RSK và board mở rộng
Trang 9Hình 5 : Các module ứng dụng
Hình 6 : Module bàn
phím 4x4
Trang 10• Sơ đồ mạch
Hình 7 : Giao tiếp 8 led đơn
Trang 11Hình 8 : Giao tiếp led ma trận 8x8 hai màu đỏ - xanh
Hình 9: Giao tiếp bàn phím 4x4
Hình 10: Giao tiếp cảm biến nhiệt độ - độ ẩm – loa buzzer
Trang 12Hình 11: Mạch
giao tiếp điều khiển động cơ bước
Trang 13Hình 12: Mạch nguồn chuyển đổi 220VAC 5VDC/1.5A
Trang 14CHƯƠNG 2: CÁC BÀI THÍ NGHIỆM LẬP TRÌNH
NHÚNG TRÊN KIT RSKH8SX1582
Trong chương này sẽ trình bày 7 bài thí nghiệm từ đơn giản đến nấng cao, từ đơn lẻ đến tổng hợp cả hệ thống Ngôn ngữ chính để lập trình là C/C++
Trang 15CHƯƠNG 3: TỔNG QUAN HỌ H8 VÀ H8SX1582
Với sự phát triển nhanh chóng công nghệ điện tử ngày nay thì có rất nhiều loại
vi điều khiển của nhiều hãng khác nhau Trong đó, Renesas nổi lên như là một nhà cung cấp hàng đầu thế giới về vi điều khiển Với họ vi điều khiển hiệu năng cao H8 tiêu thụ công suất thấp và có thể ứng dụng trong công nghiệp, thông tin, y khoa… cho thấy đây cùng là một dòng vi điều khiển khá mạnh Khi so với các dòng vi điều khiển quen thuộc như 8951, AVR, PIC thì H8 của Renesas khá mới
mẻ, chưa phổ biến ở Việt Nam
Tuy nhiên trong khoảng 3 năm trở lại đây, sự tài trợ mạnh mẽ của Renesas vào Việt Nam với phòng thí nghiệm Renesas ở trường Đại Học Bách Khoa TPHCM,
tổ chức cuộc thi Renesas Micom Car Rally tại trường Đại Học Tự Nhiên TPHCM,
và tài trợ cho Học Viện CNBCVT các H8SX development kit thì H8 đã không còn
là cái tên lạ lẫm đối với giới sinh viên nói riêng và giới IT Việt Nam nói chung, Vi điều khiển H8 ngày càng chứng tỏ những thế mạnh vượt trội của nó như: tốc độ
xử lý nhanh (có thể đạt 24MHz), có vùng nhớ khá lớn (bộ nhớ nội có thể lên tới 16MB) giúp bạn thoải mái khi viết code khi không còn lo lắng về giới hạn bộ nhớ,
bố sung thêm nhiều chức năng như: bộ chuyển đổi tương tự-số (ADC), bộ điều khiển DMAC,… Do đó, H8 đang ngày càng được ứng dụng rộng rãi trong mọi lĩnh vực liên quan đến các thiết bị điện tử, từ những ứng dụng đơn giản như: ti vi, máy giặt, lò vi ba… cho đến những ứng dụng phức tạp như các dây chuyền sản xuất tự động, các xe hơi đời mới (điều khiển phanh, nhiên liệu, túi khí,…)… H8 bao gồm các dòng vi điều khiển 8-bit, 16-bit và 32-bit Có cấu trúc tương tự như PDP-11 của DEC (Digital Equipment Corp), bao gồm các dòng nổi bật sau:
• Giới thiệu về H8SX1582
• Đặc điểm chính
H8SX/1582, một vi điều khiển trong họ H8, được giới thiệu là một vi điều khiển hiệu năng cao, đa năng và tiêu thụ công suất thấp có một số đặc điểm sau:
Trang 16• CPU 32 bit tốc độ cao
• Có 8 thanh ghi đa năng 32 bit (Có thể sử dụng thành 16 thanh ghi 16 bit hay
16 thanh ghi 8 bit)
• Tập lệnh gồm 87 lệnh
• Có 11 chế độ định địa chỉ
• Hai thanh ghi cơ sở : Vector base register và Short address base register
• Có khả năng mở rộng vùng nhớ chương trình và dữ liệu đến 4 Gbyte
• Hoạt động tốc độ cao: Hầu hết các lệnh thông dụng được thực hiện trong 1 hoặc 2 chu kỳ máy Đặc biệt hỗ trợ một số lệnh
• Nhân 2 thanh ghi 8 bit trong thời gian 1 chu kỳ máy
• Chia thanh ghi 16 bit cho thanh ghi 8 bit trong 10 chu kỳ máy
• Nhân 2 thanh ghi 32 bit trong 5 chu kỳ máy
• Chia thanh ghi 32 bit cho thanh ghi 16 bit hay 32 bit trong 18 chu kỳ máy
• Nhân 2 thanh ghi 16 bit trong 1 chu kỳ máy
• Có khả năng mở rộng các thiết bị ngoại vi nhờ
• Bộ điều khiển DMA (DMAC)
• Bộ điều khiển chuyển dữ liệu (DTC)
Trang 17• Bộ đếm thời gian 16 bit (TPU: Timer Pulse Unit)
• Bộ tạo xung có thể lập trình được (Programmable Pulse Generator: PPG)Watch dog timer (WDT)
• Truyền dữ liệu nối tiếp đồng bộ và bất đồng bộ ADC 10 bit
• Bộ nhớ được tích hợp bên trong chip với H8SX1582 là 256Kbytes ROM và 12Kbytes RAM
• Có 65 port I/O đa năng và 17 port nhập
• Kích thước nhỏ gọn 14mmx14mm tiêu thụ công suất thấp
• Sơ đồ khối:
Vi mạch gồm có tất cả 120 chân chia thành 13 port bao gồm Port 1 đến Port 6, Port A, B, D, H, I, J, K Trong đó Port 1 đến Port 3 và Port 6, A, D, H, I, J, K có 8 bit I/O, Port 4,5 có 8bit Input, Port B chỉ có 3 bit và Port A có 7 bit I/O cùng với 1 bit là PA7 là Input
Vi mạch có 16 ngõ vào ADC, 16 ngõ vào Interrupt, 8 ngõ ra tạo xung có khả năng lập trình độ rộng xung, 2 ngõ vào nhận dữ liệu và 2 ngõ ra dùng để truyền
dữ liệu
Trang 18Hình 3.1: Sơ đồ khối H8SX1582
• Chế độ hoạt động:
Vi mạch này có 3 chế độ hoạt động (mode 1 đến mode 3) Các chế độ hoạt động được chọn bằng cách set các chân chế độ MD0 (chân 112) và MD1 (chân 92) nhự trong bảng dưới đây:
Trang 19Bảng 3.1: Thiết lập chế độ hoạt động của MCU
Họ H8SX có bốn mode hoạt động là Normal Mode, Middle Mode, Advanced Mode, Maximum mode Tuy nhiên H8SX1582 chỉ hổ trợ Advanced Mode với vùng địa chỉ có thể xác định là 16Mbytes Trong Advance Mode có 3 chế độ: Mode 1, Mode 2 và Mode 3
Chế độ khởi đầu của vi điều khiển có thể được lựa chọn từ chế độ khởi động (mode 2) và chế độ khởi động người dùng (mode 1) để lập trình hay xóa bộ nhớ flash và chế độ khởi đầu đơn chip
• Trong chế độ khởi động người dùng (user boot mode) và chế độ khởi động (boot mode), thì bộ nhớ truy xuất nhanh (flash memory) có thể được lập trình và xóa
• Trong chế độ 3 của vi điều khiển thực hiện chế độ đơn chip mà ROM được tích hợp được phép hoạt động
Trang 20Hình 3.2: Tổ chức vùng nhớ của H8SX1582
Trang 21Các thanh ghi liên quan đến việc thiết lập chế độ hoạt động: Có hai thanh
ghi
Thanh ghi điều khiển chế độ (MDCR): xác định chế độ hoạt động hiện tại Khi MDCR được đọc, thì các trạng thái của tín hiệu ngõ vào trên chân MD1 và MD0 được chốt Trạng thái chốt này được giải phóng khi reset
Thanh ghi điều khiển hệ thống (SYSCR): điều khiển hoạt động bão hòa MAC, lựa chọn chế độ độ rộng bus cho việc đọc lệnh và chế độ hoạt động của DTC, cho phép hay cấm RAM nội và các thanh ghi điều khiển bộ nhớ flash
• Thanh ghi:
Trang 22Hình 3.3: Các thanh ghi của H8SX1582H8SX1582 có hai loại thanh ghi là thanh ghi đa năng và thanh ghi điều khiển Thanh ghi điều khiển bao gồm: Bộ đếm chương trình (PC: Program Count) 32 bit, thanh ghi điều khiển mở rộng 8 bit, thanh ghi mã điều kiện (CCR) 8 bit, thanh ghi vector cơ sở (VBR) 32 bit, thanh ghi cơ sở địa chỉ ngắn (SBR) 32 bit và thanh ghi tích lũy nhân (MAC) 64 bit Hình 3.3 trình bày toàn bộ các thanh ghi đa năng và thanh ghi điều khiển của H8.
• Thanh ghi đa năng: H8SX có 8 thanh ghi đa năng 32-bit Các thanh ghi đa
Trang 23năng có chức năng như nhau và có thể được sử dụng làm các thanh ghi địa chỉ lẫn thanh ghi dữ liệu Khi một thanh ghi đa năng được sử dụng làm các thanh ghi dữ liệu, nó có thể được truy xuất như các thanh ghi 32-bit, 16-bit, hay 8-bit Cách sử dụng các thanh ghi được trình bày như hình sau:
Hình 3.4: Cách sử dụng các thanh ghi đa năngKhi thanh ghi đa năng được sử dụng như là thanh ghi 32 bit hay thanh ghi địa chỉ thì được đặt tên là ER (ER0 đến ER7)
Khi thanh ghi đa năng được sử dụng như thanh ghi 16 bit thì các thanh ghi ER được chia thành các thanh ghi 16 bit và được đặt tên là E(E0 đến E7) và R (R0 đến R7) và có tất cả 16 thanh ghi 16 bit
Khi được sử dụng là thanh ghi 8 bit thì các thanh ghi R được chia thành các thanh ghi 8 bit và được đặt tên là RH(R0H đên R7H) và RL (R0L đến R7L) và có tất cả 16 thah ghi 8 bit
Thanh ghi ER7 còn có chức năng là con trỏ ngăn xếp (SP: Stack Pointer) được ngầm sử dụng trong các xử lý ngoại lệ và lệnh nhảy đến các chương trình con
• Thanh ghi điều khiển PC: PC là một thanh ghi bộ đếm chương trình 32-bit dùng để chỉ đến địa chỉ của câu lệnh sẽ được thực thi kế tiếp Chiều dài của tất cả các câu lệnh của CPU là 16 bit (một word) hay là một bội số của 16 bit Vì vậy, bit
có trọng số nhỏ nhất sẽ được bỏ qua (Khi mã lệnh được đọc, bit này được gán là 0)
• Thanh ghi mã điều kiện (CCR: Condition-code Register): CCR là thanh ghi
8 bit chứa các thông tin trạng thái bên trong của CPU bao gồm cờ cho phép ngắt (interrupt mask) (I), các bit người dùng (user-UI,U), cờ nhớ nửa (H), cờ dấu (N),
cờ zero (Z), cờ tràn (V) và cờ nhớ (C) Các hoạt động ảnh hưởng đến các bit của CCR là các lệnh LDC, STC, ANDC, ORC và XORC Các cờ N, Z, V, C có thể được sử dụng trong các lệnh rẽ nhánh có điều kiện
• Thanh ghi vector cơ sở (VBR: Vector base Register): VBR là một thanh ghi 32-bit trong đó 20 bit cao được sử dụng, 12 bit thấp của thanh ghi này có giá trị là
Trang 240 Thanh ghi này là một địa chỉ cơ sở của bảng vector ngoại lệ ngoại trừ reset và ngoại lệ tạo bởi CPU Giá trị khởi đầu là H’0000 0000 Các nội dung của VBR bị thay đổi với câu lệnh LDC và STC
• Thanh ghi cơ sở địa chỉ ngắn SBR là một thanh ghi 32-bit mà trong đó 24 bit cao được sử dụng 8 bit thấp được đọc là các bit 0 Trong chế độ đánh địa chỉ tuyệt đối 8-bit (@aa:8), thanh ghi này được sử dụng với vai trò là địa chỉ cao Giá trị khởi tạo là H’FFFF FF00 Nội dung của SBR sẽ bị thay đổi với câu lệnh LDC
và STC
• Thanh ghi tích lũy nhân MAC là một thanh ghi 64-bit Nó lưu trữ các kết quả của các phép toán nhân và tích lũy (multiply-and-accumulate) Nó bao gồm 2 thanh ghi 32-bit là MACH và MACL 10 bit thấp của MACH được sử dụng, các bit cao còn lại được dùng mở rộng dấu (sign extended) Nội dung của MAC sẽ bị thay đổi với các câu lệnh MAC, CLRMAC, LDMAC, STMAC
• Giá trị khởi tạo (ban đầu) cho các thanh ghi: Xử lý ngoại lệ reset sẽ tải địa chỉ bắt đầu từ bảng vector vào thanh ghi PC, xóa bit T trong thanh ghi EXR xuống
0, và thiết lập bit I trong thanh ghi CCR và EXR lên 1 Các thanh ghi đa năng, MAC, và các bit khác trong thanh ghi CCR không được khởi tạo Cụ thể là, giá trị khởi đầu của con trỏ chồng stack pointer (ER7) là không xác định Chính vì vậy
mà thanh ghi SP sẽ được khởi đầu bằng một lệnh MOV.L sau khi khởi động lại
• Định dạng dữ liệu:
Dữ liệu trong các thanh ghi đa năng và trong vùng nhớ được đinh dạng như sau:
Trang 25Hình 3.5 Định dạng dữ liệu trong thanh ghi đa năng
Trang 26Hình 3.6 Định dạng dữ liệu trong vùng nhớ
• I/O Port
• Thanh ghi chỉ chiều dữ liệu
Đây là một thanh ghi 8 bit chỉ ghi, được dùng để xác định chiều dữ liệu của port
là ngõ nhập hay ngõ xuất (cho mỗi bit) Nếu được đọc ra thì thanh ghi này luôn có giá trị không xác định
Khi một port hoạt động ở chế độ I/O, chân của port trở thành ngõ xuất nếu giá trị của bit tương ứng trong thanh ghi DDR là 1; chân của port trở thành ngõ nhập nếu giá trị của bit tương ứng trong thanh ghi DDR là 0
Trang 27Hình 3.7: Thanh ghi PnDDRChú ý: Đối với port B thì 3 bit thấp của thanh ghi này là hợp lệ còn 5 bit cao không được sử dụng.
• Thanh ghi dữ liệu (PnDR)
Đây là một thanh ghi 8 bit có thể đọc, ghi Thanh ghi này được dùng để chứa
dữ liệu xuất ra ngoài khi port dùng ở chế độ ngõ xuất
Hình 3.8 Thanh ghi PnDR
Chú ý: Đối với port B thì 3 bit thấp của thanh ghi này là hợp lệ còn 5 bit cao không được sử dụng
• Thanh ghi port (PORTn)
Đây là một thanh ghi 8 bit cho biết trạng thái (0 hay là 1) các chân của port Đây là thanh ghi chỉ đọc
Khi thanh ghi PORT được đọc thì:
• Nếu bit trong thanh ghi DDR = 1 thì bit tương ứng trong thanh ghi DR sẽ được đọc
• Nếu bit trong thanh ghi DDR = 0 thì trạng thái của chân tương ứng được đọc
Hình 3.9 Thanh ghi PORTn
Trang 28Chú ý: Đối với port B thì 3 bit thấp của thanh ghi này là hợp lệ còn 5 bit cao
không được sử dụng
Bảng 3.2 Các thanh ghi của các port trong H8SX1582
Trang 29Thanh ghi chiều dữ liệu port A PADDR W H’00 H
Tên thanh ghi Tên viết tắt R/W Giá trị ban đầu
Thanh ghi chiều dữ liệu
Thanh ghi chiều dữ liệu
Thanh ghi chiều dữ liệu
Trang 30Thanh ghi chiều dữ liệu
• Bộ định thời TPU
CPU H8SX/1582 có 2 bộ định thời 16 bit (TPU): bộ định thời 0 và 1 Mỗi bộ
định thời có 6 kênh định thời 16 bit, nghĩa là có tất cả 12 kênh định thời Các kênh
định thời này có thể được dùng độc lập hoặc dùng kết hợp với các chức năng như
interval timer, PWM timer, phase counting timer
TPU có thể tạo ra các ngắt quãng, xuất ra các xung để điều khiển động cơ một
cách hiệu quả
• Các thanh ghi của bộ định thời
Các thanh ghi giới thiệu trong phần này là các thanh ghi cần thiết để sử dụng
trong chế độ interval timer
• Timer start register (TSTR)
Đây là thanh ghi 8 bit, dùng để tắt/mở bộ đếm của timer cho mỗi kênh Nếu giá
trị của bit tương ứng là 1 thì bộ đếm của kênh tương ứng sẽ bắt đầu đếm từ giá trị
hiện hành chứa trong TCNT Nếu giá trị bit tương ứng là 0 thì bộ đếm sẽ dừng lại
Hình 3 10: Thanh ghi TSTR
• Timer counter (TCNT)
Đây là thanh ghi 16 bit, được đếm lên tùy theo các thiết lập trong thanh ghi
timer control (TCR)
Trang 31Hình 3.11: Thanh ghi TCNT
• Timer general register (TGR)
TGR là thanh ghi 16 bit được sử dụng bởi TCNT và đối tượng so trùng (compare match) của nó Kênh 0 và kênh 3 mỗi kênh có 4 thanh ghi TGRA, TGRB, TGRC, TGRD Các kênh 1, 2, 4, 5, mỗi kênh có 2 thanh ghi TGRA, TGRB
Hình 3.12: Thanh ghi TGR
• Timer control register (TCR)
Đây là thanh ghi 8 bit dùng để chọn xung clock cho TCNT, chọn cạnh khi sử dụng clock ngoài, chọn nguồn xóa bộ đếm
Hình 3.13: Thanh ghi TCR
Trang 32• Timer status register
Đây là thanh ghi 8 bit cho biết trạng thái của mỗi kênh
Hình 3.14: TSR cho kênh 0,3
Hình 3.15: TSR cho kênh 1,2,4,5
• Timer interrupt enable register (TIER)
Đây là thanh ghi 8 bit đùng để cho phép hoặc cấm interrupt gây ra bởi TGF trong thanh ghi TSR
Hình 3.16: TIER cho kênh 0,3
Trang 33Hình 3.17 TIER cho kênh 1,2,4,5
Yêu cầu ngắt quãng từ TPU được điều khiển bởi cờ TSR và bit cho phép ngắt quãng trong thanh ghi TIER Để kết thúc ngắt quãng thì một trong 2 bit trên phải có giá trị 0 Thông thường khi xảy ra ngắt quãng thì cờ TSR sẽ được xóa để cho phép lần ngắt quãng kế tiếp xảy ra
• Timer I/O control register (TIOR)
Thanh ghi này dùng để lựa chọn chức năng của TGR
Có 4 thanh ghi TGR cho kênh 0 và kênh 3, do đó có 2 thanh ghi TIOR (H và L), tổng cộng 16 bit cho mỗi kênh 0 hoặc 3
Hình 3.18: Thanh ghi TIOR
• Cách sử dụng bộ định thời:
Trang 34Chẳng hạn cần bộ định thời hoạt động theo yêu cầu sau:
• Chu kỳ của bộ định thời là 10ms
• Chế độ điều khiển ngắt quãng 0
• CPU clock là 24MHz
Để thực hiện yêu cầu trên sử dụng bộ định thời TPU bằng cách sử dụng một giá trị so trùng để xóa bộ đếm Thiết lập cho TPU như sau:
• Sử dụng TGRA làm chu kỳ đếm (10ms)
• Xóa TCNT bằng cách so trùng với TGRA
• Tạo ra ngắt quãng khi số đếm trùng với TGRA
Trạng thái hoạt động của TPU được biểu diễn bởi hình vẽ sau đây
Hình 3.19: Trạng thái hoạt động của TPU
Ngoài ra còn nhiều cách sử dụng TPU có thể tham khảo thêm trong datasheet của
H8SX1582 trên trang web www.renesas.com
• ADC
Trang 35Con Vi điều khiển này có hai bộ chuyển A/D 10 bit kế tiếp giống nhau (bộ 0 và
bộ 1) có thể cho phép ta lựa chọn tới 16 kênh ngõ nhập tuần tự
Hai chế độ hoạt động:
o Chế độ đơn: Chuyển đổi A/D đơn kênh
o Chế độ scan: Chuyển đổi A/D liên tục trên 1 đến 4 kênh, hoặc trên 1 đến 8 kênh
• Các thanh ghi của bộ A/D
• Thanh ghi dữ liệu A/D (ADDRA tới ADDRH)
Có 8 thanh ghi ADDR 16 bit chỉ đọc, ADDRA tới ADDRH, dùng để chứa kết quả của bộ chuyển A/D Các thanh ghi ADDR sẽ chứa kết quả chuyển của từng kênh tương ứng, được mô tả ở bảng 8.2
Dữ liệu 10 bit đã chuyển được lưu ở các bit 15 tới 6 6 bit dữ liệu thấp luôn được đọc là 0
Bus dữ liệu giữa bộ chuyển A/D và CPU có độ rộng 16 bit Dữ liệu có thể được đọc trực tiếp từ CPU ADDR không được truy xuất từng 8 bit một mà phải truy xuất cả 16 bit
Hình 3.20: Thanh ghi dữ liệu ADDR
• Thanh ghi điều khiển/trạng thái A/D (ADCSR) ADCSR điều khiển tác vụ chuyển A/D
Hình 3.21 Thanh ghi điều khiển/trạng thái
Trang 36Các bit trong thanh ghi có ý nghĩa như sau:
Trang 37• Thanh ghi điều khiển A/D (ADCR):
ADCR cho phép việc chuyển A/D được khởi động bởi tín hiệu bên ngoài
Hình 3.22: Thanh ghi ADCR
Ý nghĩa của các bit như sau:
Trang 38• Các hoạt động của bộ A/D:
Trong chế độ đơn, việc chuyển A/D chỉ được thực hiện một lần trên ngõ nhập tuần tự là một kênh đơn được chỉ định
• Việc chuyển A/D cho kênh được chọn bắt đầu khi bit ADST được lập lên 1 bởi phần mềm hoặc tín hiệu ngoại
• Khi việc chuyển A/D hoàn thành, kết quả sẽ được trả về cho thanh ghi dữ liệu A/D tương ứng của kênh
• Khi việc chuyển A/D hoàn thành, bit ADS trong ADCSR được lập lên 1 Nếu bit ADIE được lập lên 1 trong cùng thời điểm, một yêu cầu ngắt quãng ADI
sẽ được phát ra
• Bit ADST vẫn là 1 trong khi chuyển A/D, và nó tự động được xóa về 0 khi việc chuyển A/D kết thúc Bộ chuyển A/D vào trạng thái chờ Nếu bit ADST được
Trang 39xóa về 0 trong khi đang chuyển, việc chuyển đổi sẽ dừng ngay lập tức và bộ chuyển vào trạng thái chờ
Hình 3.23: Chế độ hoạt động đơn của A/D
Chế độ scan : Trong chế độ scan, việc chuyển A/D sẽ được thực hiện lần lượt trên 4 hoặc 8 kênh ngõ nhập tuần tự
• Khi bit ADST trong thanh ghi ADCSR được lập lên 1 bởi phần mềm, TPU, hoặc một tín hiệu ngoại, việc chuyển A/D sẽ bắt đầu trên kênh đầu tiên của nhóm Việc chuyển A/D liên tiếp tới 4 kênh (SCANE và SCANS = B’10) hoặc tới
8 kênh (SCANE và SCANS = B’11) có thể được chọn Khi việc chuyển A/D liên tiếp được thực hiện trên 4 kênh, chuyển A/D bắt đầu từ AN0 khi CH3 và CH2 = B’00, trên AN4 khi CH3 và CH2 = B’01, trên AN8 khi CH3 và CH2 = B’10, trên AN12 khi CH3 và CH2 = B’11 Khi việc chuyển A/D liên tiếp trên 8 kênh, việc chuyển A/D bắt đầu trên AN0 khi CH3 = B’0 và trên AN8 khi CH3 = B’1
• Khi việc chuyển A/D trên từng kênh được hoàn thành, kết quả sẽ được ghi
Trang 40vào các thanh ghi ADDR tương ứng của từng kênh
• Khi việc chuyển A/D trên từng kênh được hoàn thành, bit ADF trong ADCSR được lập lên 1 Nếu bit ADIE được lập lên 1 trong cùng thời điểm, một yêu cầu ngắt quãng ADI được phát ra Việc chuyển A/D trên kênh thứ nhất của nhóm được bắt đầu lại
• Bit ADST không được xóa tự động, và bước [2] tới [3] sẽ được lặp lại cho tới khi bit ADST vẫn còn là 1 Khi bit ADST được xóa về 0, việc chuyển A/D sẽ ngừng và bộ chuyển A/D đi vào trạng thái chờ Nếu bit ADST được lập lên 1, bộ chuyển sẽ bắt đầu lại từ kênh đầu tiên
Hình 3.24: Hoạt động của A/D ở chế độ scan 3 kênh
• Interrupt
H8SX sử dụng phương pháp bảng vector để quản lý các ngoại lệ xảy ra, bao gồm reset, lỗi CPU, yêu cầu ngắt quãng từ các module ngoại vi Khi có một yêu cầu xử lý ngắt, CPU sẽ đọc địa chỉ của chương trình xử lý ngắt từ bộ nhớ (bảng vector ngắt) và gán nó cho PC
Việc chuyển đổi ngữ cảnh khi có trình xử lý ngắt được CPU thực hiện như sau :
• Push PC, CCR, EXR vào Stack (Khi reset thì không có bước này)