Tài liệu Bộ điều khiển MCU - Pdf 93

Bộ điều khiển MCU

Trong phần này mình sẽ trình bày về các vấn đề sau :
1. Bootloader : Chế độ đọc trong lúc nạp
2. Sleep - Power down : Chế độ ngủ và chế độ giảm công suất .........
3. Chế độ hoạt động - trạng thái làm việc của ALU, con trỏ SP.
4. Chế độ hoạt động đặc biệt của Timer/Counter 2 qua thanh ghi điều
khiển ASSR
5. Chế độ Reset cả 2 bộ Timer/Counter 0 và Timer/Counter 1 qua thanh
ghi điều khiển SFIOR
6. Chế độ kiểm tra lỗi trên chip On-chip Debug
7. Chế độ ngắt ngoài của MCU
8. Chế độ trên thanh ghi SPMCR Bộ điều khiển MCU

1.3.1 ALU – Arithmetic Logic Unit - Đơn vị xử lý số học và logic

AVR ALU hiệu năng cao tác động trựuc tiếp tới 32 thanh ghi đa năng. Trong
vòng 1 chu kỳ, các toán hạng số học thực hiện giữa các thanh ghi đa năng hoặc giữa
một thanh ghi và một toán hạng tức thời. Các toán tử của ALU được chia làm 3 loại
• Bit 5 – H: Half Carry Flag
Cờ nhớ một nửa dùng cho các toàn hạng hạng một nửa byte trong các phép toán
số học. Cờ H sử dụng phép toán số học với số BDC .

• Bit 4 – S: Sign Bit, S = N

V – bit dấu
Bit S là phép XOR giữa cờ âm và cờ tràn V .

• Bit 3 – V: Two’s Complement Overflow Flag – cờ tràn mã bù 2
Cờ tràn V hỗ trợ phép toán số bù 2.

• Bit 2 – N: Negative Flag – cờ âm
Cờ âm N hiển thị kết quả âm của phép toán logic hoặc số học.

• Bit 1 – Z: Zero Flag
Cờ Zero Z hiển thị kết quả bằng 0 của phép toán logic hoặc số học.

• Bit 0 – C: Carry Flag
Cờ nhớ C hiển thị số nhớ trong phép toán logic hoặc số học.

Hình 1.6 Sơ đồ các thanh ghi của con trỏ

1.3.5 Reset and Interrupt Handling - điều khiển ngắt và reset

AVR cung cấp 1 vài nguồn ngắt khác nhau. Các ngắt này và vector reset riêng
biệt có vector chương trình riêng biệt nằm trong không gian nhớ chương trình. Tất cả
các ngắt được chỉ định bởi các bit cho phép riêng biệt mà các bit này phải được ghi
mức logic 1 cùng với bit cho phép ngắt toàn cục trong thanh ghi trạng thái để cho phép
ngắt. Phụ thuộc vào giá trị PC, các ngắt này phải được tự động loại bỏ khi các bit Boot
Lock - BLB02 or BLB12 - được lập trình. Yếu tố này cải thiện độ an toàn phần mềm.
Địa chỉ thấp nhất trong không gian bộ nhớ chương trình được mặc định là Reset
và Interrupt Vectors. Bảng vector ngắt – bảng 3.1.
Bộ điều khiển MCU


tự ưu tiên.
+ Loại ngắt thứ 2 sẽ kích hoạt kéo dài trong thời gian điều kiện ngắt tồn tại. Các
ngắt này không cần thiết phải có cờ ngắt. Nếu điều kiện ngắt mất đi trước khi ngắt
được cho phép, thì ngắt sẽ không xảy ra.
Khi AVR thoát khỏi từ một ngắt, nó sẽ luôn trở về chương trình chính và thực
hiện một hoặc nhiều lệnh trước khi một ngắt nào đó còn đợi đó được phục vụ.
Chú ý rằng các thanh ghi trạng thái không tự động lưu trữ khi nhập vào một
thường trình ngắt, và cũng không lưu trữ lại khi trở về từ một thường trình ngắt. Điều
này phải được thực hiện bởi phần mềm.
Khi sử dụng câu lệnh CLI để cấm ngắt, các ngắt sẽ không được tác động ngay
lập tức. Không có ngắt nào được thực hiện sau khi thực hiện lệnh CLI, thậm chí nó xảy
ra cùng lúc với lệnh CLI.

Thời gian đáp ứng của 1 ngắt
Việc thực hiện ngắt trong ít nhất 4 chu kỳ đồng hồ với tất cả các ngắt. Sau 4 chu
kỳ đồng hồ, địa chỉ vector chương trình tương ứng với thường trình điều khiển ngắt
thực sự được khởi tạo. Trong thời gian 4 chu kỳ này, PC được cất vào trong ngăn xếp.
Vector thường là lệnh nhảy đến thường trình ngắt và lệnh nhảy này mất 3 chu kỳ đồng
hồ. Nếu một ngắt xảy ra trong khi thực hiện một lệnh nhiều chu kỳ thì lệnh được hoàn
thành trước khi ngắt được phục vụ. Nếu một ngắt xảy ra khi MCU đang trong chế độ
ngủ thì thời gian đáp ứng ngắt sẽ tăng thêm 4 chu kỳ. Thời gian tăng thêm này là thời
gian để khởi động lại từ chế độ ngủ.
Sự trở về từ một thường trình điều khiển ngắt mất 4 chu kỳ xung nhịp. Trong
thời gian 4 chu kỳ này, PC (2 bytes) được lấy ra từ ngăn xếp, SP được tăng lên 2, và bit
I trong SREG được đặt.

Bộ điều khiển MCU

Chế độ hoạt động và trạng thái làm việc của ALU và con trỏ SP


phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hợc bằng 60H (0x60)
vì 5FH trỏ lại là vùng các thanh ghi.
Bộ điều khiển MCU 3.Ngắt và lập trình ngắt. ( con trỏ SP - bộ đếm chương trình PC - ngắt )
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng
sẵn xàng cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được
một byte nó sẽ báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được
một byte thì cờ TX được thiết lập…
Phục vụ ngắt:
Nếu như ngắt đó được cho phép thực hiện thì:
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và
lưu vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới
vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp
lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục
thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường
hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó
lại và thực hiện lần lượt các ngắt theo mức ưu tiên.Trong khi đang thực hiện
ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp.Trường hớp ngắt này có
mức ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà có mức ưu tiên thấp hơn
thì nó sẽ bị bỏ qua.
Trong tài liệu của hãng sản xuất không thấy nói tới bộ nhớ ngăn xếp?vâng nó
là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy nhập vào SRAM
thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo kiểu
ngăn xếp thì ta dùng con trỏ SP.Con trỏ này là một thanh ghi 16 bit và được truy
nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) và
SPH:0x3E/0x5E.
Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được
lưu vào ngăn xếp trong khi con trỏ ngăng xếp giảm hai vị trí.Và con trỏ ngăn


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status