Cơ chế được sử dụng để bảo vệ thanh ghi trạng thái, sreg, trong bộ vi điều khiển AVR là gì? RETI
ngụ ý rằng các bit này không nằm trong ngăn xếp. Là một trong những mục đích chung đăng ký cũng sreg hoặc một cái gì đó như thế?Bảo quản sreg trong AVR ngắt
8
A
Trả lời
11
Điều này được giải thích trong mọi biểu dữ liệu AVR. Ví dụ trên trang 8 của số ATtiny2313 datasheet nó nói:
Thanh ghi trạng thái không tự động được lưu khi nhập gián đoạn. Điều này phải được xử lý bằng phần mềm.
Bạn có thể đạt được điều này bằng cách lưu trữ nó trong một thanh ghi tạm thời:
interrupt:
in r16, SREG ; save SREG
...
out SREG, r16 ; restore SREG
reti
Cũng lưu ý rằng nếu bạn đang truy cập đăng ký mà không được độc quyền sử dụng trong thói quen ngắt này, bạn cần phải lưu những, quá. Ngoài ra bạn còn có thể đẩy giá trị của SREG để ngăn xếp nếu bạn thấp trên thanh ghi:
interrupt:
push r16 ; save global registers on stack
push r17
push r18
in r16, SREG ; save SREG
push r16 ; do this if you want to use r16 in your interrupt routine
...
pop r16 ; do this if you pushed SREG above
out SREG, r16 ; restore SREG
pop r18 ; restore global registers
pop r17
pop r16
reti
Để biết thêm thông tin tìm here.
1
Ngoài ra
PUSH Rn
LDS Rn, SREG
PUSH Rn
và
POP Rn
STS SREG, Rn
POP Rn
có vẻ là hợp lệ.
Các vấn đề liên quan
- 1. Lập trình AVR, xử lý ngắt
- 2. Sao chép từ văn bản sang div, bảo quản ngắt dòng
- 3. Bảo quản số lớn
- 4. AMQP/RabbitMQ người gửi trong AVR (Arduino)
- 5. Bảo quản lệnh YAML perl
- 6. Bảo tồn ngắt dòng trong định dạng CSS Eclipse
- 7. AVR Studio 5: biên dịch C++
- 8. Bảo quản bố cục bàn phím trong ứng dụng xoay?
- 9. 'Script Table là' trong SSMS Không bảo quản Collation
- 10. Trường hợp bảo quản tìm/thay thế trong Visual Studio
- 11. Bảo quản khoảng trắng trong tùy chọn chọn HTML
- 12. Bảo quản trường hợp tiêu đề trong ExpressionEngine?
- 13. AVR so sánh tương tự + nội bộ pullup?
- 14. Ngắt nối tiếp Arduino
- 15. Điểm ngắt sẽ không bị ngắt trong Silverlight
- 16. Viết dữ liệu không được bảo quản mã hóa
- 17. Dấu ngoặc bảo quản chuỗi phân chia Regex
- 18. Biến số phiên PHP Không được bảo quản
- 19. bảo mật và quản lý phiên làm việc của áo
- 20. Không tăng :: asio :: io_service bảo quản thứ tự xử lý?
- 21. Bảo quản trạng thái theo phương pháp mở rộng
- 22. Bảo quản chế độ xem bóng loáng khi tẩy
- 23. Vòng ngắt trong khi ngắt thực sự
- 24. Bảo quản khay nhớ tạm trên tải VSTO
- 25. Xuân quản lý xác thực lỗ hổng bảo mật
- 26. DDS Interpolation - 8bit Atmel AVR ASM tới 12 bit DAC
- 27. Bảo quản tin nhắn JSF sau khi chuyển hướng
- 28. Cách quản lý phụ thuộc hình ảnh docker (bảo trì)
- 29. PHP SimpleXML không bảo toàn ngắt dòng trong thuộc tính XML
- 30. tín hiệu xử lý trong C - ngắt trong ngắt
Thanh ghi trạng thái không phải là mục đích chung. Nó nằm trong tập tin đăng ký I/O và có thể được truy cập bằng cách sử dụng lệnh 'in' và' out'. –