Bộ vi điều khiển AVR 8-bit của Atmel với Flash có thể lập trình trong hệ thống 2/4/8K byte
Đặc trưng
- Bộ vi điều khiển 8 bit AVR® hiệu suất cao, công suất thấp
- Kiến trúc RISC nâng cao
- 120 hướng dẫn mạnh mẽ - Thực hiện hầu hết các chu kỳ đồng hồ duy nhất
- 32 x 8 thanh ghi làm việc cho mục đích chung
- Hoạt động hoàn toàn tĩnh
- Bộ nhớ dữ liệu và chương trình không thay đổi
- 2/4 / 8K byte Bộ nhớ chương trình lập trình trong hệ thống Flash
- Sức bền: 10,000 chu kỳ ghi/xóa
- 128/256/512 byte EEPROM có thể lập trình trong hệ thống
- Sức bền: 100,000 chu kỳ ghi/xóa
- 128/256/512 byte SRAM nội bộ
- Khóa lập trình cho chương trình Flash tự lập trình và bảo mật dữ liệu EEPROM
Tính năng ngoại vi
- Bộ định thời / Bộ đếm 8 bit với Bộ định mức và Hai kênh PWM
- Bộ hẹn giờ / bộ đếm tốc độ cao 8 bit với bộ định mức riêng biệt
- 2 đầu ra PWM tần số cao với thanh ghi so sánh đầu ra riêng biệt
- Trình tạo thời gian chết có thể lập trình
- USI - Giao diện nối tiếp đa năng với máy dò tình trạng khởi động
- Bộ chuyển đổi ADC 10 bit
4 kênh kết thúc đơn
2 cặp kênh ADC vi sai với độ lợi có thể lập trình (1x, 20x)
Đo nhiệt độ
Bộ định thời gian giám sát có thể lập trình với Bộ dao động trên chip riêng biệt
Bộ so sánh tương tự trên chip
Các tính năng đặc biệt của vi điều khiển
debugWIRE Hệ thống gỡ lỗi trên chip
Trong hệ thống có thể lập trình qua cổng SPI
Nguồn ngắt bên ngoài và bên trong
Chế độ Chờ nguồn thấp, Giảm nhiễu ADC và Chế độ ngắt nguồn
Mạch khởi động lại nguồn nâng cao
Mạch phát hiện màu nâu có thể lập trình
Bộ dao động hiệu chỉnh nội bộ
I / O và các gói
Sáu dòng I / O có thể lập trình
PDIP 8 chân, SOIC 8 chân, QFN / MLF 20-pad và TSSOP 8-pin (chỉ ATtiny45 / V)
Hoạt động Voltage
- 1.8 - 5.5V cho ATtiny25V / 45V / 85V
- 2.7 - 5.5V cho ATtiny25/45/85
Cấp tốc độ
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
- ATtiny25/45/85: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
Phạm vi nhiệt độ công nghiệp
Tiêu thụ điện năng thấp
Chế độ hoạt động:
1 MHz, 1.8V: 300 µA
Chế độ tắt nguồn:
Cấu hình ghim
Sơ đồ chân ATtiny25/45/85
Mô tả Pin
VCC: Nguồn cungtage.
GND: Mặt đất.
Cổng B (PB5:PB0): Cổng B là cổng I/O hai chiều 6 bit với các điện trở kéo lên bên trong (được chọn cho mỗi bit). Bộ đệm đầu ra của Cổng B có các đặc tính điều khiển đối xứng với cả khả năng nguồn và độ chìm cao. Là đầu vào, các chân của Cổng B được kéo xuống thấp bên ngoài sẽ cấp nguồn nếu các điện trở kéo lên được kích hoạt. Các chân của Cổng B ở trạng thái ba trạng thái khi điều kiện đặt lại hoạt động, ngay cả khi đồng hồ không chạy.
Cổng B cũng phục vụ các chức năng của các tính năng đặc biệt khác nhau của ATtiny25 / 45/85 như được liệt kê
Trên ATtiny25, các cổng I / O có thể lập trình PB3 và PB4 (chân 2 và 3) được trao đổi trong Chế độ Tương thích ATtiny15 để hỗ trợ khả năng tương thích ngược với ATtiny15.
RESET: Đặt lại đầu vào. Mức thấp trên chân này lâu hơn độ dài xung tối thiểu sẽ tạo ra quá trình đặt lại, ngay cả khi đồng hồ không chạy và với điều kiện là chân đặt lại chưa bị vô hiệu hóa. Độ dài xung tối thiểu được đưa ra trong Bảng 21-4 trên trang 165. Các xung ngắn hơn không được đảm bảo để tạo ra một thiết lập lại.
Chân đặt lại cũng có thể được sử dụng như một chân I / O (yếu).
Quaview
ATtiny25 / 45/85 là vi điều khiển CMOS 8-bit công suất thấp dựa trên kiến trúc RISC nâng cao của AVR. Bằng cách thực hiện các lệnh mạnh mẽ trong một chu kỳ xung nhịp, ATtiny25 / 45/85 đạt được thông lượng gần 1 MIPS trên mỗi MHz cho phép nhà thiết kế hệ thống tối ưu hóa mức tiêu thụ điện năng so với tốc độ xử lý.
Sơ đồ khối
Lõi AVR kết hợp một tập lệnh phong phú với 32 thanh ghi làm việc cho mục đích chung. Tất cả 32 thanh ghi được kết nối trực tiếp với Đơn vị Logic Số học (ALU), cho phép hai thanh ghi độc lập được truy cập trong một lệnh duy nhất được thực hiện trong một chu kỳ đồng hồ. Kiến trúc kết quả là mã hiệu quả hơn trong khi đạt được thông lượng nhanh hơn đến mười lần so với vi điều khiển CISC thông thường.
ATtiny25 / 45/85 cung cấp các tính năng sau: 2/4 / 8K byte Flash lập trình trong hệ thống, 128/256/512 byte EEPROM, 128/256/256 byte SRAM, 6 dòng I / O mục đích chung, 32 dòng chung các thanh ghi làm việc mục đích, một Bộ định thời / Bộ đếm 8 bit với các chế độ so sánh, một Bộ định thời / Bộ đếm tốc độ cao 8 bit, Giao diện nối tiếp đa năng, Ngắt bên trong và bên ngoài, Bộ định thời giám sát 4 kênh, 10 bit, Bộ định thời giám sát có thể lập trình với bên trong Bộ tạo dao động và ba chế độ tiết kiệm năng lượng có thể lựa chọn phần mềm. Chế độ không hoạt động dừng CPU trong khi cho phép hệ thống SRAM, Bộ hẹn giờ / Bộ đếm, ADC, Bộ so sánh tương tự và Ngắt tiếp tục hoạt động. Chế độ tắt nguồn sẽ lưu các thanh ghi, vô hiệu hóa tất cả các chức năng của chip cho đến lần Ngắt hoặc Thiết lập lại phần cứng tiếp theo. Chế độ Giảm nhiễu ADC dừng CPU và tất cả các mô-đun I / O ngoại trừ ADC, để giảm thiểu nhiễu chuyển mạch trong quá trình chuyển đổi ADC.
Thiết bị được sản xuất bằng công nghệ bộ nhớ không bay hơi mật độ cao của Atmel. ISP Flash trên chip cho phép bộ nhớ chương trình được lập trình lại trong hệ thống thông qua giao diện nối tiếp SPI, bởi bộ lập trình bộ nhớ không bay hơi thông thường hoặc bằng mã khởi động trên chip chạy trên lõi AVR.
ATtiny25 / 45/85 AVR được hỗ trợ với bộ công cụ phát triển hệ thống và chương trình đầy đủ bao gồm: C Com- pilers, Macro Assemblers, Program Debugger / Simulators và Assess kit.
Về tài nguyên
Một bộ công cụ phát triển toàn diện, ghi chú ứng dụng và bảng dữ liệu có sẵn để tải xuống trên http://www.atmel.com/avr.
Mã Examptập
Tài liệu này chứa mã đơn giản, ví dụ:amples trình bày ngắn gọn cách sử dụng các bộ phận khác nhau của thiết bị. Những mã này cũamples giả định rằng phần tiêu đề cụ thể file được đưa vào trước khi biên dịch. Lưu ý rằng không phải tất cả các nhà cung cấp trình biên dịch C đều bao gồm các định nghĩa bit trong tiêu đề files và xử lý ngắt trong C phụ thuộc vào trình biên dịch. Vui lòng xác nhận với tài liệu trình biên dịch C để biết thêm chi tiết.
Đối với các Thanh ghi I / O nằm trong bản đồ I / O mở rộng, các hướng dẫn “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” và “SBI” phải được thay thế bằng các hướng dẫn cho phép truy cập vào I mở rộng / O. Thông thường, điều này có nghĩa là “LDS” và “STS” được kết hợp với “SBRS”, “SBRC”, “SBR” và “CBR”. Lưu ý rằng không phải tất cả các thiết bị AVR đều có bản đồ I / O mở rộng.
Cảm ứng điện dung
Thư viện Atmel QTouch cung cấp một giải pháp đơn giản để sử dụng cho các giao diện cảm ứng trên bộ vi điều khiển Atmel AVR. Thư viện QTouch bao gồm hỗ trợ cho các phương pháp thu nhận QTouch® và QMatrix®.
Cảm biến chạm dễ dàng được thêm vào bất kỳ ứng dụng nào bằng cách liên kết Thư viện QTouch và sử dụng Giao diện lập trình ứng dụng (API) của thư viện để xác định các kênh cảm ứng và cảm biến. Sau đó, ứng dụng sẽ gọi API để lấy thông tin kênh và xác định trạng thái của cảm biến cảm ứng.
Thư viện QTouch miễn phí và có thể tải xuống từ Atmel webĐịa điểm. Để biết thêm thông tin và chi tiết về việc triển khai, hãy tham khảo Hướng dẫn sử dụng Thư viện QTouch - cũng có sẵn từ Atmel webđịa điểm.
Lưu giữ dữ liệu
Độ tin cậy Kết quả đánh giá cho thấy tỷ lệ thất bại trong việc lưu giữ dữ liệu dự kiến thấp hơn nhiều so với 1 PPM trong 20 năm ở 85 ° C hoặc 100 năm ở 25 ° C.
Lõi CPU AVR
Giới thiệu
Phần này thảo luận về kiến trúc lõi AVR nói chung. Chức năng chính của lõi CPU là đảm bảo thực thi chương trình trực tiếp. Do đó, CPU phải có khả năng truy cập bộ nhớ, thực hiện tính toán, điều khiển thiết bị ngoại vi và xử lý ngắt.
Kết thúc kiến trúcview
Để tối đa hóa hiệu suất và tính song song, AVR sử dụng kiến trúc Harvard - với các bộ nhớ và bus riêng biệt cho chương trình và dữ liệu. Các lệnh trong bộ nhớ chương trình được thực thi với một đường dẫn cấp duy nhất. Trong khi một lệnh đang được thực thi, lệnh tiếp theo được tìm nạp trước từ bộ nhớ Chương trình. Khái niệm này cho phép thực hiện các lệnh trong mọi chu kỳ đồng hồ. Bộ nhớ chương trình là bộ nhớ Flash có thể lập trình lại trong hệ thống.
Đăng ký truy cập nhanh File chứa các thanh ghi làm việc cho mục đích chung 32 x 8 bit với thời gian truy cập một chu kỳ đồng hồ. Điều này cho phép vận hành Đơn vị logic số học (ALU) một chu kỳ. Trong một hoạt động ALU điển hình, hai toán hạng được xuất ra từ Thanh ghi File, hoạt động được thực hiện và kết quả được lưu trữ trở lại trong sổ đăng ký File- trong một chu kỳ đồng hồ.
Sáu trong số 32 thanh ghi có thể được sử dụng như ba con trỏ thanh ghi địa chỉ gián tiếp 16 bit để định địa chỉ Không gian dữ liệu - cho phép tính toán địa chỉ hiệu quả. Một trong những con trỏ địa chỉ này cũng có thể được sử dụng như một con trỏ địa chỉ để tra cứu các bảng trong bộ nhớ Chương trình Flash. Các thanh ghi chức năng được thêm vào này là thanh ghi X-, Y- và Z 16-bit, được mô tả sau trong phần này.
ALU hỗ trợ các phép toán số học và logic giữa các thanh ghi hoặc giữa một hằng số và một thanh ghi. Các hoạt động thanh ghi đơn cũng có thể được thực hiện trong ALU. Sau một phép toán số học, Sổ đăng ký Trạng thái được cập nhật để phản ánh thông tin về kết quả của phép toán.
Luồng chương trình được cung cấp bởi các lệnh gọi và nhảy có điều kiện và không điều kiện, có thể giải quyết trực tiếp toàn bộ không gian địa chỉ. Hầu hết các hướng dẫn AVR có một định dạng từ 16 bit duy nhất, nhưng cũng có các hướng dẫn 32 bit.
Trong các lần ngắt và lệnh gọi chương trình con, địa chỉ trả về Bộ đếm chương trình (PC) được lưu trữ trên Ngăn xếp. Ngăn xếp được phân bổ hiệu quả trong SRAM dữ liệu chung, và do đó kích thước Ngăn xếp chỉ bị giới hạn bởi tổng kích thước SRAM và việc sử dụng SRAM. Tất cả các chương trình người dùng phải khởi tạo SP trong quy trình Đặt lại (trước khi các quy trình con hoặc ngắt được thực thi). Con trỏ ngăn xếp (SP) có thể đọc / ghi trong không gian I / O. SRAM dữ liệu có thể dễ dàng được truy cập thông qua năm chế độ địa chỉ khác nhau được hỗ trợ trong kiến trúc AVR.
Các không gian bộ nhớ trong kiến trúc AVR đều là bản đồ bộ nhớ tuyến tính và thông thường.
Mô-đun ngắt linh hoạt có các thanh ghi điều khiển của nó trong không gian I / O với một bit Kích hoạt ngắt toàn cục bổ sung trong Thanh ghi Trạng thái. Tất cả các ngắt đều có một Vectơ Ngắt riêng trong bảng Vectơ Ngắt. Các ngắt có mức ưu tiên phù hợp với vị trí Véc tơ ngắt của chúng. Địa chỉ Vectơ ngắt càng thấp, mức độ ưu tiên càng cao.
Không gian bộ nhớ I / O chứa 64 địa chỉ cho các chức năng ngoại vi của CPU như Thanh ghi điều khiển, SPI và các chức năng I / O khác. Bộ nhớ I / O có thể được truy cập trực tiếp hoặc như các vị trí của Không gian dữ liệu sau các vị trí của Bộ đăng ký File, 0x20 - 0x5F.
ALU - Đơn vị logic số học
AVR ALU hiệu suất cao hoạt động kết nối trực tiếp với tất cả 32 thanh ghi làm việc đa năng. Trong một chu kỳ đồng hồ duy nhất, các phép toán số học giữa các thanh ghi mục đích chung hoặc giữa thanh ghi và thanh ghi tức thời được thực hiện. Các phép toán ALU được chia thành ba loại chính - hàm số học, logic và hàm bit. Một số triển khai của kiến trúc cũng cung cấp một hệ số nhân mạnh mẽ hỗ trợ cả phép nhân có dấu / không dấu và định dạng phân số. Xem phần “Bộ hướng dẫn” để biết mô tả chi tiết.
Đăng kí trạng thái
Thanh ghi Trạng thái chứa thông tin về kết quả của lệnh số học được thực hiện gần đây nhất. Thông tin này có thể được sử dụng để thay đổi luồng chương trình nhằm thực hiện các hoạt động có điều kiện. Lưu ý rằng Thanh ghi Trạng thái được cập nhật sau tất cả các hoạt động ALU, như được chỉ định trong Tham chiếu Tập lệnh. Điều này trong nhiều trường hợp sẽ loại bỏ nhu cầu sử dụng các hướng dẫn so sánh chuyên dụng, dẫn đến mã nhanh hơn và nhỏ gọn hơn.
Thanh ghi trạng thái không tự động được lưu trữ khi nhập một quy trình ngắt và được khôi phục khi trở lại từ một ngắt. Điều này phải được xử lý bằng phần mềm.
SREG - Đăng ký trạng thái AVR
Thanh ghi trạng thái AVR - SREG - được định nghĩa là:
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Đọc/Ghi | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - I: Kích hoạt ngắt toàn cục
Bit Kích hoạt ngắt toàn cục phải được đặt cho các ngắt được kích hoạt. Điều khiển cho phép ngắt riêng lẻ sau đó được thực hiện trong các thanh ghi điều khiển riêng biệt. Nếu Thanh ghi cho phép ngắt toàn cục bị xóa, không có ngắt nào được bật độc lập với các cài đặt cho phép ngắt riêng lẻ. I-bit bị xóa bởi phần cứng sau khi xảy ra ngắt và được đặt bởi lệnh RETI để cho phép ngắt tiếp theo. I-bit cũng có thể được thiết lập và xóa bởi ứng dụng với các hướng dẫn SEI và CLI, như được mô tả trong tham chiếu tập lệnh.
Bit 6 - T: Bộ nhớ sao chép bit
Hướng dẫn Copy Bit BLD (Bit LoaD) và BST (Bit STore) sử dụng T-bit làm nguồn hoặc đích cho bit được vận hành. Một chút từ một thanh ghi trong Sổ đăng ký File có thể được sao chép vào T bằng lệnh BST, và một bit trong T có thể được sao chép vào một bit trong thanh ghi trong Thanh ghi File theo hướng dẫn của BLĐ.
Bit 5 - H: Cờ Half Carry
Cờ Half Carry H cho biết Half Carry trong một số phép toán số học. Half Carry rất hữu ích trong số học BCD. Xem “Mô tả Bộ Hướng dẫn” để biết thông tin chi tiết.
Bit 4 – S: Bit dấu, S = N ⊕ V
S-bit luôn là một độc quyền hoặc giữa Cờ Phủ định N và Cờ Tràn bổ sung của Hai V. Xem “Mô tả Bộ Hướng dẫn” để biết thông tin chi tiết.
Bit 3 - V: Cờ tràn bổ sung của Two
Cờ tràn phần bù của hai V hỗ trợ số học phần bù của hai. Xem “Mô tả Bộ Hướng dẫn” để biết thông tin chi tiết.
Bit 2 - N: Cờ phủ định
Cờ phủ định N cho biết kết quả âm trong phép toán số học hoặc logic. Xem “Mô tả Bộ Hướng dẫn” để biết thông tin chi tiết.
Bit 1 - Z: Cờ Zero
Cờ Zero Z cho biết kết quả bằng XNUMX trong một phép toán số học hoặc logic. Xem “Mô tả Bộ Hướng dẫn” để biết thông tin chi tiết.
Bit 0 - C: Cờ Carry
Cờ Carry C biểu thị một thực hiện trong một phép toán số học hoặc logic. Xem “Mô tả Bộ Hướng dẫn” để biết thông tin chi tiết.
Sổ đăng ký mục đích chung File
Sổ đăng ký File được tối ưu hóa cho tập lệnh RISC Nâng cao AVR. Để đạt được hiệu quả và tính linh hoạt cần thiết, các sơ đồ đầu vào / đầu ra sau đây được Đăng kiểm hỗ trợ File:
Một toán hạng đầu ra 8 bit và một đầu vào kết quả 8 bit
Hai toán hạng đầu ra 8 bit và một đầu vào kết quả 8 bit
Hai toán hạng đầu ra 8 bit và một đầu vào kết quả 16 bit
Một toán hạng đầu ra 16 bit và một đầu vào kết quả 16 bit
Hình 4-2 cho thấy cấu trúc của 32 thanh ghi làm việc mục đích chung trong CPU.
Như thể hiện trong Hình 4-2, mỗi thanh ghi cũng được gán một địa chỉ Bộ nhớ dữ liệu, ánh xạ chúng trực tiếp vào 32 vị trí đầu tiên của Không gian dữ liệu người dùng. Mặc dù không được thực hiện vật lý như các vị trí SRAM, tổ chức bộ nhớ này cung cấp tính linh hoạt cao trong việc truy cập các thanh ghi, vì các thanh ghi con trỏ X-, Y- và Z có thể được thiết lập để lập chỉ mục bất kỳ thanh ghi nào trong file.Hầu hết các hướng dẫn hoạt động trên Đăng ký File có quyền truy cập trực tiếp vào tất cả các thanh ghi, và hầu hết chúng đều là các lệnh chu trình.
Thanh ghi X, thanh ghi Y và thanh ghi Z
Thanh ghi R26..R31 có một số chức năng được bổ sung cho mục đích sử dụng chung của chúng. Các thanh ghi này là các con trỏ địa chỉ 16 bit để định địa chỉ gián tiếp cho không gian dữ liệu. Ba thanh ghi địa chỉ gián tiếp X, Y và Z được định nghĩa như mô tả trong Hình 4-3.
Trong các chế độ định địa chỉ khác nhau, các thanh ghi địa chỉ này có các chức năng như dịch chuyển cố định, tăng tự động và giảm tự động (xem phần tham khảo tập lệnh để biết thêm chi tiết).
Con trỏ ngăn xếp
Ngăn xếp chủ yếu được sử dụng để lưu trữ dữ liệu tạm thời, lưu trữ các biến cục bộ và lưu trữ địa chỉ trả về sau khi ngắt và các lệnh gọi chương trình con. Thanh ghi con trỏ ngăn xếp luôn trỏ đến đầu ngăn xếp. Lưu ý rằng Ngăn xếp được triển khai khi phát triển từ các vị trí bộ nhớ cao hơn đến các vị trí bộ nhớ thấp hơn. Điều này ngụ ý rằng lệnh Stack PUSH làm giảm con trỏ ngăn xếp.
Con trỏ ngăn xếp trỏ đến vùng ngăn xếp SRAM dữ liệu nơi chứa chương trình con và ngăn xếp ngắt. Không gian ngăn xếp này trong SRAM dữ liệu phải được xác định bởi chương trình trước khi bất kỳ lệnh gọi chương trình con nào được thực hiện hoặc kích hoạt liên kết. Con trỏ ngăn xếp phải được đặt thành điểm trên 0x60. Con trỏ ngăn xếp giảm đi một khi dữ liệu được đẩy vào ngăn xếp bằng lệnh PUSH và giảm đi hai khi địa chỉ trả về được đẩy vào ngăn xếp với lệnh gọi hoặc ngắt chương trình con. Con trỏ ngăn xếp được tăng lên một khi dữ liệu được bật ra từ Ngăn xếp với lệnh POP và nó được tăng lên hai khi dữ liệu được bật từ Ngăn xếp với trả về từ chương trình con RET hoặc trả về từ ngắt RETI.
Con trỏ ngăn xếp AVR được thực hiện dưới dạng hai thanh ghi 8-bit trong không gian I / O. Số lượng bit thực sự được sử dụng phụ thuộc vào việc triển khai. Lưu ý rằng không gian dữ liệu trong một số triển khai của kiến trúc AVR rất nhỏ nên chỉ cần SPL. Trong trường hợp này, Sổ đăng ký SPH sẽ không có mặt.
SPH và SPL - Thanh ghi con trỏ ngăn xếp
Chút | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
0x3E | SP15 | SP14 | SP13 | SP12 | SP11 | SP10 | SP9 | SP8 | SPH |
0x3D | SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 | SPL |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
Đọc/Ghi | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Đọc/Ghi | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Giá trị ban đầu | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Thời gian thực hiện lệnh
Phần này mô tả các khái niệm thời gian truy cập chung để thực hiện lệnh. CPU AVR được điều khiển bởi xung nhịp CPU clkCPU, được tạo trực tiếp từ nguồn xung nhịp đã chọn cho chip. Không có phân chia đồng hồ nội bộ được sử dụng.
Hình 4-4 hiển thị các lần tìm nạp lệnh song song và thực thi lệnh được kích hoạt bởi kiến trúc Harvard và Đăng ký truy cập nhanh File ý tưởng. Đây là khái niệm pipelining cơ bản để thu được tối đa 1 MIPS trên mỗi MHz với các kết quả duy nhất tương ứng cho các chức năng trên mỗi chi phí, chức năng trên mỗi đồng hồ và chức năng trên mỗi đơn vị công suất.
Hình 4-5. Vận hành ALU một chu kỳ
Đặt lại và xử lý ngắt
AVR cung cấp một số nguồn ngắt khác nhau. Các ngắt này và Vectơ đặt lại riêng biệt, mỗi ngắt có một Vectơ chương trình riêng trong vùng bộ nhớ chương trình. Tất cả các ngắt đều được gán các bit cho phép riêng lẻ, bit này phải được viết logic một cùng với bit Bật ngắt toàn cục trong Thanh ghi trạng thái để cho phép ngắt.
Các địa chỉ thấp nhất trong không gian bộ nhớ Chương trình được định nghĩa theo mặc định là các Vectơ Đặt lại và Ngắt. Danh sách đầy đủ các vectơ được hiển thị trong “Gián đoạn” trên trang 48. Danh sách cũng xác định mức độ ưu tiên của các ngắt khác nhau. Địa chỉ càng thấp thì mức độ ưu tiên càng cao. RESET có mức ưu tiên cao nhất và tiếp theo là INT0 - Yêu cầu ngắt bên ngoài 0.
Khi xảy ra ngắt, I-bit cho phép ngắt toàn cục sẽ bị xóa và tất cả các ngắt đều bị vô hiệu hóa. Phần mềm người dùng có thể ghi logic một vào I-bit để kích hoạt các ngắt lồng nhau. Tất cả các ngắt được kích hoạt sau đó có thể làm gián đoạn quy trình ngắt hiện tại. I-bit được đặt tự động khi lệnh Return from Interrupt - RETI - được thực thi.
Về cơ bản có hai loại ngắt. Loại đầu tiên được kích hoạt bởi một sự kiện đặt Cờ ngắt. Đối với những ngắt này, Bộ đếm chương trình được vectơ vectơ ngắt thực tế để thực hiện quy trình xử lý ngắt và phần cứng sẽ xóa Cờ ngắt tương ứng. Các cờ ngắt cũng có thể được xóa bằng cách ghi một logic vào (các) vị trí bit cờ cần xóa. Nếu điều kiện ngắt xảy ra trong khi bit kích hoạt ngắt tương ứng bị xóa, Cờ ngắt sẽ được thiết lập và ghi nhớ cho đến khi ngắt được bật hoặc cờ được xóa bằng phần mềm. Tương tự, nếu một hoặc nhiều điều kiện ngắt xảy ra trong khi bit Kích hoạt ngắt toàn cục bị xóa, (các) Cờ ngắt tương ứng sẽ được đặt và ghi nhớ cho đến khi đặt bit Kích hoạt ngắt toàn cầu và sau đó sẽ được thực thi theo thứ tự ưu tiên.
Loại ngắt thứ hai sẽ kích hoạt miễn là có điều kiện ngắt. Các ngắt này nhất thiết không có Cờ ngắt. Nếu điều kiện ngắt biến mất trước khi ngắt được kích hoạt, ngắt sẽ không được kích hoạt.
Khi AVR thoát khỏi một ngắt, nó sẽ luôn quay trở lại chương trình chính và thực hiện thêm một lệnh nữa trước khi bất kỳ ngắt đang chờ xử lý nào được phục vụ.
Lưu ý rằng thanh ghi trạng thái không được tự động lưu trữ khi nhập một quy trình ngắt, cũng như không được khôi phục khi trở lại từ một quy trình ngắt. Điều này phải được xử lý bằng phần mềm.
Khi sử dụng lệnh CLI để vô hiệu hóa ngắt, ngắt sẽ bị vô hiệu hóa ngay lập tức. Không có ngắt nào được thực hiện sau lệnh CLI, ngay cả khi nó xảy ra đồng thời với lệnh CLI. Người yêu cũ sau đâyample chỉ ra cách điều này có thể được sử dụng để tránh bị gián đoạn trong trình tự ghi EEPROM được định thời gian.
Mã hội Example |
trong r16, SREG ; lưu trữ giá trị SREG
cli ; vô hiệu hóa các ngắt trong chuỗi thời gian sbi EECR, EEMPE ; bắt đầu ghi EEPROM sbi EECR, EEPE ra SREG, r16 ; khôi phục giá trị SREG (I-bit) |
Mã C Example |
ký tự cSREG;
cSREG = SREG; /* lưu trữ giá trị SREG */ /* vô hiệu hóa các ngắt trong chuỗi thời gian */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* khôi phục giá trị SREG (I-bit) */ |
Khi sử dụng lệnh SEI để kích hoạt ngắt, lệnh sau SEI sẽ được thực thi trước khi có bất kỳ ngắt liên tục nào, như thể hiện trong ví dụ nàyamplà.
Mã hội Example |
sei ; đặt Cho phép ngắt toàn cầu
ngủ; vào giấc ngủ, chờ ngắt ; lưu ý: sẽ vào chế độ ngủ trước khi có bất kỳ sự cố nào đang chờ xử lý ; làm gián đoạn |
Mã C Example |
_SEI(); /* đặt Cho phép ngắt toàn cầu */
_NGỦ(); /* vào trạng thái ngủ, chờ ngắt */ / * lưu ý: sẽ chuyển sang chế độ ngủ trước bất kỳ (các) ngắt đang chờ xử lý nào * / |
Thời gian đáp ứng ngắt
Đáp ứng thực thi ngắt cho tất cả các ngắt AVR được kích hoạt là tối thiểu bốn chu kỳ đồng hồ. Sau bốn chu kỳ đồng hồ, địa chỉ Vectơ Chương trình cho quy trình xử lý ngắt thực tế được thực thi. Trong khoảng thời gian bốn chu kỳ đồng hồ này, Bộ đếm chương trình được đẩy vào Ngăn xếp. Vectơ thường là một bước nhảy đến quy trình ngắt và bước nhảy này mất ba 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 này sẽ được hoàn thành trước khi ngắt được phục vụ. Nếu ngắt xảy ra khi MCU ở chế độ nghỉ, thời gian đáp ứng thực hiện ngắt sẽ tăng lên bốn chu kỳ đồng hồ. Sự gia tăng này thêm vào thời gian khởi động từ chế độ ngủ đã chọn.
Một lần trả về từ một quy trình xử lý ngắt mất bốn chu kỳ đồng hồ. Trong bốn chu kỳ xung nhịp này, Bộ đếm chương trình (hai byte) được bật trở lại từ Ngăn xếp, Con trỏ ngăn xếp được tăng thêm hai và I-bit trong SREG được đặt.
Ký ức AVR
Phần này mô tả các ký ức khác nhau trong ATtiny25 / 45/85. Kiến trúc AVR có hai không gian bộ nhớ chính, không gian bộ nhớ Dữ liệu và không gian bộ nhớ Chương trình. Ngoài ra, ATtiny25 / 45/85 có Bộ nhớ EEPROM để lưu trữ dữ liệu. Cả ba không gian bộ nhớ đều tuyến tính và chính quy.
Bộ nhớ chương trình Flash có thể lập trình lại trong hệ thống
ATtiny25 / 45/85 chứa 2/4 / 8K byte Bộ nhớ Flash có thể lập trình lại trong hệ thống trên chip cho phù hợp với chương trình. Vì tất cả các lệnh AVR đều có chiều rộng 16 hoặc 32 bit, nên Flash được tổ chức dưới dạng 1024/2048/4096 x 16.
Bộ nhớ Flash có độ bền ít nhất 10,000 chu kỳ ghi / xóa. Bộ đếm chương trình ATtiny25 / 45/85 (PC) rộng 10/11/12 bit, do đó giải quyết các vị trí bộ nhớ chương trình 1024/2048/4096. “Chương trình bộ nhớ- ming ”trên trang 147 chứa mô tả chi tiết về tải xuống nối tiếp dữ liệu Flash bằng cách sử dụng các chân SPI.
Các bảng hằng số có thể được cấp phát trong toàn bộ không gian địa chỉ bộ nhớ chương trình (xem mô tả lệnh LPM - Nạp chương trình bộ nhớ).
Hình 5-1. Bản đồ bộ nhớ chương trình
Bộ nhớ dữ liệu SRAM
Hình 5-2 cho biết cách tổ chức Bộ nhớ SRAM ATtiny25 / 45/85.
224/352/607 Vị trí bộ nhớ dữ liệu thấp hơn giải quyết cả Thanh ghi File, bộ nhớ I / O và SRAM dữ liệu bên trong. 32 vị trí đầu tiên địa chỉ Đăng ký File, 64 vị trí tiếp theo đặt bộ nhớ I / O tiêu chuẩn và 128/256/512 vị trí cuối cùng địa chỉ SRAM dữ liệu nội bộ.
Năm chế độ định địa chỉ khác nhau cho vỏ Bộ nhớ dữ liệu: Trực tiếp, Gián tiếp với Chuyển vị, Gián tiếp, Trực tiếp với Giảm trước và Gián tiếp với Tăng sau. Trong sổ đăng ký File, các thanh ghi R26 đến R31 có đặc điểm là các thanh ghi con trỏ định địa chỉ gián tiếp.
Việc định địa chỉ trực tiếp đạt đến toàn bộ không gian dữ liệu.
Chế độ Gián tiếp với Dịch chuyển đạt tới 63 vị trí địa chỉ từ địa chỉ cơ sở được cung cấp bởi thanh ghi Y- hoặc Z-.
Khi sử dụng các chế độ định địa chỉ gián tiếp thanh ghi với tự động giảm trước và tăng sau, các thanh ghi địa chỉ X, Y và Z được giảm hoặc tăng.
32 thanh ghi làm việc cho mục đích chung, 64 thanh ghi I / O và 128/256/512 byte dữ liệu nội bộ SRAM trong ATtiny25 / 45/85 đều có thể truy cập được thông qua tất cả các chế độ định địa chỉ này. Đăng ký File được mô tả trong “Gen- Đăng ký Mục đích eral File”Trên trang 10.
Hình 5-2. Bản đồ bộ nhớ dữ liệu
Truy cập bộ nhớ dữ liệu Thời gian
Phần này mô tả các khái niệm thời gian truy cập chung cho truy cập bộ nhớ trong. Việc truy cập SRAM dữ liệu nội bộ được thực hiện trong hai chu kỳ clkCPU như được mô tả trong Hình 5-3.
Hình 5-3. Chu kỳ truy cập SRAM dữ liệu trên chip Bộ nhớ dữ liệu EEPROM
ATtiny25 / 45/85 chứa 128/256/512 byte bộ nhớ EEPROM dữ liệu. Nó được tổ chức như một không gian dữ liệu riêng biệt, trong đó các byte đơn lẻ có thể được đọc và ghi. EEPROM có độ bền ít nhất 100,000 chu kỳ ghi / xóa. Việc truy cập giữa EEPROM và CPU được mô tả như sau, chỉ định các thanh ghi địa chỉ EEPROM, thanh ghi dữ liệu EEPROM và thanh ghi điều khiển EEPROM. Để biết chi tiết xem “Tải xuống nối tiếp” trên trang 151.
Quyền truy cập đọc / ghi EEPROM
Thanh ghi truy cập EEPROM có thể truy cập được trong không gian I / O.
Thời gian truy cập ghi cho EEPROM được cung cấp trong Bảng 5-1 nơi trang 21. Tuy nhiên, chức năng tự định thời cho phép phần mềm người dùng phát hiện khi nào byte tiếp theo có thể được ghi. Nếu mã người dùng chứa các hướng dẫn ghi EEPROM, thì phải thực hiện một số biện pháp phòng ngừa. Trong các bộ nguồn được lọc nhiều, VCC có khả năng tăng hoặc giảm chậm trên
Tăng / giảm nguồn. Điều này khiến thiết bị trong một khoảng thời gian chạy ở mức voltage thấp hơn quy định là tối thiểu cho tần số đồng hồ được sử dụng. Nhìn thấy “Ngăn ngừa Tham nhũng EEPROM” trên trang 19 để biết chi tiết về cách tránh sự cố trong những tình huống này.
Để ngăn chặn việc ghi EEPROM không chủ ý, phải tuân theo một quy trình ghi cụ thể. Tham khảo “Nguyên tử Lập trình Byte ”trên trang 17 Và “Lập trình Split Byte” trên trang 17 để biết chi tiết về điều này.
Khi EEPROM được đọc, CPU sẽ tạm dừng trong bốn chu kỳ xung nhịp trước khi lệnh tiếp theo được thực thi. Khi EEPROM được ghi, CPU sẽ tạm dừng trong hai chu kỳ xung nhịp trước khi lệnh tiếp theo được thực thi.
Lập trình Byte nguyên tử
Sử dụng Lập trình Byte nguyên tử là chế độ đơn giản nhất. Khi ghi một byte vào EEPROM, người dùng phải ghi địa chỉ vào Thanh ghi EEAR và dữ liệu vào Thanh ghi EEDR. Nếu các bit EEPMn bằng XNUMX, việc ghi EEPE (trong vòng bốn chu kỳ sau khi EEMPE được ghi) sẽ kích hoạt thao tác xóa / ghi. Cả chu trình xóa và ghi đều được thực hiện trong một thao tác và tổng thời gian lập trình được đưa ra trong Bảng 5-1 nơi trang 21. Bit EEPE vẫn được đặt cho đến khi hoàn tất các thao tác xóa và ghi. Trong khi thiết bị đang bận lập trình, không thể thực hiện bất kỳ thao tác EEPROM nào khác.
Lập trình Split Byte
Có thể chia chu kỳ xóa và ghi thành hai thao tác khác nhau. Điều này có thể hữu ích nếu hệ thống yêu cầu thời gian truy cập ngắn trong một khoảng thời gian giới hạn nào đó (thường là nếu nguồn điệntage ngã). Để lấy advan- tage của phương pháp này, yêu cầu các vị trí cần ghi phải được xóa trước khi thực hiện thao tác ghi. Nhưng vì các thao tác xóa và ghi được phân chia, nên có thể thực hiện các thao tác xóa khi hệ thống cho phép thực hiện các thao tác quan trọng về thời gian (thường là sau khi Power-up).
Xóa bỏ
Để xóa một byte, địa chỉ phải được ghi vào EEAR. Nếu các bit EEPMn là 0b01, việc ghi EEPE (trong vòng bốn chu kỳ sau khi EEMPE được ghi) sẽ chỉ kích hoạt thao tác xóa (thời gian lập trình được cung cấp trong Bảng 5-1 trên trang 21). Bit EEPE vẫn được đặt cho đến khi thao tác xóa hoàn tất. Trong khi thiết bị đang bận lập trình, không thể thực hiện bất kỳ thao tác EEPROM nào khác.
Viết
Để ghi vị trí, người dùng phải ghi địa chỉ vào EEAR và dữ liệu vào EEDR. Nếu các bit EEPMn là 0b10, việc ghi EEPE (trong vòng bốn chu kỳ sau khi EEMPE được ghi) sẽ chỉ kích hoạt hoạt động ghi (thời gian lập trình được cung cấp trong Bảng 5-1 nơi trang 21). Bit EEPE vẫn được đặt cho đến khi hoàn thành thao tác ghi. Nếu vị trí cần ghi chưa được xóa trước khi ghi thì dữ liệu được lưu trữ coi như bị mất. Trong khi thiết bị đang bận lập trình, không thể thực hiện bất kỳ thao tác EEPROM nào khác.
Bộ tạo dao động đã hiệu chỉnh được sử dụng để định thời gian truy cập EEPROM. Đảm bảo tần số Bộ tạo dao động nằm trong các yêu cầu được mô tả trong “OSCCAL - Đăng ký Hiệu chuẩn Bộ tạo dao động” trên trang 31.
Đoạn mã sau đâyamples hiển thị một hợp ngữ và một hàm C để xóa, ghi hoặc ghi nguyên tử của EEPROM. Người cũamples giả định rằng các ngắt được kiểm soát (ví dụ: bằng cách vô hiệu hóa các ngắt trên toàn cục) để không xảy ra ngắt trong quá trình thực thi các chức năng này.
Mã hội Example |
EEPROM_write:
; Chờ hoàn thành bài viết trước đó sbic EECR,EEPE rjmp EEPROM_write ; Đặt chế độ lập trình ldi r16, (0<<EEPM1)|(0<<EEPM0) ra EECR, r16 ; Thiết lập địa chỉ (r18: r17) trong thanh ghi địa chỉ ra EEARH, r18 ra EEARL, r17 ; Ghi dữ liệu (r19) vào thanh ghi dữ liệu ra EEDR, r19 ; Viết một logic vào EEMPE sbi EECR, EEMPE ; Bắt đầu ghi eeprom bằng cách thiết lập EEPE sbi EECR,EEPE trở về |
Mã C Example |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Chờ hoàn thành ghi trước đó */ while(EECR & (1< ; /* Đặt chế độ lập trình */ EECR = (0 < / * Thiết lập thanh ghi địa chỉ và dữ liệu * / EEAR = ucAddress; EEDR = ucData; /* Ghi một logic vào EEMPE */ EECR | = (1 < / * Bắt đầu ghi eeprom bằng cách cài đặt EEPE * / EECR | = (1 < } |
Mã tiếp theo cũamples hiển thị các chức năng lắp ráp và C để đọc EEPROM. Người cũamples giả định rằng ngắt được kiểm soát để không xảy ra ngắt trong quá trình thực thi các chức năng này.
Mã hội Example |
EEPROM_đọc:
; Chờ hoàn thành bài viết trước đó sbic EECR,EEPE rjmp EEPROM_read ; Thiết lập địa chỉ (r18: r17) trong thanh ghi địa chỉ ra EEARH, r18 ra EEARL, r17 ; Bắt đầu đọc eeprom bằng cách viết EERE sbi EECR,EERE ; Đọc dữ liệu từ thanh ghi dữ liệu trong r16,EEDR trở về |
Mã C Example |
ký tự không dấu EEPROM_read(unsign char ucAddress)
{ / * Chờ hoàn thành ghi trước * / trong khi (EECR & (1 < ; / * Thiết lập thanh ghi địa chỉ * / EEAR = ucAddress; /* Bắt đầu đọc eeprom bằng cách viết EERE */ EECR | = (1 < / * Trả lại dữ liệu từ thanh ghi dữ liệu * / trả lại EEDR; } |
Ngăn ngừa Tham nhũng EEPROM
Trong thời gian VCC thấp, dữ liệu EEPROM có thể bị hỏng do điện áp cung cấptage là quá thấp để CPU và EEPROM hoạt động bình thường. Các vấn đề này cũng giống như đối với các hệ thống cấp bo mạch sử dụng EEPROM và nên áp dụng các giải pháp thiết kế tương tự.
Lỗi dữ liệu EEPROM có thể do hai tình huống khi voltage thấp quá. Đầu tiên, một trình tự ghi thông thường vào EEPROM yêu cầu vol tối thiểutage để hoạt động chính xác. Thứ hai, bản thân CPU có thể thực hiện các lệnh không chính xác, nếu nguồn cung cấptage quá thấp.
Có thể dễ dàng tránh được việc hỏng dữ liệu EEPROM bằng cách làm theo khuyến nghị thiết kế sau:
Giữ cho AVR RESET hoạt động (ở mức thấp) trong thời gian nguồn điện cung cấp không đủ voltage. Điều này có thể được thực hiện bằng cách bật Bộ phát hiện màu nâu bên trong (BOD). Nếu mức độ phát hiện của HĐQT nội bộ không phù hợp với
mức phát hiện cần thiết, có thể sử dụng mạch bảo vệ đặt lại VCC thấp bên ngoài. Nếu thiết lập lại xảy ra trong khi thao tác ghi đang diễn ra, thao tác ghi sẽ được hoàn thành với điều kiện là nguồn điệntage là đủ.
Bộ nhớ I / O
Định nghĩa không gian I / O của ATtiny25 / 45/85 được hiển thị trong “Đăng ký Tóm tắt” trên trang 200.
Tất cả ATtiny25 / 45/85 I / Os và thiết bị ngoại vi được đặt trong không gian I / O. Tất cả các vị trí I / O có thể được truy cập bằng các lệnh LD / LDS / LDD và ST / STS / STD, truyền dữ liệu giữa 32 thanh ghi làm việc mục đích chung và không gian I / O. Thanh ghi I / O trong dải địa chỉ 0x00 - 0x1F có thể truy cập trực tiếp theo bit bằng cách sử dụng hướng dẫn SBI và CBI. Trong các thanh ghi này, giá trị của các bit đơn có thể được kiểm tra bằng cách sử dụng các lệnh SBIS và SBIC. Tham khảo phần tập hợp hướng dẫn để biết thêm chi tiết. Khi sử dụng các lệnh I / O cụ thể IN và OUT, các địa chỉ I / O 0x00 - 0x3F phải được sử dụng. Khi định địa chỉ Thanh ghi I / O dưới dạng không gian dữ liệu bằng cách sử dụng lệnh LD và ST, 0x20 phải được thêm vào các địa chỉ này.
Để tương thích với các thiết bị trong tương lai, các bit dành riêng phải được ghi bằng XNUMX nếu được truy cập. Địa chỉ bộ nhớ I / O dành riêng không bao giờ được ghi.
Một số Cờ Trạng thái được xóa bằng cách viết một lôgic vào chúng. Lưu ý rằng các lệnh CBI và SBI sẽ chỉ hoạt động trên bit được chỉ định và do đó có thể được sử dụng trên các thanh ghi có chứa các Cờ trạng thái như vậy. Các lệnh CBI và SBI chỉ hoạt động với các thanh ghi 0x00 đến 0x1F.
Thanh ghi điều khiển I / O và thiết bị ngoại vi được giải thích trong các phần sau.
Đăng ký Mô tả
EEARH - Đăng ký địa chỉ EEPROM
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Đọc/Ghi | R | R | R | R | R | R | R | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bit 7: 1 - Res: Số bit dành riêng
Các bit này được dành riêng để sử dụng trong tương lai và sẽ luôn được đọc là XNUMX.
Bit 0 - EEAR8: Địa chỉ EEPROM
Đây là bit địa chỉ EEPROM quan trọng nhất của ATtiny85. Trong các thiết bị có ít EEPROM hơn, tức là ATtiny25 / ATtiny45, bit này được dành riêng và sẽ luôn đọc bằng không. Giá trị ban đầu của Cơ quan đăng ký địa chỉ EEPROM (EEAR) là không xác định và do đó giá trị thích hợp phải được ghi trước khi EEPROM được truy cập.
EEARL - Đăng ký địa chỉ EEPROM
Chút
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | con yêu tinh |
Phía sau / Viết | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | X | X | X | X | X | X | X | X |
Bit 7 - EEAR7: Địa chỉ EEPROM
Đây là bit địa chỉ EEPROM quan trọng nhất của ATtiny45. Trong các thiết bị có ít EEPROM hơn, tức là ATtiny25, bit này được dành riêng và sẽ luôn đọc bằng không. Giá trị ban đầu của thanh ghi địa chỉ EEPROM (EEAR) là không xác định và do đó giá trị thích hợp phải được ghi trước khi EEPROM được truy cập.
Bit 6: 0 - EEAR [6: 0]: Địa chỉ EEPROM
Đây là các bit (thấp) của thanh ghi địa chỉ EEPROM. Các byte dữ liệu EEPROM được đánh địa chỉ tuyến tính trong phạm vi 0… (128/256 / 512-1). Giá trị ban đầu của EEAR là không xác định và do đó giá trị thích hợp phải được ghi trước khi EEPROM có thể được truy cập.
EEDR - Đăng ký dữ liệu EEPROM
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Đọc/Ghi | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Đối với hoạt động ghi EEPROM, Thanh ghi EEDR chứa dữ liệu được ghi vào EEPROM theo địa chỉ do Thanh ghi EEAR cung cấp. Đối với hoạt động đọc EEPROM, EEDR chứa dữ liệu được đọc ra từ
EEPROM tại địa chỉ do EEAR cung cấp.
5.5.4 EECR - Thanh ghi điều khiển EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | RỢN RỢN | EEMPE | EEPE | ĐÓ | EECR | |
Đọc / Ghi R R R / W | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | ||||
Giá trị ban đầu 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 - Res: Bit dự trữ
Bit này được dành riêng để sử dụng trong tương lai và sẽ luôn được đọc là 0 trong ATtiny25 / 45/85. Để tương thích với các thiết bị AVR trong tương lai, hãy luôn ghi bit này bằng XNUMX. Sau khi đọc, hãy che giấu điều này.
Bit 6 - Res: Bit dự trữ
Bit này được dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 5: 4 - EEPM [1: 0]: Bit chế độ lập trình EEPROM
Cài đặt bit chế độ lập trình EEPROM xác định hành động lập trình nào sẽ được kích hoạt khi ghi EEPE. Có thể lập trình dữ liệu trong một thao tác nguyên tử (xóa giá trị cũ và lập trình giá trị mới) hoặc tách các thao tác Xóa và Ghi thành hai thao tác khác nhau. Thời gian lập trình cho các chế độ khác nhau được hiển thị trong Bảng 5-1. Trong khi EEPE được đặt, mọi ghi vào EEPMn sẽ bị bỏ qua. Trong khi đặt lại, các bit EEPMn sẽ được đặt lại về 0b00 trừ khi EEPROM đang bận lập trình.
Bảng 5-1. Bit chế độ EEPROM
EEPM1 | EEPM0 | Thời gian lập trình | Hoạt động |
0 | 0 | 3.4 mili giây | Xóa và ghi trong một thao tác (Hoạt động nguyên tử) |
0 | 1 | 1.8 mili giây | Chỉ xóa |
1 | 0 | 1.8 mili giây | Chỉ viết |
1 | 1 | – | Dành riêng cho mục đích sử dụng trong tương lai |
Bit 3 - EERIE: Bật ngắt sẵn sàng EEPROM
Việc ghi EERIE vào một sẽ kích hoạt Ngắt sẵn sàng EEPROM nếu I-bit trong SREG được đặt. Ghi EERIE về XNUMX sẽ làm gián đoạn. Ngắt sẵn sàng EEPROM tạo ra một ngắt liên tục khi Bộ nhớ không bay hơi đã sẵn sàng để lập trình.
Bit 2 - EEMPE: Bật Chương trình Chính EEPROM
Bit EEMPE xác định việc ghi EEPE vào một sẽ có hiệu lực hay không.
Khi EEMPE được đặt, cài đặt EEPE trong vòng bốn chu kỳ đồng hồ sẽ lập trình EEPROM tại địa chỉ đã chọn. Nếu EEMPE bằng XNUMX, cài đặt EEPE sẽ không có hiệu lực. Khi EEMPE đã được ghi vào một bằng phần mềm, phần cứng sẽ xóa bit về XNUMX sau bốn chu kỳ đồng hồ.
Bit 1 - EEPE: Bật chương trình EEPROM
Tín hiệu kích hoạt chương trình EEPROM EEPE là tín hiệu cho phép lập trình tới EEPROM. Khi EEPE được ghi, EEPROM sẽ được lập trình theo cài đặt bit EEPMn. Bit EEMPE phải được ghi vào một bit trước khi một lôgic được ghi vào EEPE, nếu không thì không có quá trình ghi EEPROM nào diễn ra. Khi thời gian truy cập ghi đã trôi qua, bit EEPE sẽ bị xóa bởi phần cứng. Khi EEPE đã được thiết lập, CPU sẽ tạm dừng trong hai chu kỳ trước khi lệnh tiếp theo được thực thi.
Bit 0 - EERE: Bật đọc EEPROM
Tín hiệu cho phép đọc EEPROM - EERE - là tín hiệu đọc tới EEPROM. Khi địa chỉ chính xác được thiết lập trong Thanh ghi EEAR, bit EERE phải được ghi vào một địa chỉ để kích hoạt đọc EEPROM. Truy cập đọc EEPROM thực hiện một lệnh và dữ liệu được yêu cầu có sẵn ngay lập tức. Khi EEPROM được đọc, CPU sẽ tạm dừng trong bốn chu kỳ trước khi lệnh tiếp theo được thực thi. Người dùng nên thăm dò bit EEPE trước khi bắt đầu thao tác đọc. Nếu một thao tác ghi đang diễn ra, không thể đọc EEPROM, cũng như không thể thay đổi Thanh ghi EEAR.
Đồng hồ hệ thống và tùy chọn đồng hồ
Hệ thống đồng hồ và phân phối của chúng
Đồng hồ CPU
Xung nhịp CPU được chuyển đến các bộ phận của hệ thống liên quan đến hoạt động của lõi AVR. Bán tạiampcác phương thức như vậy là Sổ đăng ký Mục đích Chung File, thanh ghi trạng thái và bộ nhớ dữ liệu giữ con trỏ ngăn xếp. Việc dừng xung nhịp CPU sẽ ngăn lõi thực hiện các hoạt động và tính toán chung.
Đồng hồ I / O - clkI / O
Đồng hồ I / O được sử dụng bởi phần lớn các mô-đun I / O, như Timer / Counter. Đồng hồ I / O cũng được sử dụng bởi mô-đun Ngắt ngoài, nhưng lưu ý rằng một số ngắt bên ngoài được phát hiện bằng logic không đồng bộ, cho phép phát hiện các ngắt như vậy ngay cả khi đồng hồ I / O bị tạm dừng.
Đồng hồ nhấp nháy - clkFLASH
Đồng hồ Flash điều khiển hoạt động của giao diện Flash. Đồng hồ Flash thường hoạt động đồng thời với đồng hồ CPU.
Đồng hồ ADC - clkADC
ADC được cung cấp một miền đồng hồ chuyên dụng. Điều này cho phép tạm dừng CPU và xung nhịp I / O để giảm nhiễu do mạch kỹ thuật số tạo ra. Điều này cho kết quả chuyển đổi ADC chính xác hơn.
PLL nội bộ để tạo xung nhịp ngoại vi nhanh - clkPCK
PLL bên trong ATtiny25 / 45/85 tạo ra tần số xung nhịp nhân 8x từ đầu vào nguồn. Theo mặc định, PLL sử dụng đầu ra của bộ dao động RC nội bộ, 8.0 MHz làm nguồn. Ngoài ra, nếu bit LSM của PLLCSR được đặt thì PLL sẽ sử dụng đầu ra của bộ dao động RC chia cho hai. Do đó đầu ra của PLL, xung nhịp ngoại vi nhanh là 64 MHz. Đồng hồ ngoại vi nhanh, hoặc đồng hồ được cài đặt sẵn từ đó, có thể được chọn làm nguồn đồng hồ cho Bộ định thời / Bộ đếm1 hoặc làm đồng hồ hệ thống. Xem Hình 6-2. Tần số của xung nhịp ngoại vi nhanh được chia cho hai khi LSM của PLLCSR được đặt, dẫn đến tần số xung nhịp là 32 MHz. Lưu ý rằng không thể đặt LSM nếu PLLCLK được sử dụng làm đồng hồ hệ thống.
Hình 6-2. Hệ thống đồng hồ PCK.
PLL bị khóa trên bộ dao động RC và việc điều chỉnh bộ dao động RC thông qua thanh ghi OSCCAL sẽ đồng thời điều chỉnh xung nhịp ngoại vi nhanh. Tuy nhiên, ngay cả khi bộ dao động RC được đưa đến tần số cao hơn 8 MHz, tần số xung nhịp ngoại vi nhanh bão hòa ở 85 MHz (trường hợp xấu nhất) và vẫn dao động ở tần số tự do tối đa. Cần lưu ý rằng PLL trong trường hợp này không bị khóa nữa với đồng hồ dao động RC. Do đó, không nên điều chỉnh OSCCAL ở tần số cao hơn 8 MHz để giữ PLL trong phạm vi hoạt động chính xác.
PLL nội bộ được bật khi:
Bit PLLE trong thanh ghi PLLCSR được thiết lập.
Cầu chì CKSEL được lập trình thành '0001'.
Cầu chì CKSEL được lập trình thành '0011'.
PLLCSR bit PLOCK được thiết lập khi PLL bị khóa. Cả bộ tạo dao động RC bên trong và PLL đều được tắt ở chế độ tắt nguồn và chế độ ngủ chờ.
PLL nội bộ trong chế độ tương thích ATtiny15
Vì ATtiny25 / 45/85 là thiết bị di chuyển dành cho người dùng ATtiny15 nên có chế độ tương thích ATtiny15 để tương thích back-ward. Chế độ tương thích ATtiny15 được chọn bằng cách lập trình cầu chì CKSEL thành '0011'.
Trong chế độ tương thích ATtiny15, tần số của bộ dao động RC bên trong được hiệu chỉnh xuống 6.4 MHz và hệ số nhân của PLL được đặt thành 4x. Xem Hình 6-3. Với những điều chỉnh này, hệ thống đồng hồ tương thích với ATtiny15 và kết quả là đồng hồ ngoại vi nhanh có tần số 25.6 MHz (giống như trong ATtiny15).
Hình 6-3. Hệ thống đồng hồ PCK ở Chế độ tương thích ATtiny15.
Nguồn đồng hồ
Thiết bị có các tùy chọn nguồn xung nhịp sau, có thể lựa chọn bằng các bit Flash Fuse như hình bên dưới. Đồng hồ từ nguồn đã chọn được đưa vào bộ tạo xung nhịp AVR và được chuyển đến các mô-đun thích hợp.
Bảng 6-1. Tùy chọn Đồng hồ Thiết bị Chọn
Tùy chọn Đồng hồ Thiết bị | CKSEL[3:0](1) |
Đồng hồ ngoài (nhìn thấy trang 26) | 0000 |
Đồng hồ PLL tần số cao (nhìn thấy trang 26) | 0001 |
Bộ dao động bên trong đã hiệu chỉnh (nhìn thấy trang 27) | 0010(2) |
Bộ dao động bên trong đã hiệu chỉnh (nhìn thấy trang 27) | 0011(3) |
Bộ dao động 128 kHz bên trong (nhìn thấy trang 28) | 0100 |
Bộ dao động tinh thể tần số thấp (nhìn thấy trang 29) | 0110 |
Bộ dao động tinh thể / Bộ cộng hưởng bằng gốm (nhìn thấy trang 29) | 1000 – 1111 |
Kín đáo | 0101, 0111 |
Đối với tất cả các cầu chì “1” có nghĩa là chưa được lập trình trong khi “0” có nghĩa là được lập trình.
Thiết bị được xuất xưởng khi đã chọn tùy chọn này.
Thao tác này sẽ chọn Chế độ tương thích ATtiny15, trong đó xung nhịp hệ thống được chia cho bốn, dẫn đến tần số xung nhịp 1.6 MHz. Để biết thêm nhiệt độ, hãy xem “Bộ dao động bên trong được hiệu chỉnh” trên trang 27.
Các lựa chọn khác nhau cho mỗi tùy chọn đồng hồ được đưa ra trong các phần sau. Khi CPU thức dậy từ Power-down, nguồn xung nhịp đã chọn được sử dụng để định thời gian khởi động, đảm bảo hoạt động của Bộ dao động ổn định trước khi bắt đầu thực thi lệnh. Khi CPU bắt đầu từ thiết lập lại, có thêm một khoảng thời gian trễ cho phép nguồn đạt mức ổn định trước khi bắt đầu hoạt động bình thường. Bộ dao động cơ quan giám sát được sử dụng để định thời phần thời gian thực này của thời gian khởi động. Số chu kỳ Bộ tạo dao động WDT được sử dụng cho mỗi khoảng thời gian chờ được hiển thị trong Bảng 6-2.
Bảng 6-2. Số chu kỳ của Watchdog Oscillator
Hết thời gian gõ | Số chu kỳ |
4 mili giây | 512 |
64 mili giây | 8K (8,192) |
Đồng hồ ngoài
Để điều khiển thiết bị từ nguồn xung nhịp bên ngoài, CLKI phải được điều khiển như được hiển thị trong Hình 6-4. Để chạy thiết bị trên đồng hồ bên ngoài, Cầu chì CKSEL phải được lập trình thành “00”.
Hình 6-4. Cấu hình ổ đĩa đồng hồ bên ngoài
Khi nguồn xung nhịp này được chọn, thời gian khởi động được xác định bởi Cầu chì SUT như minh họa trong Bảng 6-3.
Bảng 6-3. Thời gian khởi động cho lựa chọn đồng hồ bên ngoài
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Trì hoãn bổ sung từ việc đặt lại | Cách sử dụng được khuyến nghị |
00 | Xuất khẩu CK | 14CK | BOD được kích hoạt |
01 | Xuất khẩu CK | 14CK + 4 mili giây | Sức mạnh tăng nhanh |
10 | Xuất khẩu CK | 14CK + 64 mili giây | Tăng sức mạnh từ từ |
11 | Kín đáo |
Khi áp dụng đồng hồ bên ngoài, phải tránh thay đổi đột ngột tần số đồng hồ áp dụng để đảm bảo MCU hoạt động ổn định. Sự thay đổi tần số hơn 2% từ chu kỳ đồng hồ này sang chu kỳ đồng hồ tiếp theo có thể dẫn đến hành vi không thể đoán trước. Cần phải đảm bảo rằng MCU được giữ ở trạng thái Đặt lại trong những thay đổi như vậy về tần số đồng hồ.
Lưu ý rằng System Clock Presale có thể được sử dụng để thực hiện các thay đổi thời gian chạy của tần số đồng hồ bên trong mà vẫn đảm bảo hoạt động ổn định. Tham khảo “Bộ định mức đồng hồ hệ thống” trên trang 31 để biết thêm chi tiết.
Đồng hồ PLL tần số cao
Có một PLL bên trong cung cấp tốc độ xung nhịp danh định 64 MHz được khóa cho Bộ tạo dao động RC để sử dụng Bộ hẹn giờ / Bộ đếm ngoại vi1 và cho nguồn xung nhịp hệ thống. Khi được chọn làm nguồn xung nhịp hệ thống, bằng cách lập trình CKSEL hợp nhất thành '0001', nó được chia cho bốn như được hiển thị trong Bảng 6-4.
Bảng 6-4. Chế độ hoạt động của đồng hồ PLL tần số cao
CKSEL[3:0] | Tần số danh nghĩa |
0001 | 16MHz |
Khi nguồn xung nhịp này được chọn, thời gian khởi động được xác định bởi các cầu chì SUT như minh họa trong Bảng 6-5.
Bảng 6-5. Thời gian khởi động cho Đồng hồ PLL tần số cao
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Độ trễ bổ sung từ Đặt lại khi bật nguồn (VCC = 5.0V) | Sử dụng được khuyến nghị |
00 | 14CK + 1K (1024) CK + 4 mili giây | 4 mili giây | BOD được kích hoạt |
Bảng 6-5. Thời gian khởi động cho Đồng hồ PLL tần số cao
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Độ trễ bổ sung từ Đặt lại khi bật nguồn (VCC = 5.0V) | Sử dụng được khuyến nghị |
01 | 14CK + 16K (16384) CK + 4 mili giây | 4 mili giây | Sức mạnh tăng nhanh |
10 | 14CK + 1K (1024) CK + 64 mili giây | 4 mili giây | Tăng sức mạnh từ từ |
11 | 14CK + 16K (16384) CK + 64 mili giây | 4 mili giây | Tăng sức mạnh từ từ |
Bộ dao động bên trong đã hiệu chỉnh
Theo mặc định, Bộ tạo dao động RC bên trong cung cấp xung nhịp xấp xỉ 8.0 MHz. Mặc dù voltage và nhiệt độ phụ thuộc, đồng hồ này có thể được hiệu chỉnh rất chính xác bởi người dùng. Nhìn thấy “Bộ tạo dao động RC bên trong đã hiệu chỉnh Accu- racy ”trên trang 164 Và “Tốc độ dao động bên trong” trên trang 192 để biết thêm chi tiết. Thiết bị được vận chuyển với Cầu chì CKDIV8 được lập trình. Xem “Bộ định mức đồng hồ hệ thống” trên trang 31 để biết thêm chi tiết.
Đồng hồ này có thể được chọn làm đồng hồ hệ thống bằng cách lập trình Cầu chì CKSEL như được hiển thị trong Bảng 6-6 trên trang
27. Nếu được chọn, nó sẽ hoạt động mà không có thành phần bên ngoài. Trong quá trình thiết lập lại, phần cứng tải giá trị hiệu chuẩn được lập trình trước vào Thanh ghi OSCCAL và do đó tự động hiệu chỉnh Bộ tạo dao động RC. Độ chính xác của hiệu chuẩn này được thể hiện như Hiệu chuẩn nhà máy trong Bảng 21-2 nơi trang 164.
Bằng cách thay đổi đăng ký OSCCAL từ SW, hãy xem “OSCCAL - Đăng ký Hiệu chuẩn Bộ tạo dao động” trên trang 31, có thể đạt được độ chính xác hiệu chuẩn cao hơn so với việc sử dụng hiệu chuẩn của nhà máy. Độ chính xác của hiệu chuẩn này được hiển thị dưới dạng Hiệu chuẩn của người dùng trong Bảng 21-2 nơi trang 164.
Khi Bộ tạo dao động này được sử dụng làm đồng hồ chip, Bộ tạo dao động cơ quan giám sát sẽ vẫn được sử dụng cho Bộ định thời gian cơ quan giám sát và cho Thời gian chờ đặt lại. Để biết thêm thông tin về giá trị hiệu chuẩn được lập trình trước, hãy xem phần “Cali- bration Byte ”trên trang 150.
Bộ dao động bên trong cũng có thể được đặt để cung cấp xung nhịp 6.4 MHz bằng cách ghi cầu chì CKSEL thành “0011”, như được hiển thị trong Bảng 6-6 phía dưới. Cài đặt này được gọi là Chế độ tương thích ATtiny15 và nhằm cung cấp nguồn xung nhịp đã hiệu chỉnh ở 6.4 MHz, như trong ATtiny15. Trong Chế độ tương thích ATtiny15, PLL sử dụng bộ dao động bên trong chạy ở 6.4 MHz để tạo ra tín hiệu xung nhịp ngoại vi 25.6 MHz cho Bộ định thời / Bộ đếm1 (xem “Bộ định thời / Bộ đếm 8 bit 1 trong ATtiny15 Mode ”trên trang 95). Lưu ý rằng trong chế độ hoạt động này, tín hiệu đồng hồ 6.4 MHz luôn được chia cho bốn, cung cấp đồng hồ hệ thống 1.6 MHz.
Bảng 6-6. Các chế độ hoạt động của Bộ tạo dao động RC được hiệu chỉnh bên trong
CKSEL[3:0] | Tần số danh nghĩa |
0010(1) | 8.0MHz |
0011(2) | 6.4MHz |
Thiết bị được xuất xưởng khi đã chọn tùy chọn này.
Cài đặt này sẽ chọn Chế độ tương thích ATtiny15, trong đó xung nhịp hệ thống được chia cho bốn, dẫn đến tần số xung nhịp 1.6 MHz.
Khi bộ dao động nội bộ 8 MHz đã hiệu chuẩn được chọn làm nguồn xung nhịp, thời gian khởi động được xác định bởi Cầu chì SUT như được hiển thị trong Bảng 6-7 dưới.
Bảng 6-7. Thời gian khởi động cho Đồng hồ dao động RC được hiệu chỉnh bên trong
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Độ trễ bổ sung khi đặt lại (VCC = 5.0V) | Cách sử dụng được khuyến nghị |
00 | Xuất khẩu CK | 14CK(1) | BOD được kích hoạt |
01 | Xuất khẩu CK | 14CK + 4 mili giây | Sức mạnh tăng nhanh |
10(2) | Xuất khẩu CK | 14CK + 64 mili giây | Tăng sức mạnh từ từ |
11 | Kín đáo |
1. Nếu cầu chì RSTDISBL được lập trình, thời gian khởi động này sẽ được tăng lên 14CK + 4 ms để đảm bảo có thể vào chế độ lập trình.
2. Thiết bị được xuất xưởng khi đã chọn tùy chọn này.
Trong ATtiny15 Chế độ tương thích, thời gian khởi động được xác định bằng cầu chì SUT như minh họa trong Bảng 6-8 dưới.
Bảng 6-8. Thời gian khởi động cho Đồng hồ dao động RC được hiệu chỉnh bên trong (ở Chế độ ATtiny15)
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Độ trễ bổ sung khi đặt lại (VCC = 5.0V) | Cách sử dụng được khuyến nghị |
00 | Xuất khẩu CK | 14CK + 64 mili giây | |
01 | Xuất khẩu CK | 14CK + 64 mili giây | |
10 | Xuất khẩu CK | 14CK + 4 mili giây | |
11 | Xuất khẩu CK | 14CK(1) |
Lưu ý: Nếu cầu chì RSTDISBL được lập trình, thời gian khởi động này sẽ tăng lên 14CK + 4 ms để đảm bảo có thể vào chế độ lập trình.
Tóm lại, bạn có thể tìm thêm thông tin về Chế độ tương thích ATtiny15 trong phần “Cổng B (PB5: PB0)” đang bật trang 2, “PLL nội bộ trong chế độ tương thích ATtiny15” trên trang 24, “Bộ hẹn giờ / Bộ đếm 8 bit 1 ở Chế độ ATtiny15” đang bật trang 95, “Hạn chế của debugWIRE” trên trang 140, “Số byte hiệu chuẩn” trên trang 150 và trong bảng “Đồng hồ Prescaler Chọn ”trên trang 33.
Bộ dao động 128 kHz bên trong
Bộ tạo dao động bên trong 128 kHz là Bộ tạo dao động công suất thấp cung cấp xung nhịp 128 kHz. Tần số là danh nghĩa ở 3V và 25°C. Đồng hồ này có thể được chọn làm đồng hồ hệ thống bằng cách lập trình Cầu chì CKSEL thành “0100”.
Khi nguồn xung nhịp này được chọn, thời gian khởi động được xác định bởi Cầu chì SUT như minh họa trong Bảng 6-9.
Bảng 6-9. Thời gian khởi động cho Bộ tạo dao động bên trong 128 kHz
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Trì hoãn bổ sung từ việc đặt lại | Cách sử dụng được khuyến nghị |
00 | Xuất khẩu CK | 14CK(1) | BOD được kích hoạt |
01 | Xuất khẩu CK | 14CK + 4 mili giây | Sức mạnh tăng nhanh |
10 | Xuất khẩu CK | 14CK + 64 mili giây | Tăng sức mạnh từ từ |
11 | Kín đáo |
Lưu ý: Nếu cầu chì RSTDISBL được lập trình, thời gian khởi động này sẽ tăng lên 14CK + 4 ms để đảm bảo có thể vào chế độ lập trình.
Bộ dao động tinh thể tần số thấp
Để sử dụng tinh thể đồng hồ 32.768 kHz làm nguồn đồng hồ cho thiết bị, Bộ dao động pha lê tần số thấp phải được chọn bằng cách đặt cầu chì CKSEL thành '0110'. Tinh thể phải được kết nối như trong Hình 6-5. Để tìm điện dung tải phù hợp cho crysal 32.768 kHz, vui lòng tham khảo biểu dữ liệu của nhà sản xuất.
Khi bộ dao động này được chọn, thời gian khởi động được xác định bởi các cầu chì SUT như được hiển thị trong Bảng 6-10.
Bảng 6-10. Thời gian khởi động để lựa chọn đồng hồ dao động tinh thể tần số thấp
SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Độ trễ bổ sung khi đặt lại (VCC = 5.0V) | Sử dụng được khuyến nghị |
00 | 1 nghìn (1024) CK(1) | 4 mili giây | Công suất tăng nhanh hoặc BOD được kích hoạt |
01 | 1 nghìn (1024) CK(1) | 64 mili giây | Tăng sức mạnh từ từ |
10 | 32 nghìn (32768) CK | 64 mili giây | Tần suất ổn định khi khởi động |
11 | Kín đáo |
Lưu ý: Chỉ nên sử dụng các tùy chọn này nếu độ ổn định tần số khi khởi động không quan trọng.
Bộ dao động tinh thể tần số thấp cung cấp điện dung tải bên trong, xem Bảng 6-11 tại mỗi chân TOSC.
Bảng 6-11. Điện dung của bộ tạo dao động tinh thể tần số thấp
Thiết bị | 32 kHz Osc. Kiểu | Nắp (Xtal1 / Tosc1) | Nắp (Xtal2 / Tosc2) |
ATtiny25/45/85 | Hệ thống Osc. | 16pF | 6pF |
Bộ dao động tinh thể / Bộ cộng hưởng bằng gốm
XTAL1 và XTAL2 tương ứng là đầu vào và đầu ra của một đảo ngược ampbộ điều chỉnh có thể được định cấu hình để sử dụng như một Bộ tạo dao động trên chip, như được hiển thị trong Hình 6-5. Có thể sử dụng tinh thể thạch anh hoặc bộ cộng hưởng bằng gốm.
C1 và C2 phải luôn bằng nhau đối với cả tinh thể và bộ cộng hưởng. Giá trị tối ưu của các tụ điện phụ thuộc vào tinh thể hoặc bộ cộng hưởng được sử dụng, lượng điện dung đi lạc và nhiễu điện từ của môi trường. Một số hướng dẫn ban đầu để chọn tụ điện sử dụng với tinh thể được đưa ra trong Bảng 6-12 phía dưới. Đối với bộ cộng hưởng bằng gốm, nên sử dụng các giá trị tụ điện do nhà sản xuất đưa ra.
Bảng 6-12. Các chế độ hoạt động của Crystal Oscillator
CKSEL[3:1] | Dải tần số (MHz) | Phạm vi đề xuất cho tụ điện C1 và C2 để sử dụng với tinh thể (pF) |
100(1) | 0.4 – 0.9 | – |
101 | 0.9 – 3.0 | 12 – 22 |
110 | 3.0 – 8.0 | 12 – 22 |
111 | 8.0 – | 12 – 22 |
Lưu ý: Không nên sử dụng tùy chọn này với tinh thể, chỉ với bộ cộng hưởng gốm.
Bộ tạo dao động có thể hoạt động ở ba chế độ khác nhau, mỗi chế độ được tối ưu hóa cho một dải tần số cụ thể. Chế độ hoạt động được chọn bởi cầu chì CKSEL [3: 1] như được hiển thị trong Bảng 6-12.
Cầu chì CKSEL0 cùng với cầu chì SUT [1: 0] chọn thời gian khởi động như minh họa trong Bảng 6-13.
Bảng 6-13. Thời gian khởi động cho lựa chọn đồng hồ dao động tinh thể
CKSEL0 | SUT[1:0] | Thời gian khởi động từ khi tắt nguồn | Trì hoãn bổ sung từ việc đặt lại | Cách sử dụng được khuyến nghị |
0 | 00 | Xuất khẩu CK(1) | 14CK + 4 mili giây | Bộ cộng hưởng bằng gốm, công suất tăng nhanh |
0 | 01 | Xuất khẩu CK(1) | 14CK + 64 mili giây | Bộ cộng hưởng bằng gốm, công suất tăng từ từ |
0 | 10 | 1 nghìn (1024) CK(2) | 14CK | Bộ cộng hưởng bằng gốm, kích hoạt BOD |
0 | 11 | 1 nghìn (1024) CK(2) | 14CK + 4 mili giây | Bộ cộng hưởng bằng gốm, công suất tăng nhanh |
1 | 00 | 1 nghìn (1024) CK(2) | 14CK + 64 mili giây | Bộ cộng hưởng bằng gốm, công suất tăng từ từ |
1 | 01 | 16 nghìn (16384) CK | 14CK | Crystal Oscillator, BOD được kích hoạt |
1 | 10 | 16 nghìn (16384) CK | 14CK + 4 mili giây | Bộ dao động tinh thể, công suất tăng nhanh |
1 | 11 | 16 nghìn (16384) CK | 14CK + 64 mili giây | Crystal Oscillator, tăng dần sức mạnh |
Ghi chú
Các tùy chọn này chỉ nên được sử dụng khi không hoạt động gần với tần số tối đa của thiết bị và chỉ khi độ ổn định tần số khi khởi động không quan trọng đối với ứng dụng. Các tùy chọn này không phù hợp với tinh thể.
Các tùy chọn này được thiết kế để sử dụng với bộ cộng hưởng gốm và sẽ đảm bảo ổn định tần số khi khởi động. Chúng cũng có thể được sử dụng với tinh thể khi không hoạt động gần với tần số tối đa của thiết bị và nếu tần số ổn định khi khởi động không quan trọng đối với ứng dụng.
Nguồn đồng hồ mặc định
Thiết bị được vận chuyển với CKSEL = “0010”, SUT = “10” và CKDIV8 được lập trình. Do đó, nguồn xung nhịp mặc định được thiết lập là Bộ dao động RC bên trong chạy ở 8 MHz với thời gian khởi động dài nhất và đồng hồ hệ thống ban đầu được đặt trước là 8, dẫn đến xung nhịp hệ thống là 1.0 MHz. Cài đặt mặc định này đảm bảo rằng tất cả người dùng có thể thực hiện cài đặt nguồn đồng hồ mong muốn của họ bằng cách sử dụng Trong hệ thống hoặc High-voltage Lập trình viên.
Bộ định mức đồng hồ hệ thống
Đồng hồ hệ thống ATtiny25 / 45/85 có thể được chia bằng cách cài đặt “CLKPR - Đăng ký tỷ lệ đồng hồ” trên trang 32. Tính năng này có thể được sử dụng để giảm mức tiêu thụ điện năng khi yêu cầu về sức mạnh xử lý thấp. Điều này có thể được sử dụng với tất cả các tùy chọn nguồn xung nhịp và nó sẽ ảnh hưởng đến tần số xung nhịp của CPU và tất cả các thiết bị ngoại vi đồng bộ. clkI/O, clkADC, clkCPU và clkFLASH được chia cho một hệ số như trong Bảng 6-15 nơi trang 33.
Thời gian chuyển đổi
Khi chuyển đổi giữa các cài đặt cài đặt sẵn, Bộ định mức đồng hồ hệ thống đảm bảo rằng không có trục trặc nào xảy ra trong hệ thống đồng hồ và không có tần số trung gian nào cao hơn tần số đồng hồ tương ứng với cài đặt trước đó cũng như tần số đồng hồ tương ứng với cài đặt mới.
Bộ đếm gợn sóng triển khai bộ định tỷ lệ chạy ở tần số của đồng hồ không chia, có thể nhanh hơn tần số đồng hồ của CPU. Do đó, không thể xác định trạng thái của bộ định mức - ngay cả khi nó có thể đọc được và không thể dự đoán chính xác thời gian cần thiết để chuyển từ bộ phận đồng hồ này sang bộ phận đồng hồ khác.
Kể từ thời điểm các giá trị CLKPS được ghi, phải mất từ T1 + T2 đến T1 + 2 * T2 trước khi tần số xung nhịp mới được kích hoạt. Trong khoảng thời gian này, 2 cạnh đồng hồ hoạt động được tạo ra. Ở đây, T1 là khoảng thời gian đồng hồ trước đó và T2 là khoảng thời gian tương ứng với cài đặt bộ đếm trước mới.
Bộ đệm đầu ra xung nhịp
Thiết bị có thể xuất xung nhịp hệ thống trên chân CLKO (khi không được sử dụng như chân XTAL2). Để kích hoạt đầu ra, cầu chì CKOUT phải được lập trình. Chế độ này phù hợp khi xung nhịp chip được sử dụng để điều khiển các mạch khác trên hệ thống. Lưu ý rằng đồng hồ sẽ không được xuất ra trong khi đặt lại và hoạt động bình thường của chân I / O sẽ bị ghi đè khi cầu chì được lập trình. Bộ dao động RC bên trong, Bộ tạo dao động WDT, PLL và xung nhịp bên ngoài (CLKI) có thể được chọn khi xung nhịp được xuất trên CLKO. Không thể sử dụng bộ dao động tinh thể (XTAL1, XTAL2) cho đầu ra xung nhịp trên CLKO. Nếu sử dụng System Clock Prescaler, thì nó sẽ là đầu ra của đồng hồ hệ thống đã chia.
Đăng ký Mô tả
OSCCAL - Đăng ký Hiệu chuẩn Bộ dao động
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Đọc/Ghi | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T |
Bit 7: 0 - CAL [7: 0]: Giá trị hiệu chỉnh bộ dao động
Thanh ghi Hiệu chuẩn Bộ dao động được sử dụng để cắt Bộ dao động RC Bên trong đã Hiệu chỉnh để loại bỏ các biến thể của quá trình khỏi tần số bộ dao động. Giá trị hiệu chuẩn được lập trình trước sẽ tự động được ghi vào thanh ghi này trong quá trình thiết lập lại chip, tạo ra tần số hiệu chuẩn ban đầu như được chỉ định Bảng 21-2 nơi trang 164. Phần mềm ứng dụng có thể ghi thanh ghi này để thay đổi tần số dao động. Bộ dao động có thể được hiệu chỉnh thành các tần số như được chỉ định trong Bảng 21-2 nơi trang 164. Hiệu chuẩn ngoài phạm vi đó không được đảm bảo.
Lưu ý rằng bộ dao động này được sử dụng để định thời gian truy cập ghi EEPROM và Flash, và thời gian ghi này sẽ bị ảnh hưởng tương ứng. Nếu EEPROM hoặc Flash được ghi, không hiệu chỉnh lên hơn 8.8 MHz. Nếu không, ghi EEPROM hoặc Flash có thể không thành công.
Bit CAL7 xác định phạm vi hoạt động của bộ dao động. Đặt bit này thành 0 sẽ cho dải tần thấp nhất, đặt bit này thành 1 sẽ cho dải tần cao nhất. Hai dải tần số chồng lên nhau, nói cách khác, cài đặt OSCCAL = 0x7F cho tần số cao hơn OSCCAL = 0x80.
Các bit CAL [6: 0] được sử dụng để điều chỉnh tần số trong phạm vi đã chọn. Cài đặt 0x00 cho tần số thấp nhất trong dải đó và cài đặt 0x7F cho tần số cao nhất trong dải.
Để đảm bảo MCU hoạt động ổn định, giá trị hiệu chuẩn nên được thay đổi nhỏ. Sự thay đổi tần suất hơn 2% từ chu kỳ này sang chu kỳ tiếp theo có thể dẫn đến hành vi không thể phát hiện được. Các thay đổi trong OSCCAL không được vượt quá 0x20 cho mỗi lần hiệu chuẩn. Cần phải đảm bảo rằng MCU được giữ ở trạng thái Đặt lại trong những thay đổi như vậy về tần số đồng hồ
Bảng 6-14. Phạm vi tần số dao động RC bên trong
Giá trị OSCCAL | Tần suất thấp nhất điển hình so với tần suất danh nghĩa | Tần suất cao nhất điển hình so với tần số danh nghĩa |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Đăng ký tỷ lệ đồng hồ
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Đọc/Ghi | Đ/T | R | R | R | Đ/T | Đ/T | Đ/T | Đ/T |
Giá trị ban đầu 0 0 0 0 Xem mô tả bit
Bit 7 - CLKPCE: Bật thay đổi bộ định mức đồng hồ
Bit CLKPCE phải được ghi vào logic một để cho phép thay đổi các bit CLKPS. Bit CLKPCE chỉ được cập nhật khi các bit khác trong CLKPR được ghi ngẫu nhiên bằng XNUMX. CLKPCE được phần cứng xóa bốn chu kỳ sau khi nó được ghi hoặc khi các bit CLKPS được ghi. Việc viết lại bit CLKPCE trong khoảng thời gian chờ này không kéo dài khoảng thời gian chờ, cũng như xóa bit CLKPCE.
Bit 6: 4 - Res: Số bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bits 3: 0 - CLKPS [3: 0]: Clock Prescaler Chọn bit 3 - 0
Các bit này xác định hệ số phân chia giữa nguồn đồng hồ đã chọn và đồng hồ hệ thống bên trong. Các bit này có thể được viết thời gian chạy để thay đổi tần số xung nhịp cho phù hợp với các yêu cầu ứng dụng. Khi bộ chia phân chia đầu vào xung nhịp chủ cho MCU, tốc độ của tất cả các thiết bị ngoại vi đồng bộ bị giảm khi sử dụng hệ số phân chia. Các yếu tố phân chia được đưa ra trong Bảng 6-15.
Để tránh những thay đổi không chủ ý của tần số xung nhịp, một quy trình ghi đặc biệt phải được tuân theo để thay đổi các bit CLKPS:
Ghi bit Kích hoạt Thay đổi Định mức Đồng hồ (CLKPCE) thành một và tất cả các bit khác trong CLKPR về không.
Trong vòng bốn chu kỳ, ghi giá trị mong muốn vào CLKPS trong khi ghi số XNUMX vào CLKPCE.
Ngắt phải được vô hiệu hóa khi thay đổi cài đặt bộ định hạng trước để đảm bảo quy trình ghi không bị gián đoạn.
Cầu chì CKDIV8 xác định giá trị ban đầu của các bit CLKPS. Nếu CKDIV8 không được lập trình, các bit CLKPS sẽ được đặt lại thành “0000”. Nếu CKDIV8 được lập trình, các bit CLKPS được đặt lại thành “0011”, tạo ra hệ số chia là 8 khi khởi động. Tính năng này nên được sử dụng nếu nguồn đồng hồ đã chọn có tần số cao hơn tần số tối đa của thiết bị ở điều kiện hoạt động hiện tại. Lưu ý rằng bất kỳ giá trị nào cũng có thể được ghi vào các bit CLKPS bất kể cài đặt Cầu chì CKDIVXNUMX. Phần mềm ứng dụng phải đảm bảo đủ hệ số chia
được chọn nếu nguồn xung nhịp đã chọn có tần số cao hơn tần số tối đa của thiết bị ở điều kiện hoạt động hiện tại. Thiết bị được vận chuyển với Cầu chì CKDIV8 được lập trình.
Bảng 6-15. Đồng hồ Prescaler Chọn
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Yếu tố phân chia đồng hồ |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | Kín đáo |
1 | 0 | 1 | 0 | Kín đáo |
1 | 0 | 1 | 1 | Kín đáo |
1 | 1 | 0 | 0 | Kín đáo |
1 | 1 | 0 | 1 | Kín đáo |
1 | 1 | 1 | 0 | Kín đáo |
1 | 1 | 1 | 1 | Kín đáo |
Lưu ý: Bộ chia tỷ lệ trước bị tắt trong chế độ tương thích ATtiny15 và việc ghi vào CLKPR cũng như việc lập trình cầu chì CKDIV8 không có bất kỳ ảnh hưởng nào đến đồng hồ hệ thống (sẽ luôn là 1.6 MHz).
Quản lý nguồn và Chế độ ngủ
Hiệu suất cao và hiệu quả mã hàng đầu trong ngành làm cho vi điều khiển AVR trở thành lựa chọn lý tưởng cho các ứng dụng công suất thấp. Ngoài ra, chế độ ngủ cho phép ứng dụng tắt các mô-đun không sử dụng trong MCU, do đó tiết kiệm điện năng. AVR cung cấp các chế độ ngủ khác nhau cho phép người dùng điều chỉnh mức tiêu thụ điện năng theo yêu cầu của ứng dụng.
Chế độ ngủ
Hình 6-1 nơi trang 23 trình bày các hệ thống đồng hồ khác nhau và sự phân bố của chúng trong ATtiny25 / 45/85. Hình này rất hữu ích trong việc chọn một chế độ ngủ thích hợp. Bảng 7-1 hiển thị các chế độ ngủ khác nhau và nguồn đánh thức của chúng.
Bảng 7-1. Miền đồng hồ hoạt động và nguồn đánh thức trong các chế độ ngủ khác nhau
Miền đồng hồ hoạt động | Bộ dao động | Nguồn đánh thức | ||||||||||
Chế độ ngủ | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Đã bật nguồn đồng hồ chính | INT0 và thay đổi mã pin | SPM / EEPROM
Sẵn sàng |
Điều kiện bắt đầu USI |
ADC | I/O khác | Chó canh gác Ngắt |
Nhàn rỗi | X | X | X | X | X | X | X | X | X | X | ||
Giảm nhiễu ADC | X | X | X(1) | X | X | X | X | |||||
Tắt nguồn | X(1) | X | X |
Lưu ý: Đối với INT0, chỉ ngắt mức.
Để vào bất kỳ chế độ ngủ nào trong ba chế độ nghỉ, bit SE trong MCUCR phải được ghi vào logic một và lệnh SLEEP phải được thực thi. Các bit SM [1: 0] trong Thanh ghi MCUCR chọn chế độ nghỉ (Chờ, Giảm nhiễu ADC hoặc Tắt nguồn) sẽ được kích hoạt bằng lệnh SLEEP. Xem Bảng 7-2 để có một bản tóm tắt.
Nếu một ngắt đã kích hoạt xảy ra trong khi MCU ở chế độ ngủ, MCU sẽ thức dậy. MCU sau đó được tạm dừng trong bốn chu kỳ ngoài thời gian khởi động, thực hiện quy trình ngắt và tiếp tục thực thi từ lệnh sau SLEEP. Nội dung của sổ đăng ký File và SRAM không thay đổi khi thiết bị thức dậy từ chế độ ngủ. Nếu đặt lại xảy ra trong chế độ ngủ, MCU sẽ thức dậy và thực thi từ Véc tơ đặt lại.
Lưu ý: rằng nếu một mức ngắt được kích hoạt được sử dụng để đánh thức thì mức đã thay đổi phải được giữ trong một thời gian để đánh thức MCU (và để MCU vào quy trình phục vụ ngắt). Nhìn thấy “Ngắt bên ngoài” trên trang 49 để biết thêm chi tiết.
Chế độ nhàn rỗi
Khi các bit SM[1:0] được ghi thành 00, lệnh SLEEP đưa MCU vào chế độ Chờ, dừng CPU nhưng cho phép Bộ so sánh tương tự, ADC, USI, Bộ định thời/Bộ đếm, Cơ quan giám sát và hệ thống ngắt tiếp tục hoạt động. ăn uống. Về cơ bản, chế độ ngủ này tạm dừng clkCPU và clkFLASH, đồng thời cho phép các đồng hồ khác chạy.
Chế độ không hoạt động cho phép MCU đánh thức từ các ngắt được kích hoạt bên ngoài cũng như các ngắt bên trong như Tràn bộ hẹn giờ. Nếu không cần đánh thức từ ngắt Bộ so sánh tương tự, Bộ so sánh tương tự có thể bị tắt bằng cách đặt bit ACD trong “ACSR - Đăng ký trạng thái và điều khiển so sánh tương tự” trên trang 120. Điều này sẽ giảm tiêu thụ điện năng ở chế độ Chờ. Nếu ADC được bật, quá trình chuyển đổi sẽ tự động bắt đầu khi chế độ này được nhập.
Chế độ giảm tiếng ồn ADC
Khi các bit SM[1:0] được ghi vào 01, lệnh SLEEP đưa MCU vào chế độ Giảm nhiễu ADC, dừng CPU nhưng cho phép ADC, các ngắt bên ngoài và Watchdog tiếp tục hoạt động (nếu được bật). Chế độ ngủ này tạm dừng clkI/O, clkCPU và clkFLASH, đồng thời cho phép các đồng hồ khác chạy.
Điều này cải thiện môi trường nhiễu cho ADC, cho phép các phép đo có độ phân giải cao hơn. Nếu ADC được bật, quá trình chuyển đổi sẽ tự động bắt đầu khi chế độ này được nhập. Ngoài hình thức ngắt Hoàn thành chuyển đổi ADC, chỉ có Thiết lập lại bên ngoài, Thiết lập lại cơ quan giám sát, Thiết lập lại màu nâu, ngắt sẵn sàng SPM / EEPROM, ngắt mức bên ngoài trên INT0 hoặc ngắt thay đổi chân có thể đánh thức MCU khỏi ADC Noise Reduction chế độ.
Chế độ tắt nguồn
Khi các bit SM [1: 0] được ghi thành 10, lệnh SLEEP làm cho MCU chuyển sang chế độ Power-down. Trong chế độ này, Bộ tạo dao động bị dừng, trong khi bộ phận bên ngoài ngắt, phát hiện điều kiện khởi động USI và Cơ quan giám sát tiếp tục hoạt động (nếu được bật). Chỉ có Thiết lập lại bên ngoài, Thiết lập lại Cơ quan giám sát, Thiết lập lại Brown-out, ngắt điều kiện khởi động USI, ngắt mức bên ngoài trên INT0 hoặc ngắt thay đổi chân có thể đánh thức MCU. Chế độ ngủ này tạm dừng tất cả các đồng hồ đã tạo, chỉ cho phép hoạt động của các mô-đun không đồng bộ.
Vô hiệu hóa BOD phần mềm
Khi Bộ phát hiện màu nâu (BOD) được kích hoạt bằng cầu chì BODLEVEL (xem Bảng 20-4 nơi trang 148), HĐQT đang tích cực theo dõi nguồn cungtage trong thời gian ngủ. Trong một số thiết bị, có thể tiết kiệm điện bằng cách tắt BOD bằng phần mềm ở chế độ nghỉ Power-Down. Khi đó, mức tiêu thụ điện năng ở chế độ ngủ sẽ ở cùng mức như khi BOD bị vô hiệu hóa trên toàn cầu bởi cầu chì.
Nếu BOD bị vô hiệu hóa bằng phần mềm, chức năng BOD sẽ bị tắt ngay sau khi vào chế độ ngủ. Khi thức dậy sau khi ngủ, BOD sẽ tự động được bật lại. Điều này đảm bảo hoạt động an toàn trong trường hợp mức VCC giảm trong thời gian ngủ.
Khi BOD đã bị vô hiệu hóa, thời gian đánh thức từ chế độ ngủ sẽ giống như thời gian thức dậy từ ĐẶT LẠI. Người dùng phải định cấu hình thủ công thời gian đánh thức để tham chiếu bandgap có thời gian bắt đầu và BOD hoạt động chính xác trước khi MCU tiếp tục thực thi mã. Xem các bit cầu chì SUT [1: 0] và CKSEL [3: 0] trong bảng “Fuse Low Byte” trên trang 149
BOD vô hiệu được kiểm soát bởi bit BODS (BOD Sleep) của MCU Control Register, xem “MCUCR - Điều khiển MCU Đăng ký ”trên trang 37. Ghi bit này vào một sẽ tắt BOD trong Power-Down, trong khi viết số XNUMX giữ cho BOD hoạt động. Cài đặt mặc định là XNUMX, tức là BOD đang hoạt động.
Việc ghi vào bit BODS được điều khiển bởi một chuỗi định thời và một bit cho phép, xem “MCUCR - Cơ quan điều khiển MCU- ter ”trên trang 37.
Hạn chế
Chức năng vô hiệu hóa BOD đã được triển khai trong các thiết bị sau, chỉ:
ATtiny25, bản sửa đổi E và mới hơn
ATtiny45, bản sửa đổi D và mới hơn
ATtiny85, bản sửa đổi C và mới hơn
Các bản sửa đổi được đánh dấu trên gói thiết bị và có thể được định vị như sau:
Mặt dưới cùng của gói 8P3 và 8S2
Mặt trên của gói 20M1
Đăng ký giảm năng lượng
Đăng ký giảm năng lượng (PRR), xem “PRR - Đăng ký giảm năng lượng” trên trang 38, cung cấp một phương pháp để giảm tiêu thụ điện năng bằng cách dừng đồng hồ đối với các thiết bị ngoại vi riêng lẻ. Trạng thái hiện tại của thiết bị ngoại vi bị đóng băng và không thể đọc hoặc ghi các thanh ghi I / O. Các tài nguyên được sử dụng bởi thiết bị ngoại vi khi dừng đồng hồ sẽ vẫn bị chiếm dụng, do đó, trong hầu hết các trường hợp, thiết bị ngoại vi phải được tắt trước khi dừng đồng hồ. Đánh thức mô-đun, được thực hiện bằng cách xóa bit trong PRR, đặt mô-đun ở trạng thái giống như trước khi tắt.
Chế độ tắt mô-đun có thể được sử dụng ở chế độ Chờ và chế độ Hoạt động để giảm đáng kể mức tiêu thụ điện năng tổng thể. Trong tất cả các chế độ ngủ khác, đồng hồ đã dừng. Xem “Dòng điện cung cấp của các mô-đun I / O” trên trang 177 ví dụampđồng nghiệp.
Giảm thiểu mức tiêu thụ điện năng
Có một số vấn đề cần xem xét khi cố gắng giảm thiểu mức tiêu thụ điện năng trong hệ thống điều khiển AVR. Nói chung, chế độ ngủ nên được sử dụng càng nhiều càng tốt và chế độ ngủ nên được chọn sao cho càng ít chức năng của thiết bị hoạt động càng tốt. Tất cả các chức năng không cần thiết nên được tắt. Đặc biệt, các mô-đun sau có thể cần được xem xét đặc biệt khi cố gắng đạt được mức tiêu thụ điện năng thấp nhất có thể.
Bộ chuyển đổi Analog sang Digital
Nếu được bật, ADC sẽ được bật ở tất cả các chế độ ngủ. Để tiết kiệm điện, nên tắt ADC trước khi vào bất kỳ chế độ nghỉ nào. Khi ADC được tắt và bật lại, chuyển đổi tiếp theo sẽ là chuyển đổi mở rộng. Tham khảo “Bộ chuyển đổi tương tự sang kỹ thuật số” trên trang 122 để biết chi tiết về hoạt động của ADC.
Bộ so sánh tương tự
Khi vào chế độ Chờ, Bộ so sánh Analog sẽ bị tắt nếu không được sử dụng. Khi vào chế độ Giảm nhiễu ADC, Bộ so sánh Analog sẽ bị tắt. Trong các chế độ ngủ khác, Bộ so sánh Analog sẽ tự động bị tắt. Tuy nhiên, nếu Bộ so sánh tương tự được thiết lập để sử dụng Khối lượng bên trongtage Tham chiếu làm đầu vào, Bộ so sánh tương tự nên được tắt ở tất cả các chế độ ngủ. Nếu không, Vol nội bộtage Tham chiếu sẽ được bật, độc lập với chế độ ngủ. Tham khảo “Bộ so sánh tương tự” trên trang 119 để biết chi tiết về cách cấu hình Bộ so sánh tương tự.
Máy dò màu nâu
Nếu không cần đến Bộ phát hiện màu nâu trong ứng dụng, mô-đun này nên được tắt. Nếu Máy dò màu nâu được kích hoạt bởi Cầu chì BODLEVEL, nó sẽ được bật ở tất cả các chế độ ngủ và do đó, luôn tiêu thụ điện năng. Ở chế độ ngủ sâu hơn, điều này sẽ đóng góp đáng kể vào tổng mức tiêu thụ hiện tại. Xem “Phát hiện màu nâu- tion ”trên trang 41 Và “Software BOD Disable” trên trang 35 để biết chi tiết về cách định cấu hình Bộ phát hiện màu nâu.
Vol nội bộtage Tham khảo
Vol nội bộtage Tham chiếu sẽ được kích hoạt khi cần bằng Phát hiện màu nâu, Bộ so sánh tương tự hoặc ADC. Nếu các mô-đun này bị vô hiệu hóa như được mô tả trong các phần ở trên, vol nội bộtagTham chiếu e sẽ bị vô hiệu hóa và nó sẽ không được tiêu thụ điện năng. Khi bật lại, người dùng phải cho phép tham chiếu khởi động trước khi sử dụng đầu ra. Nếu tham chiếu được giữ ở chế độ nghỉ, đầu ra có thể được sử dụng ngay lập tức. Tham khảo “Tập nội bộtage Tham khảo ”trên trang 42 để biết chi tiết về thời gian khởi động.
Đồng hồ bấm giờ giám sát
Nếu không cần đến Watchdog Timer trong ứng dụng, mô-đun này nên được tắt. Nếu bật Watchdog Timer, nó sẽ được bật ở tất cả các chế độ ngủ và do đó, luôn tiêu thụ điện năng. Ở chế độ ngủ sâu hơn, điều này sẽ đóng góp đáng kể vào tổng mức tiêu thụ hiện tại. Tham khảo “Bộ hẹn giờ cho cơ quan giám sát” trên trang 42 để biết chi tiết về cách cấu hình Bộ định thời gian giám sát.
Chân cổng
Khi vào chế độ ngủ, tất cả các chân cổng phải được cấu hình để sử dụng nguồn điện tối thiểu. Điều quan trọng nhất sau đó là đảm bảo rằng không có chân nào điều khiển tải điện trở. Ở chế độ ngủ khi cả đồng hồ I/O (clkI/O) và đồng hồ ADC (clkADC) đều bị dừng, bộ đệm đầu vào của thiết bị sẽ bị vô hiệu hóa. Điều này đảm bảo rằng không có điện năng được tiêu thụ
bằng logic đầu vào khi không cần thiết. Trong một số trường hợp, logic đầu vào là cần thiết để phát hiện các điều kiện đánh thức và
sau đó nó sẽ được kích hoạt. Tham khảo phần “Chế độ Ngủ và Bật đầu vào Kỹ thuật số” trên trang 57 để biết chi tiết về những chân nào được bật. Nếu bộ đệm đầu vào được bật và tín hiệu đầu vào được thả nổi hoặc có mức tín hiệu tương tự gần với VCC/2, thì bộ đệm đầu vào sẽ sử dụng quá nhiều năng lượng.
Đối với các chân đầu vào tương tự, bộ đệm đầu vào kỹ thuật số phải luôn được tắt. Mức tín hiệu tương tự gần với VCC/2 trên chân đầu vào có thể gây ra dòng điện đáng kể ngay cả ở chế độ hoạt động. Bộ đệm đầu vào kỹ thuật số có thể bị vô hiệu hóa bằng cách ghi vào Thanh ghi vô hiệu hóa đầu vào kỹ thuật số (DIDR0). tham khảo “DIDR0 - Thanh ghi vô hiệu hóa đầu vào kỹ thuật số 0” trên trang 121 để biết thêm chi tiết.
Đăng ký Mô tả
MCUCR - Đăng ký điều khiển MCU
Thanh ghi điều khiển MCU chứa các bit điều khiển để quản lý nguồn.
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | CƠ THỂ | ISC01 | ISC00 | MCUCR |
Đọc/Ghi | R | Đ/T | Đ/T | Đ/T | Đ/T | R | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - BODS: BOD Sleep
Chức năng vô hiệu hóa BOD chỉ có sẵn trong một số thiết bị. Xem “Giới hạn” trên trang 36.
Để vô hiệu hóa BOD trong khi ngủ (xem Bảng 7-1 nơi trang 34) bit BODS phải được ghi vào logic một. Điều này được điều khiển bởi một chuỗi định thời và bit cho phép, BODSE trong MCUCR. Đầu tiên, cả hai BODS và BODSE phải được đặt thành một. Thứ hai, trong vòng bốn chu kỳ đồng hồ, BODS phải được đặt thành một và BODSE phải được đặt bằng không. Bit BODS hoạt động ba chu kỳ đồng hồ sau khi nó được thiết lập. Lệnh ngủ phải được thực hiện trong khi BODS đang hoạt động để tắt BOD cho chế độ ngủ thực tế. Bit BODS sẽ tự động bị xóa sau ba chu kỳ đồng hồ.
Trong các thiết bị mà Sleeping BOD chưa được triển khai, bit này không được sử dụng và sẽ luôn đọc bằng không.
Bit 5 - SE: Bật chế độ ngủ
Bit SE phải được ghi vào logic một để đưa MCU vào chế độ ngủ khi lệnh SLEEP được thực thi. Để tránh MCU đi vào chế độ ngủ trừ khi đó là mục đích của lập trình viên, nên ghi bit Kích hoạt chế độ ngủ (SE) cho một ngay trước khi thực hiện lệnh SLEEP và xóa nó ngay sau khi thức dậy.
Bit 4: 3 - SM [1: 0]: Chế độ ngủ Chọn Bit 1 và 0
Các bit này chọn giữa ba chế độ ngủ có sẵn như được hiển thị trong Bảng 7-2.
Bảng 7-2. Chọn chế độ ngủ
SM1 | SM0 | Chế độ ngủ |
0 | 0 | Nhàn rỗi |
0 | 1 | Giảm nhiễu ADC |
1 | 0 | Tắt nguồn |
1 | 1 | Kín đáo |
Bit 2 - BODSE: Kích hoạt chế độ ngủ BOD
Chức năng vô hiệu hóa BOD chỉ có sẵn trong một số thiết bị. Xem “Giới hạn” trên trang 36.
Bit BODSE cho phép thiết lập bit điều khiển BODS, như được giải thích trên mô tả bit BODS. Sự vô hiệu hóa BOD được thực hiện theo một trình tự có thời gian.
Bit này không được sử dụng trong các thiết bị chưa thực hiện vô hiệu hóa BOD phần mềm và sẽ đọc là XNUMX trong các thiết bị đó.
PRR - Đăng ký giảm năng lượng
Thanh ghi giảm công suất cung cấp một phương pháp để giảm tiêu thụ điện năng bằng cách cho phép tắt tín hiệu xung nhịp ngoại vi.
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
Đọc/Ghi | R | R | R | R | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7: 4 - Res: Số bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 3 - PRTIM1: Bộ hẹn giờ / Bộ đếm giảm năng lượng1
Việc ghi logic một vào bit này sẽ tắt mô-đun Timer / Counter1. Khi Timer / Counter1 được bật, hoạt động sẽ tiếp tục như trước khi tắt máy.
Bit 2 - PRTIM0: Bộ hẹn giờ / Bộ đếm giảm năng lượng0
Việc ghi logic một vào bit này sẽ tắt mô-đun Timer / Counter0. Khi Timer / Counter0 được bật, hoạt động sẽ tiếp tục như trước khi tắt máy.
Bit 1 - PRUSI: USI giảm năng lượng
Viết logic một vào bit này sẽ tắt USI bằng cách dừng đồng hồ ở mô-đun. Khi đánh thức USI một lần nữa, USI nên được khởi tạo lại để đảm bảo hoạt động bình thường.
Bit 0 - PRADC: ADC giảm năng lượng
Viết logic một vào bit này sẽ tắt ADC. ADC phải được tắt trước khi tắt. Lưu ý rằng đồng hồ ADC cũng được sử dụng bởi một số bộ phận của bộ so sánh tương tự, có nghĩa là bộ so sánh tương tự không thể được sử dụng khi bit này ở mức cao.
Kiểm soát và thiết lập lại hệ thống
Đặt lại AVR
Trong quá trình thiết lập lại, tất cả các Thanh ghi I / O được đặt thành giá trị ban đầu của chúng và chương trình bắt đầu thực hiện từ Vec- tor Đặt lại. Lệnh được đặt tại Vector Reset phải là lệnh RJMP - Relative Jump - đối với quy trình xử lý reset. Nếu chương trình không bao giờ bật nguồn ngắt, các Vectơ ngắt sẽ không được sử dụng và mã chương trình thông thường có thể được đặt tại các vị trí này. Sơ đồ mạch trong Hình 8-1 hiển thị logic đặt lại. Các tham số điện của mạch đặt lại được đưa ra trong “Đặc điểm Hệ thống và Đặt lại” trên trang 165.
Hình 8-1 Đặt lại logic
Các cổng I / O của AVR ngay lập tức được đặt lại về trạng thái ban đầu khi nguồn đặt lại hoạt động. Điều này không yêu cầu bất kỳ nguồn đồng hồ nào đang chạy.
Sau khi tất cả các nguồn đặt lại không hoạt động, bộ đếm độ trễ sẽ được gọi, kéo dài quá trình đặt lại bên trong. Điều này cho phép nguồn điện đạt mức ổn định trước khi bắt đầu hoạt động bình thường. Khoảng thời gian chờ của bộ đếm trễ được xác định bởi người dùng thông qua các cầu chì SUT và CKSEL. Các lựa chọn khác nhau cho khoảng thời gian trì hoãn được trình bày trong "Đồng hồ Nguồn ”trên trang 25.
Đặt lại nguồn
ATtiny25 / 45/85 có bốn nguồn thiết lập lại:
Đặt lại khi bật nguồn. MCU được đặt lại khi nguồn cung cấptage ở dưới ngưỡng Đặt lại khi bật nguồn (VPOT).
Đặt lại bên ngoài. MCU được đặt lại khi có mức thấp trên chân ĐẶT LẠI lâu hơn độ dài xung tối thiểu.
Thiết lập lại cơ quan giám sát. MCU được đặt lại khi hết thời gian Watchdog Timer và Watchdog được bật.
Thiết lập lại màu nâu. MCU được đặt lại khi nguồn cung cấptage VCC nằm dưới ngưỡng Đặt lại mất điện (VBOT) và Bộ phát hiện mất điện được bật.
Đặt lại khi bật nguồn
Xung Khởi động lại nguồn (POR) được tạo ra bởi một mạch phát hiện trên chip. Mức độ phát hiện được xác định trong “Sy- tem và Đặt lại Đặc điểm ”trên trang 165. POR được kích hoạt bất cứ khi nào VCC ở dưới mức phát hiện. Mạch POR có thể được sử dụng để kích hoạt Khởi động lại, cũng như để phát hiện lỗi cung cấp điện áp.tage.
Mạch Khởi động lại nguồn (POR) đảm bảo rằng thiết bị được đặt lại từ Bật nguồn. Đạt đến ngưỡng Bật nguồn Đặt lại voltage gọi bộ đếm trễ, bộ đếm này xác định khoảng thời gian thiết bị được giữ ở trạng thái ĐẶT LẠI sau khi VCC tăng. Tín hiệu CÀI ĐẶT LẠI được kích hoạt lại, không có bất kỳ độ trễ nào, khi VCC giảm xuống dưới mức phát hiện.
Hình 8-2. Khởi động MCU, THIẾT LẬP LẠI gắn liền với VCC
THIẾT LẬP LẠI NỘI BỘ
Hình 8-3. Khởi động MCU, THIẾT LẬP LẠI Mở rộng ra bên ngoài
Đặt lại bên ngoài
Đặt lại bên ngoài được tạo bởi mức thấp trên chân ĐẶT LẠI nếu được bật. Đặt lại xung dài hơn độ rộng xung tối thiểu (xem “Đặc điểm Hệ thống và Đặt lại” trên trang 165) sẽ tạo ra một thiết lập lại, ngay cả khi đồng hồ không chạy. Các xung ngắn hơn không được đảm bảo để tạo ra một thiết lập lại. Khi tín hiệu được áp dụng đạt đến Ngưỡng đặt lại Voltage – VRST – ở cạnh dương của nó, bộ đếm độ trễ khởi động MCU sau khi Hết thời gian chờ.
Hình 8-4. Đặt lại bên ngoài trong khi vận hành
Phát hiện màu nâu
ATtiny25/45/85 có mạch Phát hiện mất điện áp (BOD) trên chip để theo dõi mức VCC trong quá trình hoạt động bằng cách so sánh nó với mức kích hoạt cố định. Mức kích hoạt cho BOD có thể được chọn bởi Cầu chì BODLEVEL. Mức kích hoạt có độ trễ để đảm bảo Phát hiện Brown-out không tăng đột biến. Độ trễ ở mức phát hiện nên được hiểu là VBOT+ = VBOT + VHYST/2 và VBOT- = VBOT – VHYST/2.
Khi BOD được bật và VCC giảm xuống giá trị dưới mức kích hoạt (VBOT- trong Hình 8-5), Thiết lập lại mất điện ngay lập tức được kích hoạt. Khi VCC tăng trên mức kích hoạt (VBOT+ trong Hình 8-5), bộ đếm độ trễ khởi động MCU sau khi hết thời gian chờ tTOUT.
Mạch BOD sẽ chỉ phát hiện sự sụt giảm VCC nếu voltage ở dưới mức kích hoạt lâu hơn tBOD được đưa ra trong “Đặc điểm Hệ thống và Đặt lại” trên trang 165.
Đặt lại cơ quan giám sát
Khi Watchdog hết thời gian chờ, nó sẽ tạo ra một xung đặt lại ngắn có thời lượng một chu kỳ CK. Trên sườn xuống của xung này, bộ đếm thời gian trễ bắt đầu đếm Khoảng thời gian chờ tTOUT. tham khảo “Bộ hẹn giờ cho cơ quan giám sát” trên trang 42 để biết chi tiết về hoạt động của Watchdog Timer.
Tậptage Tham chiếu cho phép tín hiệu và thời gian khởi động
VoltagTài liệu tham khảo e có thời gian khởi động có thể ảnh hưởng đến cách sử dụng. Thời gian khởi động được đưa ra trong “Đặc điểm Hệ thống và Đặt lại” trên trang 165. Để tiết kiệm điện, tham chiếu không phải lúc nào cũng được bật. Sự phản xạ được bật trong các trường hợp sau:
Khi BOD được kích hoạt (bằng cách lập trình BODLEVEL [2: 0] Fuse Bits).
Khi tham chiếu băng tần được kết nối với Bộ so sánh tương tự (bằng cách đặt bit ACBG trong ACSR).
Khi ADC được bật.
Do đó, khi BOD không được kích hoạt, sau khi thiết lập bit ACBG hoặc bật ADC, người dùng phải luôn cho phép tham chiếu khởi động trước khi đầu ra từ Bộ so sánh tương tự hoặc ADC được sử dụng. Để giảm tiêu thụ điện năng ở chế độ Tắt nguồn, người dùng có thể tránh ba điều kiện trên để đảm bảo rằng tham chiếu đã được tắt trước khi vào chế độ Tắt nguồn.
Đồng hồ bấm giờ giám sát
Watchdog Timer được tạo xung nhịp từ Bộ tạo dao động trên chip chạy ở 128 kHz. Bằng cách điều khiển bộ đếm trước Bộ định thời gian giám sát, khoảng thời gian Đặt lại cơ quan giám sát có thể được điều chỉnh như trong Bảng 8-3 nơi trang 46. Lệnh WDR - Watchdog Reset - đặt lại Watchdog Timer. Watchdog Timer cũng được đặt lại khi nó bị vô hiệu hóa và khi xảy ra Đặt lại chip. Có thể chọn mười khoảng thời gian chu kỳ đồng hồ khác nhau để xác định khoảng thời gian đặt lại. Nếu hết thời gian đặt lại mà không có Thiết lập lại Cơ quan giám sát khác, ATtiny25 / 45/85 sẽ đặt lại và thực thi từ Véc tơ Đặt lại. Để biết thông tin chi tiết về thời gian trên Watchdog Reset, hãy tham khảo Bảng 8-3 nơi trang 46.
Watchdog Timer cũng có thể được cấu hình để tạo ngắt thay vì đặt lại. Điều này có thể rất hữu ích khi sử dụng Watchdog để đánh thức từ Power-down.
Để ngăn chặn việc vô hiệu hóa Cơ quan giám sát hoặc thay đổi khoảng thời gian chờ ngoài ý muốn, hai mức độ an toàn khác nhau được chọn bởi cầu chì WDTON như được hiển thị trong Bảng 8-1 Tham khảo “Trình tự theo thời gian để thay đổi nghĩa bóng của Watchdog Timer ”trên trang 43 để biết thêm chi tiết.
Bảng 8-1. Cấu hình WDT như một chức năng của cài đặt cầu chì của WDTON
WDTON | Mức độ an toàn | Trạng thái ban đầu của WDT | Cách tắt WDT | Cách thay đổi thời gian chờ |
Không được lập trình | 1 | Tàn tật | Trình tự thời gian | Không có giới hạn |
Đã lập trình | 2 | Đã bật | Luôn được bật | Trình tự thời gian |
Hình 8-7. Đồng hồ bấm giờ
Trình tự định thời để thay đổi cấu hình của bộ định giờ cơ quan giám sát
Trình tự thay đổi cấu hình hơi khác nhau giữa hai mức độ an toàn. Các thủ tục riêng biệt được mô tả cho từng cấp độ.
Mức độ an toàn 1: Trong chế độ này, Watchdog Timer ban đầu bị vô hiệu hóa, nhưng có thể được kích hoạt bằng cách ghi bit WDE vào một mà không có bất kỳ hạn chế nào. Một chuỗi thời gian là cần thiết khi tắt Bộ hẹn giờ Watchdog đã bật. Để tắt Bộ hẹn giờ Watchdog đã bật, phải tuân theo quy trình sau:
Trong cùng một thao tác, hãy ghi một logic vào WDCE và WDE. Một logic phải được ghi vào WDE - ít hơn giá trị trước đó của bit WDE.
Trong vòng bốn chu kỳ xung nhịp tiếp theo, trong cùng một thao tác, ghi các bit WDE và WDP như mong muốn, nhưng với bit WDCE bị xóa.
Mức độ an toàn 2: Trong chế độ này, Watchdog Timer luôn được bật và bit WDE sẽ luôn đọc là một. Một chuỗi thời gian là cần thiết khi thay đổi khoảng thời gian Hết thời gian giám sát. Để thay đổi Thời gian chờ của cơ quan giám sát, phải tuân theo quy trình sau:
Trong cùng một thao tác, hãy ghi một phép logic vào WDCE và WDE. Mặc dù WDE luôn được đặt, WDE phải được ghi vào một để bắt đầu trình tự định giờ.
Trong vòng bốn chu kỳ đồng hồ tiếp theo, trong cùng một thao tác, ghi các bit WDP như mong muốn, nhưng xóa bit WDCE. Giá trị được ghi vào bit WDE là không liên quan.
Mã Example
Đoạn mã sau đâyample hiển thị một assembly và một hàm C để tắt WDT. Người cũample giả định rằng các ngắt được kiểm soát (ví dụ: bằng cách vô hiệu hóa các ngắt trên toàn cục) để không xảy ra ngắt trong quá trình thực thi các chức năng này.
Mã hội Example(1) |
WDT_tắt:
wdr ; Xóa WDRF trong MCUSR ldi r16, (0< ra MCUSR, r16 ; Viết một logic vào WDCE và WDE ; Giữ cài đặt cài đặt trước cũ để ngăn việc Đặt lại Cơ quan giám sát không chủ ý trong r16, WDTCR ori r16, (1< ra WDTCR, r16 ; Tắt WDT ldi r16, (0< ra WDTCR, r16 trở về |
Mã C Example(1) |
khoảng trống WDT_off(khoảng trống)
{ _WDR (); /* Xóa WDRF trong MCUSR */ MCUSR = 0x00 /* Viết một logic vào WDCE và WDE */ WDTCR |= (1< / * Tắt WDT * / WDTCR = 0x00; } |
Lưu ý: 1. Xem “Mã Examples ”trên trang 6.
Đăng ký Mô tả
MCUSR - Đăng ký trạng thái MCU
Thanh ghi Trạng thái MCU cung cấp thông tin về nguồn thiết lập lại nào đã gây ra Thiết lập lại MCU.
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | SINH RA | EXTRF | PORF | MCUSR |
Đọc/Ghi | R | R | R | R | Đ/T | Đ/T | Đ/T | Đ/T |
Giá trị ban đầu 0 0 0 0 Xem mô tả bit
Bit 7: 4 - Res: Số bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 3 - WDRF: Cờ đặt lại cơ quan giám sát
Bit này được đặt nếu một Thiết lập lại Cơ quan giám sát xảy ra. Bit được đặt lại bằng Thiết lập lại khi bật nguồn hoặc bằng cách ghi số XNUMX logic vào cờ.
Bit 2 - BORF: Cờ đặt lại màu nâu
Bit này được đặt nếu xảy ra Thiết lập lại màu nâu. Bit được đặt lại bằng Thiết lập lại khi bật nguồn hoặc bằng cách ghi số XNUMX logic vào cờ.
Bit 1 - EXTRF: Cờ đặt lại bên ngoài
Bit này được đặt nếu một Thiết lập lại Bên ngoài xảy ra. Bit được đặt lại bằng Thiết lập lại khi bật nguồn hoặc bằng cách ghi số XNUMX logic vào cờ.
Bit 0 - PORF: Cờ khởi động lại nguồn
Bit này được đặt nếu xảy ra Đặt lại khi bật nguồn. Bit chỉ được đặt lại bằng cách ghi số XNUMX logic vào cờ.
Để sử dụng Cờ đặt lại để xác định điều kiện đặt lại, người dùng nên đọc và sau đó đặt lại MCUSR càng sớm càng tốt trong chương trình. Nếu thanh ghi bị xóa trước khi một lần đặt lại khác xảy ra, có thể tìm thấy nguồn của việc đặt lại bằng cách kiểm tra các Cờ đặt lại.
WDTCR - Đăng ký kiểm soát bộ định thời gian giám sát
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Đọc/Ghi | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 - WDIF: Cờ ngắt thời gian chờ của cơ quan giám sát
Bit này được thiết lập khi hết thời gian chờ xảy ra trong Bộ định thời gian cơ quan giám sát và Bộ định thời gian cơ quan giám sát được cấu hình để ngắt. WDIF bị xóa bởi phần cứng khi thực thi vectơ xử lý ngắt tương ứng. Ngoài ra, WDIF được xóa bằng cách ghi một logic vào cờ. Khi I-bit trong SREG và WDIE được đặt, Ngắt hết thời gian của cơ quan giám sát được thực thi.
Bit 6 - WDIE: Kích hoạt tính năng ngắt thời gian chờ của cơ quan giám sát
Khi bit này được ghi vào một, WDE bị xóa và I-bit trong Thanh ghi trạng thái được thiết lập, Ngắt thời gian chờ của cơ quan giám sát được kích hoạt. Trong chế độ này, ngắt tương ứng được thực hiện thay vì đặt lại nếu xảy ra thời gian chờ trong Bộ định thời gian giám sát.
Nếu WDE được đặt, WDIE sẽ tự động bị phần cứng xóa khi hết thời gian chờ xảy ra. Điều này hữu ích để giữ bảo mật Đặt lại cơ quan giám sát trong khi sử dụng ngắt. Sau khi bit WDIE bị xóa, thời gian chờ tiếp theo sẽ tạo ra một thiết lập lại. Để tránh Thiết lập lại cơ quan giám sát, WDIE phải được thiết lập sau mỗi lần ngắt.
Bảng 8-2. Cấu hình Watchdog Timer
WDE | WDIE | Trạng thái hẹn giờ của cơ quan giám sát | Hành động khi hết giờ |
0 | 0 | Đã dừng lại | Không có |
0 | 1 | Đang chạy | Ngắt |
1 | 0 | Đang chạy | Cài lại |
1 | 1 | Đang chạy | Ngắt |
Bit 4 - WDCE: Bật tính năng thay đổi cơ quan giám sát
Bit này phải được đặt khi bit WDE được ghi ở mức logic XNUMX. Nếu không, Cơ quan giám sát sẽ không bị vô hiệu hóa. Sau khi được ghi vào một, phần cứng sẽ xóa bit này sau bốn chu kỳ đồng hồ. Tham khảo mô tả của bit WDE để biết quy trình vô hiệu hóa Cơ quan giám sát. Bit này cũng phải được thiết lập khi thay đổi các bit của bộ định mức. Xem “Trình tự theo thời gian để thay đổi cấu hình của bộ định giờ cơ quan giám sát ”trên trang 43.
Bit 3 - WDE: Kích hoạt cơ quan giám sát
Khi WDE được ghi vào logic một, Bộ định thời cơ quan giám sát được bật và nếu WDE được ghi ở mức logic XNUMX, thì chức năng Bộ hẹn giờ cơ quan giám sát sẽ bị vô hiệu hóa. WDE chỉ có thể được xóa nếu bit WDCE có mức logic một. Để vô hiệu hóa Bộ hẹn giờ cơ quan giám sát đã bật, quy trình sau phải được tuân theo:
Trong cùng một thao tác, hãy ghi một logic vào WDCE và WDE. Một logic phải được ghi vào WDE mặc dù nó được đặt thành một logic trước khi bắt đầu hoạt động vô hiệu hóa.
Trong vòng bốn chu kỳ đồng hồ tiếp theo, ghi logic 0 vào WDE. Điều này vô hiệu hóa Cơ quan giám sát.
Ở mức độ an toàn 2, không thể vô hiệu hóa Watchdog Timer, ngay cả với thuật toán được mô tả ở trên. Xem “Trình tự định thời để thay đổi cấu hình của bộ định giờ cơ quan giám sát” trên trang 43.
Ở mức an toàn 1, WDE bị WDRF ghi đè trong MCUSR. Xem “MCUSR - Đăng ký trạng thái MCU” trên trang 44 để biết mô tả về WDRF. Điều này có nghĩa là WDE luôn được đặt khi WDRF được đặt. Để xóa WDE, WDRF phải được xóa trước khi vô hiệu hóa Cơ quan giám sát bằng quy trình được mô tả ở trên. Tính năng này đảm bảo nhiều lần đặt lại trong các điều kiện gây ra lỗi và khởi động an toàn sau lỗi.
Lưu ý: Nếu bộ đếm thời gian giám sát sẽ không được sử dụng trong ứng dụng, điều quan trọng là phải thực hiện quy trình vô hiệu hóa cơ quan giám sát trong quá trình khởi tạo thiết bị. Nếu Watchdog vô tình được kích hoạt, chẳng hạn nhưample bởi một con trỏ chạy trốn hoặc tình trạng màu nâu, thiết bị sẽ được đặt lại, do đó sẽ dẫn đến thiết lập lại cơ quan giám sát mới. Để tránh tình huống này, phần mềm ứng dụng phải luôn xóa cờ WDRF và bit điều khiển WDE trong quy trình khởi tạo.
Bit 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 và 0
Các bit WDP [3: 0] xác định việc định vị trước Bộ định thời gian giám sát khi Bộ định giờ cơ quan giám sát được bật. Các giá trị đặt trước khác nhau và Khoảng thời gian chờ tương ứng của chúng được hiển thị trong Bảng 8-3.
Bảng 8-3. Watchdog Timer Prescale Chọn
WDP3 | WDP2 | WDP1 | WDP0 | Số chu kỳ dao động WDT | Thời gian chờ điển hình tại VCC = 5.0V |
0 | 0 | 0 | 0 | 2K (2048) chu kỳ | 16 mili giây |
0 | 0 | 0 | 1 | 4K (4096) chu kỳ | 32 mili giây |
0 | 0 | 1 | 0 | 8K (8192) chu kỳ | 64 mili giây |
0 | 0 | 1 | 1 | 16K (16384) chu kỳ | 0.125 giây |
0 | 1 | 0 | 0 | 32K (32764) chu kỳ | 0.25 giây |
0 | 1 | 0 | 1 | 64K (65536) chu kỳ | 0.5 giây |
0 | 1 | 1 | 0 | 128K (131072) chu kỳ | 1.0 giây |
0 | 1 | 1 | 1 | 256K (262144) chu kỳ | 2.0 giây |
1 | 0 | 0 | 0 | 512K (524288) chu kỳ | 4.0 giây |
1 | 0 | 0 | 1 | 1024K (1048576) chu kỳ | 8.0 giây |
Bảng 8-3. Watchdog Timer Prescale Select (Tiếp theo)
WDP3 | WDP2 | WDP1 | WDP0 | Số chu kỳ dao động WDT | Thời gian chờ điển hình tại VCC = 5.0V |
1 | 0 | 1 | 0 | Kín đáo(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Lưu ý: 1. Nếu được chọn, một trong các cài đặt hợp lệ bên dưới 0b1010 sẽ được sử dụng.
Ngắt
Phần này mô tả các chi tiết cụ thể của việc xử lý ngắt như được thực hiện trong ATtiny25 / 45/85. Để biết giải thích chung về xử lý ngắt AVR, hãy tham khảo “Đặt lại và xử lý ngắt” trên trang 12.
Vectơ ngắt trong ATtiny25 / 45/85
Các vectơ ngắt của ATtiny25 / 45/85 được mô tả trong Bảng 9-1dưới.
Bảng 9-1. Đặt lại và ngắt vectơ
Số vectơ | Địa chỉ chương trình | Nguồn | Định nghĩa ngắt |
1 | 0x0000 | CÀI LẠI | Pin bên ngoài, Đặt lại khi bật nguồn, Đặt lại màu nâu, Đặt lại cơ quan giám sát |
2 | 0x0001 | INT0 | Yêu cầu ngắt bên ngoài 0 |
3 | 0x0002 | PCINT0 | Yêu cầu ngắt thay đổi mã pin 0 |
4 | 0x0003 | TIMER1_COMPA | Hẹn giờ / Bộ đếm 1 So sánh Trận đấu A |
5 | 0x0004 | TIMER1_OVF | Hẹn giờ / Bộ đếm 1 Tràn |
6 | 0x0005 | TIMER0_OVF | Hẹn giờ / Bộ đếm 0 Tràn |
7 | 0x0006 | EE_RDY | Sẵn sàng cho EEPROM |
8 | 0x0007 | ANA_COMP | Bộ so sánh tương tự |
9 | 0x0008 | ADC | Chuyển đổi ADC hoàn thành |
10 | 0x0009 | TIMER1_COMPB | Hẹn giờ / Bộ đếm 1 So sánh Trận đấu B |
11 | 0x000A | TIMER0_COMPA | Hẹn giờ / Bộ đếm 0 So sánh Trận đấu A |
12 | 0x000B | TIMER0_COMPB | Hẹn giờ / Bộ đếm 0 So sánh Trận đấu B |
13 | 0x000C | WDT | Cơ quan giám sát hết thời gian |
14 | 0x000D | USI_START | CHÚNG TÔI BẮT ĐẦU |
15 | 0x000E | USI_OVF | Tràn USI |
Nếu chương trình không bao giờ bật nguồn ngắt, các Vectơ ngắt sẽ không được sử dụng và mã chương trình thông thường có thể được đặt tại các vị trí này.
Một thiết lập điển hình và chung cho các địa chỉ vectơ ngắt trong ATtiny25 / 45/85 được hiển thị trong chương trình exampbên dưới.
Mã hội Example | ||
.org 0x0000 | ; Đặt địa chỉ của tiếp theo | tuyên bố |
rjmp ĐẶT LẠI | ; Địa chỉ 0x0000 | |
rjmp INT0_ISR | ; Địa chỉ 0x0001 | |
rjmp PCINT0_ISR | ; Địa chỉ 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Địa chỉ 0x0003 | |
rjmp TIM1_OVF_ISR | ; Địa chỉ 0x0004 | |
rjmp TIM0_OVF_ISR | ; Địa chỉ 0x0005 | |
rjmp EE_RDY_ISR | ; Địa chỉ 0x0006 | |
rjmp ANA_COMP_ISR | ; Địa chỉ 0x0007 | |
rjmp ADC_ISR | ; Địa chỉ 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Địa chỉ 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Địa chỉ 0x000A | |
rjmp TIM0_COMPB_ISR | ; Địa chỉ 0x000B | |
rjmp WDT_ISR | ; Địa chỉ 0x000C | |
rjmp USI_START_ISR | ; Địa chỉ 0x000D | |
rjmp USI_OVF_ISR | ; Địa chỉ 0x000E | |
Đặt lại: | ; Chương trình chính bắt đầu | |
; Địa chỉ 0x000F | ||
… |
Lưu ý: Xem “Mã Examples ”trên trang 6.
Ngắt ngoài
Ngắt ngoài được kích hoạt bởi chân INT0 hoặc bất kỳ chân nào trong số các chân PCINT [5: 0]. Quan sát rằng, nếu được kích hoạt, các ngắt sẽ kích hoạt ngay cả khi các chân INT0 hoặc PCINT [5: 0] được định cấu hình làm đầu ra. Tính năng này cung cấp một cách tạo ra một ngắt phần mềm. Ngắt thay đổi chân cắm PCI sẽ kích hoạt nếu có bất kỳ PCINT [5: 0] nào được bật chuyển đổi chân cắm. Thanh ghi PCMSK điều khiển các chân nào đóng góp vào các ngắt thay đổi chân. Ngắt thay đổi mã pin trên PCINT [5: 0] được phát hiện không đồng bộ. Điều này ngụ ý rằng những ngắt này có thể được sử dụng để đánh thức bộ phận cũng từ các chế độ ngủ khác với chế độ Chờ.
Ngắt INT0 có thể được kích hoạt bởi một cạnh giảm hoặc tăng hoặc mức thấp. Điều này được thiết lập như được chỉ ra trong thông số kỹ thuật cho Thanh ghi điều khiển MCU - MCUCR. Khi ngắt INT0 được kích hoạt và được cấu hình như mức được kích hoạt, ngắt sẽ kích hoạt miễn là chân được giữ ở mức thấp. Lưu ý rằng việc nhận biết ngắt cạnh xuống hoặc cạnh lên trên INT0 yêu cầu sự hiện diện của đồng hồ I / O, được mô tả trong "Hệ thống đồng hồ và phân phối của chúng" trên trang 23.
Ngắt mức thấp
Một ngắt mức thấp trên INT0 được phát hiện không đồng bộ. Điều này ngụ ý rằng ngắt này có thể được sử dụng để đánh thức bộ phận cũng từ các chế độ ngủ khác với chế độ Chờ. Đồng hồ I / O tạm dừng ở tất cả các chế độ ngủ ngoại trừ chế độ Chờ.
Lưu ý rằng nếu một ngắt được kích hoạt ở mức được sử dụng để đánh thức từ Tắt nguồn, thì mức yêu cầu phải được giữ đủ lâu để MCU hoàn thành quá trình đánh thức để kích hoạt ngắt ở mức. Nếu mức độ biến mất trước khi kết thúc Thời gian khởi động, thì MCU vẫn sẽ hoạt động trở lại, nhưng sẽ không có ngắt nào được tạo ra. Thời gian khởi động được xác định bởi Cầu chì SUT và CKSEL như được mô tả trong “Đồng hồ hệ thống và tùy chọn đồng hồ” trên trang 23.
Nếu mức thấp trên chân ngắt được loại bỏ trước khi thiết bị thức dậy thì việc thực thi chương trình sẽ không được chuyển hướng sang quy trình phục vụ ngắt mà tiếp tục từ hướng dẫn sau lệnh SLEEP.
Thời gian ngắt thay đổi mã pin
Một người yêu cũampthời gian của một ngắt thay đổi pin được hiển thị trong Hình 9-1.
Đăng ký Mô tả
MCUCR - Đăng ký điều khiển MCU
Thanh ghi điều khiển ngắt ngoài A chứa các bit điều khiển để điều khiển cảm giác ngắt.
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | CƠ THỂ | ISC01 | ISC00 | MCUCR |
Đọc/Ghi | R | Đ/T | Đ/T | Đ/T | Đ/T | R | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 1: 0 - ISC0 [1: 0]: Điều khiển ngắt cảm giác 0 Bit 1 và Bit 0
Ngắt ngoài 0 được kích hoạt bởi chân ngoài INT0 nếu cờ I-SREG và mặt nạ ngắt tương ứng được thiết lập. Mức và các cạnh trên chân INT0 bên ngoài kích hoạt ngắt được xác định trong Bảng 9-2. Giá trị trên chân INT0 là sampdẫn trước khi dò các cạnh. Nếu ngắt cạnh hoặc ngắt chuyển đổi được chọn, các xung kéo dài hơn một chu kỳ đồng hồ sẽ tạo ra ngắt. Các xung ngắn hơn không được đảm bảo để tạo ra một ngắt. Nếu ngắt mức thấp được chọn, mức thấp phải được giữ cho đến khi hoàn thành lệnh đang thực hiện để tạo ngắt.
Bảng 9-2. Ngắt 0 Điều khiển cảm giác
ISC01 | ISC00 | Sự miêu tả |
0 | 0 | Mức thấp của INT0 tạo ra một yêu cầu ngắt. |
0 | 1 | Bất kỳ thay đổi logic nào trên INT0 đều tạo ra một yêu cầu ngắt. |
1 | 0 | Cạnh rơi của INT0 tạo ra một yêu cầu ngắt. |
1 | 1 | Cạnh lên của INT0 tạo ra một yêu cầu ngắt. |
GIMSK - Thanh ghi mặt nạ ngắt chung
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | GIMSK |
Đọc/Ghi | R | Đ/T | Đ/T | R | R | R | R | R | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7, 4: 0 - Res: Bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 6 - INT0: Yêu cầu ngắt bên ngoài 0 Kích hoạt
Khi bit INT0 được đặt (một) và bit I trong Thanh ghi trạng thái (SREG) được đặt (một), ngắt chân bên ngoài được kích hoạt. Điều khiển cảm nhận ngắt 0 bit 1/0 (ISC01 và ISC00) trong Thanh ghi điều khiển MCU (MCUCR) xác định xem ngắt bên ngoài có được kích hoạt trên cạnh lên và / hoặc xuống của chân INT0 hoặc mức được cảm nhận hay không. Hoạt động trên chân sẽ gây ra yêu cầu ngắt ngay cả khi INT0 được cấu hình như một đầu ra. Ngắt tương ứng của Yêu cầu ngắt Exter- nal 0 được thực hiện từ Véc tơ ngắt INT0.
Bit 5 - PCIE: Bật ngắt thay đổi mã pin
Khi bit PCIE được đặt (một) và bit I trong Thanh ghi trạng thái (SREG) được đặt (một), ngắt thay đổi chân được bật. Bất kỳ thay đổi nào trên bất kỳ chân PCINT [5: 0] nào được bật sẽ gây ra gián đoạn. Ngắt tương ứng của Yêu cầu ngắt thay đổi chân được thực thi từ Vectơ ngắt PCI. Các chân PCINT [5: 0] được bật riêng lẻ bởi Thanh ghi PCMSK0.
GIFR - Đăng ký cờ ngắt chung
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Đọc/Ghi | R | Đ/T | Đ/T | R | R | R | R | R | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7, 4: 0 - Res: Bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 6 - INTF0: Cờ ngắt ngoài 0
Khi một cạnh hoặc thay đổi logic trên chân INT0 kích hoạt yêu cầu ngắt, INTF0 sẽ trở thành set (một). Nếu bit I trong SREG và bit INT0 trong GIMSK được đặt (một), MCU sẽ nhảy đến Vectơ ngắt tương ứng. Cờ bị xóa khi quy trình ngắt được thực hiện. Ngoài ra, cờ có thể được xóa bằng cách viết một lôgic vào nó. Cờ này luôn bị xóa khi INT0 được cấu hình như một ngắt mức.
Bit 5 - PCIF: Cờ ngắt thay đổi chân
Khi một thay đổi logic trên bất kỳ chân PCINT [5: 0] nào kích hoạt yêu cầu ngắt, PCIF sẽ được đặt (một). Nếu bit I trong SREG và bit PCIE trong GIMSK được đặt (một), MCU sẽ nhảy đến Vectơ ngắt tương ứng. Cờ bị xóa khi quy trình ngắt được thực hiện. Ngoài ra, cờ có thể được xóa bằng cách viết một lôgic vào nó.
PCMSK - Đăng ký mặt nạ thay đổi mã pin
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Đọc/Ghi | R | R | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7: 6 - Res: Số bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0
Mỗi bit PCINT [5: 0] chọn xem có bật ngắt thay đổi chân trên chân I / O tương ứng hay không. Nếu PCINT [5: 0] được đặt và bit PCIE trong GIMSK được đặt, thì ngắt thay đổi chân được bật trên chân I / O tương ứng. Nếu PCINT [5: 0] bị xóa, ngắt thay đổi chân trên chân I / O tương ứng sẽ bị vô hiệu hóa.
Cổng I/O
Giới thiệu
Tất cả các cổng AVR đều có chức năng Đọc-Sửa-Ghi thực sự khi được sử dụng làm cổng I / O kỹ thuật số chung. Điều này có nghĩa là hướng của một chân cổng có thể được thay đổi mà không vô tình thay đổi hướng của bất kỳ chân nào khác bằng các lệnh SBI và CBI. Điều tương tự cũng áp dụng khi thay đổi giá trị biến tần (nếu được định cấu hình là đầu ra) hoặc bật / tắt điện trở kéo lên (nếu được định cấu hình là đầu vào). Mỗi bộ đệm đầu ra có đặc tính ổ đĩa đối xứng với cả khả năng chìm và nguồn cao. Trình điều khiển pin đủ mạnh để điều khiển màn hình LED trực tiếp. Tất cả các chân cổng đều có điện trở kéo lên có thể lựa chọn riêng với nguồn cung cấptagđiện trở bất biến. Tất cả các chân I/O đều có điốt bảo vệ cho cả VCC và Ground như được chỉ ra trong Hình 10-1. Tham khảo “Đặc tính điện” trên trang 161 để có danh sách đầy đủ các tham số.
Hình 10-1. Sơ đồ tương đương chân I/O
Tất cả các thanh ghi và tham chiếu bit trong phần này được viết ở dạng chung. Chữ cái viết thường “x” đại diện cho ký tự đánh số của cổng và chữ cái viết thường “n” đại diện cho số bit. Tuy nhiên, khi sử dụng thanh ghi hoặc định nghĩa bit trong một chương trình, phải sử dụng dạng chính xác. Cho người yêu cũample, PORTB3 cho bit không. 3 ở Cổng B, ở đây được đề cập chung là PORTxn. Thanh ghi I / O vật lý và vị trí bit được liệt kê trong "Đăng ký Mô tả" trên trang 64.
Ba vị trí địa chỉ bộ nhớ I / O được cấp phát cho mỗi cổng, mỗi vị trí cho Thanh ghi dữ liệu - PORTx, Thanh ghi hướng dữ liệu - DDRx và các chân đầu vào cổng - PINx. Vị trí I / O của các chân đầu vào cổng chỉ được đọc, trong khi thanh ghi dữ liệu và thanh ghi hướng dữ liệu được đọc / ghi. Tuy nhiên, việc ghi logic một thành một bit trong Bộ đăng ký PINx, sẽ dẫn đến việc chuyển đổi bit tương ứng trong Thanh ghi dữ liệu. Ngoài ra, bit Pull-up Disable - PUD trong MCUCR vô hiệu hóa chức năng pull-up cho tất cả các chân trong tất cả các cổng khi được thiết lập.
Sử dụng cổng I / O làm I / O Kỹ thuật số Chung được mô tả trong “Cổng dưới dạng I / O kỹ thuật số chung” trên trang 53. Hầu hết các chân cổng được ghép với các chức năng thay thế cho các tính năng ngoại vi trên thiết bị. Cách mỗi chức năng thay thế tương tác với chân cổng được mô tả trong “Chức năng cổng thay thế” trên trang 57. Tham khảo các phần mô-đun riêng lẻ để có mô tả đầy đủ về các chức năng thay thế.
Lưu ý rằng việc bật chức năng thay thế của một số chân cổng không ảnh hưởng đến việc sử dụng các chân khác trong cổng làm I / O kỹ thuật số chung.
Cổng làm I / O kỹ thuật số chung
Các cổng là cổng I / O hai chiều với các thanh kéo bên trong tùy chọn. Hình 10-2 hiển thị mô tả chức năng của một chân I / O-port, ở đây thường được gọi là Pxn.
Hình 10-2. I/O kỹ thuật số chung(1)
Định cấu hình mã pin
Mỗi chân cổng bao gồm ba bit thanh ghi: DDxn, PORTxn và PINxn. Như được hiển thị trong "Đăng ký Mô tả" trên trang 64, các bit DDxn được truy cập tại địa chỉ DDRx I / O, các bit PORTxn tại địa chỉ PORTx I / O và các bit PINxn tại địa chỉ PINx I / O.
Bit DDxn trong thanh ghi DDRx chọn hướng của chân này. Nếu DDxn được viết logic một, Pxn được cấu hình như một chân đầu ra. Nếu DDxn được ghi logic XNUMX, Pxn được cấu hình như một chân đầu vào.
Nếu PORTxn được ghi logic một khi chân được cấu hình làm chân đầu vào, thì điện trở kéo lên được kích hoạt. Để tắt điện trở kéo lên, PORTxn phải được viết logic bằng XNUMX hoặc chân phải được cấu hình như một chân đầu ra. Các chân cổng được chỉ định ba khi điều kiện đặt lại hoạt động, ngay cả khi không có đồng hồ nào đang chạy.
Nếu PORTxn được ghi logic một khi chân được cấu hình như một chân đầu ra, thì chân cổng được điều khiển ở mức cao (một). Nếu PORTxn được ghi logic XNUMX khi chân được cấu hình làm chân đầu ra, thì chân cổng được điều khiển ở mức thấp (không).
Chuyển đổi Ghim
Viết một logic một vào PINxn để chuyển đổi giá trị của PORTxn, độc lập với giá trị của DDRxn. Lưu ý rằng lệnh SBI có thể được sử dụng để chuyển đổi một bit trong một cổng.
Chuyển đổi giữa đầu vào và đầu ra
Khi chuyển đổi giữa ba trạng thái ({DDxn, PORTxn} = 0b00) và đầu ra cao ({DDxn, PORTxn} = 0b11), trạng thái trung gian với {DDxn, PORTxn} = 0b01) được kích hoạt kéo lên hoặc đầu ra thấp ({DDxn, PORTxn} = 0b10) phải xảy ra. Thông thường, trạng thái kích hoạt kéo lên hoàn toàn có thể chấp nhận được, vì môi trường có trở kháng cao sẽ không nhận thấy sự khác biệt giữa trình điều khiển cao mạnh và kéo lên. Nếu đây không phải là trường hợp, bit PUD trong Thanh ghi MCUCR có thể được đặt để vô hiệu hóa tất cả các pull-up trong tất cả các cổng.
Việc chuyển đổi giữa đầu vào với mức kéo lên và đầu ra ở mức thấp tạo ra cùng một vấn đề. Người dùng phải sử dụng trạng thái ba ({DDxn, PORTxn} = 0b00) hoặc trạng thái đầu ra cao ({DDxn, PORTxn} = 0b10) làm bước trung gian.
Bảng 10-1 tóm tắt các tín hiệu điều khiển cho giá trị chân.
Bảng 10-1. Cấu hình chân cổng
DDxn | PORTxn | PUD
(trong MCUCR) |
Đầu vào/Đầu ra | Kéo lên | Bình luận |
0 | 0 | X | Đầu vào | KHÔNG | Ba trạng thái (Hi-Z) |
0 | 1 | 0 | Đầu vào | Đúng | Pxn sẽ tạo nguồn hiện tại nếu ext. kéo xuống thấp. |
0 | 1 | 1 | Đầu vào | KHÔNG | Ba trạng thái (Hi-Z) |
1 | 0 | X | Đầu ra | KHÔNG | Đầu ra thấp (Chìm) |
1 | 1 | X | Đầu ra | KHÔNG | Đầu ra cao (Nguồn) |
Đọc giá trị mã pin
Không phụ thuộc vào cài đặt DDxn của bit Hướng dữ liệu, chân cổng có thể được đọc thông qua bit Thanh ghi PINxn. Như được hiển thị trong Hình 10-2, bit Đăng ký PINxn và chốt trước tạo thành bộ đồng bộ hóa. Điều này là cần thiết để tránh di căn nếu chân vật lý thay đổi giá trị gần mép của đồng hồ bên trong, nhưng nó cũng tạo ra độ trễ. Hình 10-3 hiển thị sơ đồ thời gian của quá trình đồng bộ hóa khi đọc giá trị chân được áp dụng bên ngoài. Độ trễ lan truyền tối đa và tối thiểu lần lượt được ký hiệu là tpd,max và tpd,min.
Xem xét khoảng thời gian đồng hồ bắt đầu ngay sau khi cạnh rơi đầu tiên của đồng hồ hệ thống. Chốt được đóng khi đồng hồ ở mức thấp và chuyển sang trong suốt khi đồng hồ ở mức cao, như được chỉ ra bởi vùng bóng mờ của tín hiệu “ĐỒNG BỘ LATCH”. Giá trị tín hiệu được chốt khi đồng hồ hệ thống xuống thấp. Nó được đưa vào Thanh ghi PINxn ở cạnh đồng hồ dương tiếp theo. Như được chỉ ra bởi hai mũi tên tpd, max và tpd, min, một quá trình chuyển đổi tín hiệu đơn lẻ trên chân sẽ bị trễ trong khoảng ½ đến 1½ chu kỳ đồng hồ hệ thống tùy thuộc vào thời điểm xác nhận.
Khi đọc lại giá trị pin được chỉ định của phần mềm, một lệnh nop phải được chèn như được chỉ ra trong Hình 10-4. Lệnh out đặt tín hiệu “SYNC LATCH” ở cạnh dương của đồng hồ. Trong trường hợp này, độ trễ tpd qua bộ đồng bộ hóa là một chu kỳ đồng hồ hệ thống.
Đoạn mã sau đâyample trình bày cách đặt các chân 0 và 1 ở mức cao, 2 và 3 ở mức thấp, đồng thời xác định các chân của cổng từ 4 đến 5 làm đầu vào với một pull-up được gán cho chân của cổng 4. Các giá trị chân kết quả được đọc lại, nhưng như đã thảo luận trước đây, một lệnh nop được bao gồm để có thể đọc lại giá trị được gán gần đây cho một số chân.
Mã hội Example(1) |
…
; Xác định pull-up và đặt đầu ra cao ; Xác định hướng cho các chân cổng ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) ra PORTB,r16 ra DDRB,r17 ; Chèn nop để đồng bộ hóa không ; Đọc chân cổng trong r16,PINB … |
Lưu ý: Đối với chương trình hợp ngữ, hai thanh ghi tạm thời được sử dụng để giảm thiểu thời gian từ khi kéo lên được đặt trên các chân 0, 1 và 4, cho đến khi các bit hướng được đặt chính xác, xác định bit 2 và 3 là thấp và xác định lại các bit 0 và 1 là trình điều khiển cao mạnh mẽ.
Mã C Example |
ký tự không dấu i;
… /* Xác định pull-up và đặt đầu ra ở mức cao */ /* Xác định hướng cho các chân cổng */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /*Chèn nop để đồng bộ*/ _NOP (); /* Đọc các chân cổng */ i = PINB; … |
Chế độ ngủ và kích hoạt đầu vào kỹ thuật số
Như thể hiện trong Hình 10-2, tín hiệu đầu vào kỹ thuật số có thể được clamped xuống đất ở đầu vào của bộ kích hoạt schmitt. Tín hiệu được ký hiệu là SLEEP trong hình, được Bộ điều khiển giấc ngủ MCU đặt ở chế độ Tắt nguồn để tránh tiêu thụ nhiều điện năng nếu một số tín hiệu đầu vào được thả nổi hoặc có mức tín hiệu tương tự gần với VCC/2.
SLEEP được ghi đè đối với các chân cổng được kích hoạt làm chân ngắt bên ngoài. Nếu yêu cầu ngắt bên ngoài không được kích hoạt, SLEEP cũng hoạt động cho các chân này. SLEEP cũng được ghi đè bởi nhiều chức năng thay thế khác như được mô tả trong “Chức năng cổng thay thế” trên trang 57.
Nếu mức logic cao (“một”) xuất hiện trên chân ngắt ngoài không đồng bộ được định cấu hình là “Ngắt trên Cạnh Lên, Cạnh Xuống, hoặc Bất kỳ Thay đổi Logic nào trên Chân” trong khi ngắt ngoài không được bật, Cờ Ngắt Ngoài tương ứng sẽ được đặt khi tiếp tục từ chế độ Ngủ đã đề cập ở trên, vì clamptrong chế độ ngủ này tạo ra thay đổi logic được yêu cầu.
Ghim không kết nối
Nếu một số chân không được sử dụng, nên đảm bảo rằng các chân này có mức xác định. Mặc dù hầu hết các đầu vào kỹ thuật số bị vô hiệu hóa ở các chế độ ngủ sâu như mô tả ở trên, nên tránh các đầu vào nổi để giảm mức tiêu thụ hiện tại ở tất cả các chế độ khác khi các đầu vào kỹ thuật số được bật (Đặt lại, Chế độ hoạt động và Chế độ Chờ).
Phương pháp đơn giản nhất để đảm bảo mức xác định của chân không sử dụng là kích hoạt tính năng kéo lên bên trong. Trong trường hợp này, tính năng kéo lên sẽ bị tắt trong quá trình đặt lại. Nếu mức tiêu thụ điện năng thấp trong quá trình thiết lập lại là quan trọng, thì nên sử dụng kéo lên hoặc kéo xuống bên ngoài. Không nên kết nối trực tiếp các chân không sử dụng với VCC hoặc GND, vì điều này có thể gây ra dòng điện quá mức nếu chân vô tình được định cấu hình làm đầu ra.
Chức năng cổng thay thế
Hầu hết các chân cổng có các chức năng thay thế ngoài chức năng là I / Os kỹ thuật số chung. Hình 10-5 hiển thị cách tín hiệu điều khiển chân cổng từ đơn giản hóa Hình 10-2 có thể bị ghi đè bởi các chức năng thay thế. Các tín hiệu ghi đè có thể không có ở tất cả các chân cổng, nhưng hình này dùng như một mô tả chung áp dụng cho tất cả các chân cổng trong họ vi điều khiển AVR.
Bảng 10-2. Mô tả chung về các tín hiệu ghi đè cho các chức năng thay thế
Tên tín hiệu | Họ và tên đầy đủ | Sự miêu tả |
PUOE | Kích hoạt tính năng ghi đè kéo lên | Nếu tín hiệu này được đặt, khả năng kéo lên được điều khiển bởi tín hiệu PUOV. Nếu tín hiệu này bị xóa, kéo lên được bật khi
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Giá trị ghi đè kéo lên | Nếu PUOE được đặt, phần kéo lên sẽ được bật / tắt khi PUOV được đặt / xóa, bất kể cài đặt của các bit Thanh ghi DDxn, PORTxn và PUD. |
DOE | Bật ghi đè hướng dữ liệu | Nếu tín hiệu này được đặt, Kích hoạt trình điều khiển đầu ra được điều khiển bởi tín hiệu DDOV. Nếu tín hiệu này bị xóa, trình điều khiển Đầu ra được kích hoạt bởi bit Thanh ghi DDxn. |
DDOV | Giá trị ghi đè hướng dữ liệu | Nếu DDOE được đặt, Trình điều khiển đầu ra sẽ được bật / tắt khi DDOV được đặt / xóa, bất kể cài đặt của bit Thanh ghi DDxn. |
PVOE | Bật ghi đè giá trị cổng | Nếu tín hiệu này được đặt và Trình điều khiển đầu ra được bật, giá trị cổng được điều khiển bởi tín hiệu PVOV. Nếu PVOE bị xóa, và Trình điều khiển đầu ra được bật, Giá trị cổng được điều khiển bởi bit Thanh ghi PORTxn. |
PVV | Giá trị ghi đè giá trị cổng | Nếu PVOE được đặt, giá trị cổng được đặt thành PVOV, bất kể cài đặt của bit Thanh ghi PORTxn. |
PTOE | Bật ghi đè chuyển đổi cổng | Nếu PTOE được đặt, bit Thanh ghi PORTxn sẽ được đảo ngược. |
DIOE | Nhập kỹ thuật số Bật tính năng Ghi đè Bật | Nếu bit này được đặt, Kích hoạt đầu vào kỹ thuật số được điều khiển bởi tín hiệu DIEOV. Nếu tín hiệu này bị xóa, Kích hoạt đầu vào kỹ thuật số được xác định bởi trạng thái MCU (Chế độ bình thường, chế độ ngủ). |
DIEOV | Nhập kỹ thuật số cho phép ghi đè giá trị | Nếu DIEOE được đặt, Đầu vào kỹ thuật số sẽ được bật / tắt khi DIEOV được đặt / xóa, bất kể trạng thái MCU (Chế độ bình thường, chế độ ngủ). |
DI | Đầu vào kỹ thuật số | Đây là Đầu vào kỹ thuật số cho các chức năng thay thế. Trong hình, tín hiệu được kết nối với đầu ra của bộ kích hoạt schmitt nhưng trước bộ đồng bộ hóa. Trừ khi Đầu vào kỹ thuật số được sử dụng làm nguồn xung nhịp, mô-đun có chức năng thay thế sẽ sử dụng bộ đồng bộ hóa của riêng nó. |
Toàn cầu | Đầu vào / đầu ra tương tự | Đây là đầu vào / đầu ra tương tự đến / từ các chức năng thay thế. Tín hiệu được kết nối trực tiếp với pad và có thể được sử dụng theo hai hướng. |
Các phần phụ sau đây mô tả ngắn gọn các chức năng thay thế cho mỗi cổng và liên hệ các tín hiệu ghi đè với chức năng thay thế. Tham khảo mô tả chức năng thay thế để biết thêm chi tiết.
Các chức năng thay thế của cổng B
Các chân Cổng B với chức năng thay thế được hiển thị trong Bảng 10-3.
Bảng 10-3. Chân cổng B Chức năng thay thế
Pin cổng | Chức năng thay thế |
PB5 | ![]() ĐẶT LẠI: Đặt lại mã pin dW: gỡ lỗiWIRE I / O ADC0: Kênh đầu vào ADC 0 PCINT5: Ngắt thay đổi chân, Nguồn 5 |
PB4 | XTAL2: Đầu ra bộ dao động tinh thể CLKO: Đầu ra xung nhịp hệ thống ADC2: Kênh đầu vào ADC 2
OC1B: Bộ định thời / Bộ đếm1 So sánh Khớp B Ngõ ra PCINT4: Ngắt thay đổi chân 0, Nguồn 4 |
PB3 | XTAL1: Đầu vào bộ tạo dao động tinh thể CLKI: Đầu vào đồng hồ ngoài ADC3: Kênh đầu vào ADC 3
OC1B: Bộ hẹn giờ / Bộ đếm bổ sung 1 So sánh Khớp B Ngõ ra PCINT3: Ngắt thay đổi chân 0, Nguồn 3 |
PB2 | SCK: Ngõ vào đồng hồ nối tiếp ADC1: Ngõ vào ADC Kênh 1
T0: Bộ định thời / Bộ đếm 0 Nguồn đồng hồ USCK: Đồng hồ USI (Chế độ ba dây) SCL: Đồng hồ USI (Chế độ hai dây) INT0: Ngắt ngoài 0 Ngõ vào PCINT2: Ngắt thay đổi chân 0, Nguồn 2 |
PB1 | MISO: Ngõ vào dữ liệu chính SPI / Ngõ ra dữ liệu nô lệ AIN1: Bộ so sánh tương tự, Ngõ vào âm OC0B: Bộ hẹn giờ / Bộ đếm0 So sánh Khớp B Ngõ ra OC1A: Bộ hẹn giờ / Bộ đếm1 So sánh Khớp A Ngõ ra DO: Ngõ ra dữ liệu USI (Chế độ ba dây) PCINT1: Ngắt thay đổi chân 0, Nguồn 1 |
PB0 | MOSI :: SPI Đầu ra dữ liệu chính / Đầu vào dữ liệu nô lệ AIN0: Bộ so sánh tương tự, Đầu vào tích cực
OC0A: Đầu ra so sánh Timer/Counter0 Match A OC1A: Bộ hẹn giờ / Bộ đếm bổ sung 1 So sánh khớp A Đầu ra DI: Đầu vào dữ liệu USI (Chế độ ba dây) SDA: Đầu vào dữ liệu USI (Chế độ hai dây) AREF: Tham chiếu tương tự bên ngoài PCINT0: Ngắt thay đổi chân 0, Nguồn 0 |
Cổng B, Bit 5 - ĐẶT LẠI / dW / ADC0 / PCINT5
ĐẶT LẠI: Ngõ vào Đặt lại bên ngoài hoạt động ở mức thấp và được kích hoạt bằng cách hủy lập trình (“1”) Cầu chì RSTDISBL. Pullup được kích hoạt và trình điều khiển đầu ra và đầu vào kỹ thuật số bị vô hiệu hóa khi chân được sử dụng làm chân ĐẶT LẠI.
dW: Khi cầu chì debugWIRE Enable (DWEN) được lập trình và các bit Khóa không được lập trình, hệ thống debugWIRE trong thiết bị đích sẽ được kích hoạt. Chân cổng RESET được định cấu hình là chân I / O hai chiều có dây VÀ (mở cống) có kích hoạt tính năng kéo lên và trở thành cổng giao tiếp giữa mục tiêu và trình mô phỏng.
ADC0: Bộ chuyển đổi tương tự sang kỹ thuật số, Kênh 0.
PCINT5: Nguồn ngắt thay đổi chân 5.
Cổng B, Bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Chân bộ dao động đồng hồ chip 2. Được sử dụng làm chân đồng hồ cho tất cả các nguồn xung nhịp chip ngoại trừ Bộ tạo dao động RC có thể hiệu chỉnh bên trong và đồng hồ bên ngoài. Khi được sử dụng làm chân đồng hồ, chân này không thể được sử dụng làm chân I / O. Khi sử dụng Bộ tạo dao động RC có thể hiệu chỉnh bên trong hoặc Đồng hồ bên ngoài làm nguồn xung nhịp chip, PB4 đóng vai trò như một chân I / O thông thường.
CLKO: Đồng hồ hệ thống chia nhỏ có thể được xuất ra trên chân PB4. Đồng hồ hệ thống đã chia sẽ được xuất ra nếu Cầu chì CKOUT được lập trình, bất kể cài đặt PORTB4 và DDB4. Nó cũng sẽ được xuất ra trong quá trình thiết lập lại.
ADC2: Bộ chuyển đổi tương tự sang kỹ thuật số, Kênh 2.
OC1B: Ngõ ra So sánh Ngõ ra: Chân PB4 có thể dùng như một ngõ ra bên ngoài cho Khớp So sánh Bộ hẹn giờ / Bộ đếm1 B khi được định cấu hình làm ngõ ra (bộ DDB4). Chân OC1B cũng là chân đầu ra cho chức năng hẹn giờ chế độ PWM.
PCINT4: Nguồn ngắt thay đổi chân 4.
Cổng B, Bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Chân bộ dao động đồng hồ chip 1. Được sử dụng cho tất cả các nguồn xung nhịp chip ngoại trừ bộ dao động RC có thể hiệu chỉnh bên trong. Khi được sử dụng làm chân đồng hồ, chân này không thể được sử dụng làm chân I / O.
CLKI: Đầu vào Đồng hồ từ nguồn xung nhịp bên ngoài, xem “Đồng hồ bên ngoài” trên trang 26.
ADC3: Bộ chuyển đổi tương tự sang kỹ thuật số, Kênh 3.
OC1B: Ngõ ra So sánh Ngõ ra Đảo ngược Ngõ ra: Chân PB3 có thể phục vụ như một ngõ ra bên ngoài cho Khớp So sánh Bộ hẹn giờ / Bộ đếm1 B khi được định cấu hình làm ngõ ra (bộ DDB3). Chân OC1B cũng là chân đầu ra đảo ngược cho chức năng hẹn giờ chế độ PWM.
PCINT3: Nguồn ngắt thay đổi chân 3.
Cổng B, Bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: Đầu ra Master Clock, chân đầu vào Slave Clock cho kênh SPI. Khi SPI được bật dưới dạng Slave, chân này được định cấu hình làm đầu vào bất kể cài đặt của DDB2. Khi SPI được kích hoạt dưới dạng Master, hướng dữ liệu của chân này được điều khiển bởi DDPB2. Khi chân được buộc bởi SPI làm đầu vào, việc kéo lên vẫn có thể được điều khiển bởi bit PORTB2.
ADC1: Bộ chuyển đổi tương tự sang kỹ thuật số, Kênh 1.
T0: Nguồn bộ đếm Timer / Counter0.
USCK: Chế độ ba dây Đồng hồ giao diện nối tiếp đa năng.
SCL: Chế độ hai dây Đồng hồ nối tiếp cho USI Chế độ hai dây.
INT0: Nguồn ngắt bên ngoài 0.
PCINT2: Nguồn ngắt thay đổi chân 2.
Cổng B, Bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: Đầu vào dữ liệu chính, chân đầu ra dữ liệu Slave cho kênh SPI. Khi SPI được bật dưới dạng Master, chân này được định cấu hình làm đầu vào bất kể cài đặt của DDB1. Khi SPI được kích hoạt dưới dạng Slave, hướng dữ liệu của chân này được điều khiển bởi DDB1. Khi chân được SPI buộc làm đầu vào, việc kéo lên vẫn có thể được điều khiển bởi bit PORTB1.
AIN1: Ngõ vào âm của bộ so sánh tương tự. Định cấu hình chân cổng làm đầu vào khi tắt kéo lên bên trong để tránh chức năng cổng kỹ thuật số can thiệp vào chức năng của Bộ so sánh tương tự.
OC0B: Đầu ra So sánh Đầu ra Đối sánh. Chân PB1 có thể phục vụ như một đầu ra bên ngoài cho So sánh Bộ hẹn giờ / Bộ đếm0 B. Chân PB1 phải được định cấu hình như một đầu ra (bộ DDB1 (một)) để phục vụ chức năng này. Chân OC0B cũng là chân đầu ra cho chức năng hẹn giờ chế độ PWM.
OC1A: Ngõ ra So sánh Ngõ ra: Chân PB1 có thể phục vụ như một ngõ ra bên ngoài cho Khớp B so sánh Bộ hẹn giờ / Bộ đếm1 khi được định cấu hình làm ngõ ra (bộ DDB1). Chân OC1A cũng là chân đầu ra cho chức năng hẹn giờ chế độ PWM.
DO: Chế độ ba dây Giao diện nối tiếp đa năng Đầu ra dữ liệu. Chế độ ba dây Đầu ra dữ liệu ghi đè giá trị PORTB1 và nó được điều khiển đến cổng khi bit hướng dữ liệu DDB1 được đặt (một). PORTB1 vẫn cho phép kéo lên, nếu hướng là đầu vào và PORTB1 được thiết lập (một).
PCINT1: Nguồn ngắt thay đổi chân 1.
Cổng B, Bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: Đầu ra SPI Master Data, Đầu vào Slave Data cho kênh SPI. Khi SPI được kích hoạt dưới dạng Slave, chân này được định cấu hình làm đầu vào bất kể cài đặt của DDB0. Khi SPI được kích hoạt như một Master, hướng dữ liệu của chân này được điều khiển bởi DDB0. Khi chân được SPI buộc làm đầu vào, thì việc kéo lên vẫn có thể được điều khiển bởi bit PORTB0.
AIN0: Ngõ vào dương của bộ so sánh tương tự. Định cấu hình chân cổng làm đầu vào khi tắt kéo lên bên trong để tránh chức năng cổng kỹ thuật số can thiệp vào chức năng của Bộ so sánh tương tự.
OC0A: Đầu ra So sánh Đầu ra Đối sánh. Chân PB0 có thể phục vụ như một đầu ra bên ngoài cho So sánh Bộ hẹn giờ / Bộ đếm0 A khi được định cấu hình làm đầu ra (bộ DDB0 (một)). Chân OC0A cũng là chân đầu ra cho chức năng hẹn giờ chế độ PWM.
OC1A: Ngõ ra So sánh Ngõ ra Đảo ngược Ngõ ra: Chân PB0 có thể dùng như một ngõ ra bên ngoài cho Khớp So sánh Bộ hẹn giờ / Bộ đếm1 B khi được định cấu hình làm ngõ ra (bộ DDB0). Chân OC1A cũng là chân đầu ra đảo ngược cho chức năng hẹn giờ chế độ PWM.
SDA: Chế độ hai dây Dữ liệu Giao diện Nối tiếp.
AREF: Tham chiếu tương tự bên ngoài cho ADC. Trình điều khiển kéo lên và đầu ra bị tắt trên PB0 khi chân được sử dụng làm tham chiếu bên ngoài hoặc Vol nội bộtage Tham chiếu với tụ điện bên ngoài tại chân AREF.
DI: Đầu vào dữ liệu ở chế độ USI Ba dây. USI Chế độ ba dây không ghi đè các chức năng cổng thông thường, do đó, chân phải được định cấu hình làm đầu vào cho chức năng DI.
PCINT0: Nguồn ngắt thay đổi chân 0.
Bảng 10-4 Và Bảng 10-5 liên hệ các chức năng thay thế của Cổng B với các tín hiệu ghi đè được hiển thị trong Hình 10-5 trên trang 58.
Bảng 10-4. Ghi đè tín hiệu cho chức năng thay thế trong PB[5:3]
Tên tín hiệu | PB5 / ĐẶT LẠI / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | gỡ lỗiTruyền dây | 0 | 0 |
PVOE | 0 | Kích hoạt OC1B | ![]() Kích hoạt OC1B |
PVV | 0 | OC1B | OC1B |
PTOE | 0 | 0 | 0 |
DIOE | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
DIEOV | ADC0D | ADC2D | ADC3D |
DI | Đầu vào PCINT5 | Đầu vào PCINT4 | Đầu vào PCINT3 |
Toàn cầu | Đặt lại đầu vào, đầu vào ADC0 | Đầu vào ADC2 | Đầu vào ADC3 |
Lưu ý: khi Cầu chì là “0” (Đã lập trình).
Bảng 10-5. Ghi đè tín hiệu cho chức năng thay thế trong PB[2:0]
Tên tín hiệu | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
PUOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
PUOV | 0 | 0 | 0 |
DOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | Bật OC0B + Bật OC1A + USI_THREE_WIRE | ![]() OC0A Bật + OC1A Bật + (USI_TWO_WIRE DDB0) |
PVV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | Sở Thương mại Hoa Kỳ | 0 | 0 |
DIOE | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
Đầu vào PCINT2 |
Đầu vào PCINT1 | Đầu vào DI / SDA / PCINT0 |
Toàn cầu | Đầu vào ADC1 | Đầu vào âm của bộ so sánh tương tự | Đầu vào tích cực của bộ so sánh tương tự |
Đăng ký Mô tả
MCUCR - Đăng ký điều khiển MCU
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | CƠ THỂ | ISC01 | ISC00 | MCUCR |
Đọc/Ghi | R | Đ/T | Đ/T | Đ/T | Đ/T | R | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 - PUD: Vô hiệu hóa kéo lên
Khi bit này được ghi vào một, các phần mềm kéo lên trong các cổng I / O sẽ bị vô hiệu hóa ngay cả khi các Thanh ghi DDxn và PORTxn được định cấu hình để bật các phần mềm kéo lên ({DDxn, PORTxn} = 0b01). Xem “Định cấu hình mã pin” trên trang 54 để biết thêm chi tiết về tính năng này.
PORTB - Thanh ghi dữ liệu cổng B
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | CỔNGB5 | CỔNGB4 | CỔNGB3 | CỔNGB2 | CỔNGB1 | CỔNGB0 | PORTB |
Đọc/Ghi | R | R | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Thanh ghi hướng dữ liệu cổng B
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Đọc/Ghi | R | R | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - Địa chỉ chân đầu vào cổng B
Chút | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | mã PINB5 | mã PINB4 | mã PINB3 | mã PINB2 | mã PINB1 | mã PINB0 | PINB |
Đọc/Ghi | R | R | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | Đ/T | |
Giá trị ban đầu | 0 | 0 | Không có | Không có | Không có | Không có | Không có | Không có |
Bộ định thời / Bộ đếm 8 bit 0 với PWM
Đặc trưng
Hai đơn vị so sánh đầu ra độc lập
Thanh ghi so sánh đầu ra được đệm kép
Xóa hẹn giờ khi so sánh đối sánh (Tự động tải lại)
Bộ điều biến độ rộng xung đúng pha, không bị trục trặc (PWM)
Khoảng thời gian PWM thay đổi
Máy phát tần số
Ba nguồn ngắt độc lập (TOV0, OCF0A và OCF0B)
Quaview
Bộ định thời / Bộ đếm0 là một mô-đun Bộ định thời / Bộ đếm 8 bit đa năng, với hai Đơn vị So sánh Đầu ra độc lập và hỗ trợ PWM. Nó cho phép định thời gian thực hiện chương trình chính xác (quản lý sự kiện) và tạo sóng.
Sơ đồ khối đơn giản của Bộ định thời / Bộ đếm 8 bit được hiển thị trong Hình 11-1. Để biết vị trí thực tế của các chân I / O, hãy tham khảo “Pinout ATtiny25 / 45/85” trên trang 2. Thanh ghi I / O có thể truy cập CPU, bao gồm các bit I / O và các chân I / O, được in đậm. Thanh ghi I / O dành riêng cho thiết bị và các vị trí bit được liệt kê trong “Đăng ký Mô tả” trên trang 77.
Bộ định thời/Bộ đếm (TCNT0) và Thanh ghi so sánh đầu ra (OCR0A và OCR0B) là các thanh ghi 8 bit. Tất cả các tín hiệu yêu cầu ngắt (viết tắt là Int.Req. trong hình) đều hiển thị trong Thanh ghi cờ ngắt bộ hẹn giờ (TIFR). Tất cả các ngắt được che dấu riêng với Thanh ghi mặt nạ ngắt hẹn giờ (TIMSK). TIFR và TIMSK không được hiển thị trong hình.
Bộ hẹn giờ/Bộ đếm có thể được tạo xung nhịp bên trong, thông qua bộ chia trước hoặc bằng nguồn xung nhịp bên ngoài trên chân T0. Khối logic Chọn đồng hồ kiểm soát nguồn xung nhịp và cạnh mà Bộ định thời/Bộ đếm sử dụng để tăng (hoặc giảm) giá trị của nó. Bộ hẹn giờ/Bộ đếm không hoạt động khi không có nguồn đồng hồ nào được chọn. Đầu ra từ logic Chọn đồng hồ được gọi là đồng hồ hẹn giờ (clkT0).
Thanh ghi so sánh đầu ra được đệm kép (OCR0A và OCR0B) được so sánh với giá trị Bộ định thời / Bộ đếm tại mọi thời điểm. Kết quả của phép so sánh có thể được Bộ tạo dạng sóng sử dụng để tạo ra PWM hoặc đầu ra tần số thay đổi trên các chân So sánh đầu ra (OC0A và OC0B). Xem “Đơn vị so sánh đầu ra” trên trang 69. để biết chi tiết. Sự kiện So sánh đối sánh cũng sẽ đặt Cờ so sánh (OCF0A hoặc OCF0B) có thể được sử dụng để tạo yêu cầu ngắt So sánh đầu ra.
Định nghĩa
Nhiều tham chiếu thanh ghi và bit trong phần này được viết ở dạng chung. Chữ “n” viết thường thay thế số Bộ hẹn giờ / Bộ đếm, trong trường hợp này là 0. Chữ “x” thay thế cho Đơn vị so sánh đầu ra, trong trường hợp này là Đơn vị so sánh A hoặc Đơn vị so sánh B. Tuy nhiên, khi sử dụng thanh ghi hoặc bit xác định trong một chương trình, biểu mẫu chính xác phải được sử dụng, tức là, TCNT0 để truy cập giá trị bộ đếm Timer / Counter0, v.v.
Các định nghĩa trong Bảng 11-1 cũng được sử dụng rộng rãi trong toàn bộ tài liệu.
Bảng 11-1. Định nghĩa
Không thay đổi | Sự miêu tả |
ĐÁY | Bộ đếm đạt BOTTOM khi nó trở thành 0x00 |
TỐI ĐA | Bộ đếm đạt đến MAXimum khi nó trở thành 0xFF (số thập phân 255) |
ĐỨNG ĐẦU | Bộ đếm đạt đến TOP khi nó trở nên bằng giá trị cao nhất trong chuỗi bộ đếm. Giá trị TOP có thể được gán là giá trị cố định 0xFF (MAX) hoặc giá trị được lưu trữ trong Thanh ghi OCR0A. Việc phân công phụ thuộc vào phương thức hoạt động |
Bộ định thời gian / Bộ đếm và Nguồn đồng hồ
Bộ định thời / Bộ đếm có thể được tạo xung nhịp bằng nguồn xung nhịp bên trong hoặc bên ngoài. Nguồn xung nhịp được chọn bởi logic Chọn đồng hồ được điều khiển bởi các bit Chọn đồng hồ (c) nằm trong Thanh ghi điều khiển Bộ định thời / Bộ đếm 0 (TCCR0B).
Nguồn đồng hồ bên trong với bộ định mức
Bộ định thời/Bộ đếm 0 có thể được đồng hồ hệ thống định thời trực tiếp (bằng cách đặt CS0[2:0] = 1). Điều này cung cấp hoạt động nhanh nhất, với tần số xung nhịp bộ định thời/bộ đếm tối đa bằng với tần số xung nhịp hệ thống (fCLK_I/O). Ngoài ra, một trong bốn vòi từ bộ chia tỷ lệ trước có thể được sử dụng làm nguồn đồng hồ. Đồng hồ định tỷ lệ trước có tần số là một trong hai
Đặt lại Prescaler
Bộ đếm trước đang chạy tự do, tức là nó hoạt động độc lập với logic Chọn đồng hồ của Bộ định thời / Bộ đếm0. Vì bộ định tỉ lệ trước không bị ảnh hưởng bởi việc chọn đồng hồ của bộ đếm thời gian / bộ đếm, trạng thái của bộ định tỉ lệ đặt trước sẽ có ý nghĩa đối với các vị trí nơi đồng hồ đã định tỉ lệ trước được sử dụng. Một người yêu cũample của tạo tác định hạng trước là khi bộ đếm thời gian / bộ đếm được kích hoạt và đồng hồ hóa bởi bộ định hạng trước (6> CS0 [2: 0]> 1). Số chu kỳ đồng hồ hệ thống từ khi bộ đếm thời gian được bật đến lần đếm đầu tiên xảy ra có thể là từ 1 đến N + 1 chu kỳ đồng hồ hệ thống, trong đó N bằng ước số của bộ đếm trước (8, 64, 256 hoặc 1024).
Có thể sử dụng Thiết lập lại Bộ đếm trước để đồng bộ Bộ định thời / Bộ đếm với việc thực thi chương trình.
Nguồn đồng hồ bên ngoài
Một nguồn đồng hồ bên ngoài được áp dụng cho chân T0 có thể được sử dụng làm đồng hồ hẹn giờ/bộ đếm (clkT0). Chân T0 là sampdẫn một lần mỗi chu kỳ đồng hồ hệ thống bởi logic đồng bộ hóa chân. Đồng bộ (sampdẫn) tín hiệu sau đó được thông qua
thông qua máy dò cạnh. Hình 11-2 hiển thị một sơ đồ khối chức năng tương đương của đồng bộ hóa T0 và logic dò biên. Các thanh ghi được đặt ở cạnh dương của đồng hồ hệ thống bên trong (clkI/O). Chốt trong suốt trong khoảng thời gian cao của đồng hồ hệ thống bên trong.
Bộ dò cạnh tạo ra một xung clkT0 cho mỗi cạnh dương (CS0[2:0] = 7) hoặc âm (CS0[2:0] = 6) mà nó phát hiện.
Thanh ghi OCR0x được đệm kép khi sử dụng bất kỳ chế độ Điều chế độ rộng xung (PWM) nào. Đối với chế độ hoạt động bình thường và Clear Timer on Compare (CTC), bộ đệm kép bị vô hiệu hóa. Bộ đệm kép đồng bộ hóa việc cập nhật Thanh ghi so sánh OCR0x với đầu hoặc cuối của chuỗi đếm. Việc đồng bộ hóa ngăn ngừa sự xuất hiện của các xung PWM có độ dài lẻ, không đối xứng, do đó làm cho đầu ra không bị trục trặc.
Việc truy cập Thanh ghi OCR0x có vẻ phức tạp, nhưng không phải vậy. Khi bộ đệm kép được kích hoạt, CPU có quyền truy cập vào Thanh ghi bộ đệm OCR0x và nếu bộ đệm kép bị tắt, CPU sẽ truy cập trực tiếp vào OCR0x.
So sánh đầu ra lực
Trong các chế độ tạo dạng sóng không phải PWM, đầu ra khớp của bộ so sánh có thể bị ép buộc bằng cách ghi một đầu ra vào bit Force Output Compare (FOC0x). Buộc so sánh đối sánh sẽ không đặt Cờ OCF0x hoặc tải lại / xóa bộ đếm thời gian, nhưng chân OC0x sẽ được cập nhật như thể một đối sánh so sánh thực đã xảy ra (cài đặt bit COM0x [1: 0] xác định xem chân OC0x có được đặt hay không. hoặc chuyển đổi).
So sánh Chặn đối sánh bằng TCNT0 Viết
Tất cả các hoạt động ghi CPU vào Thanh ghi TCNT0 sẽ chặn bất kỳ So sánh nào xảy ra trong chu kỳ đồng hồ bộ định thời tiếp theo, ngay cả khi bộ định thời dừng. Tính năng này cho phép OCR0x được khởi tạo cùng giá trị với TCNT0 mà không gây ra ngắt khi đồng hồ Timer / Counter được kích hoạt.
Sử dụng Đơn vị So sánh Đầu ra
Vì việc ghi TCNT0 trong bất kỳ chế độ hoạt động nào sẽ chặn tất cả các So sánh khớp trong một chu kỳ đồng hồ hẹn giờ, có những rủi ro liên quan khi thay đổi TCNT0 khi sử dụng Bộ so sánh đầu ra, độc lập với việc Bộ định thời / Bộ đếm có đang chạy hay không. Nếu giá trị được ghi vào TCNT0 bằng giá trị OCR0x, So sánh đối sánh sẽ bị bỏ qua, dẫn đến việc tạo dạng sóng không chính xác. Tương tự, không ghi giá trị TCNT0 bằng BOTTOM khi bộ đếm đang đếm ngược.
Việc thiết lập OC0x phải được thực hiện trước khi thiết lập Thanh ghi hướng dữ liệu cho chân cổng xuất ra. Cách dễ nhất để thiết lập giá trị OC0x là sử dụng các bit nhấp nháy của Force Output Compare (FOC0x) ở chế độ Bình thường. Thanh ghi OC0x giữ các giá trị của chúng ngay cả khi thay đổi giữa các chế độ Tạo dạng sóng.
Lưu ý rằng các bit COM0x [1: 0] không được đệm kép cùng với giá trị so sánh. Thay đổi các bit COM0x [1: 0] sẽ có hiệu lực ngay lập tức.
So sánh đơn vị đầu ra đối sánh
Các bit của chế độ So sánh đầu ra (COM0x [1: 0]) có hai chức năng. Bộ tạo dạng sóng sử dụng các bit COM0x [1: 0] để xác định trạng thái So sánh đầu ra (OC0x) tại Kết hợp so sánh tiếp theo. Ngoài ra, các bit COM0x [1: 0] điều khiển nguồn đầu ra chân OC0x. Hình 11-6 hiển thị một giản đồ đơn giản của logic bị ảnh hưởng bởi cài đặt bit COM0x [1: 0]. Các thanh ghi I / O, các bit I / O và các chân I / O trong hình được in đậm. Chỉ các phần của thanh ghi điều khiển cổng I / O chung (DDR và PORT) bị ảnh hưởng bởi các bit COM0x [1: 0] mới được hiển thị. Khi tham chiếu đến trạng thái OC0x, tham chiếu dành cho Thanh ghi OC0x bên trong, không phải chân OC0x. Nếu thiết lập lại hệ thống xảy ra, Thanh ghi OC0x được đặt lại về “0”.
Khi OC0A / OC0B được kết nối với chân I / O, chức năng của các bit COM0A [1: 0] / COM0B [1: 0] phụ thuộc vào cài đặt bit WGM0 [2: 0]. Bảng 11-2 hiển thị chức năng của bit COM0x [1: 0] khi các bit WGM0 [2: 0] được đặt ở chế độ bình thường hoặc CTC (không phải PWM).
Bảng 11-2. So sánh Chế độ đầu ra, Chế độ không phải PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Sự miêu tả |
0 | 0 | Cổng hoạt động bình thường, OC0A / OC0B bị ngắt kết nối. |
0 | 1 | Chuyển đổi OC0A / OC0B trên So sánh đối sánh |
1 | 0 | Xóa OC0A / OC0B trên So sánh đối sánh |
1 | 1 | Đặt OC0A / OC0B trên So sánh đối sánh |
Bảng 11-3 hiển thị chức năng bit COM0x [1: 0] khi các bit WGM0 [2: 0] được đặt ở chế độ PWM nhanh.
Bảng 11-3. So sánh Chế độ đầu ra, Chế độ PWM nhanh(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Sự miêu tả |
0 | 0 | Cổng hoạt động bình thường, OC0A / OC0B bị ngắt kết nối. |
0 | 1 | Kín đáo |
1 | 0 | Xóa OC0A / OC0B trên So sánh đối sánh, đặt OC0A / OC0B ở BOTTOM (chế độ không đảo ngược) |
1 | 1 | Đặt OC0A / OC0B trên So sánh đối sánh, xóa OC0A / OC0B ở BOTTOM (chế độ đảo ngược) |
Lưu ý: Một trường hợp đặc biệt xảy ra khi OCR0A hoặc OCR0B bằng TOP và COM0A1/COM0B1 được đặt. Trong trường hợp này, phép so sánh bị bỏ qua, nhưng việc thiết lập hoặc xóa được thực hiện ở BOTTOM. Nhìn thấy “Chế độ PWM nhanh” trên trang 73 để biết thêm chi tiết.
Bảng 11-4 hiển thị chức năng của bit COM0x [1: 0] khi các bit WGM0 [2: 0] được đặt ở chế độ PWM đúng pha.
Bảng 11-4. So sánh Chế độ đầu ra, Chế độ PWM đúng pha(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Sự miêu tả |
0 | 0 | Cổng hoạt động bình thường, OC0A / OC0B bị ngắt kết nối. |
0 | 1 | Kín đáo |
1 | 0 | Xóa OC0A / OC0B trên So sánh Khớp khi đếm ngược. Đặt OC0A / OC0B trên So sánh khớp khi đếm ngược. |
1 | 1 | Đặt OC0A / OC0B trên So sánh Khớp khi đếm ngược. Xóa OC0A / OC0B trên So sánh khớp khi đếm ngược. |
Lưu ý: 1. Trường hợp đặc biệt xảy ra khi OCR0A hoặc OCR0B bằng TOP và COM0A1/COM0B1 được đặt. Trong trường hợp này, So sánh đối sánh bị bỏ qua, nhưng việc thiết lập hoặc xóa được thực hiện ở TOP. Nhìn thấy “Chế độ PWM đúng pha” trên trang 74 để biết thêm chi tiết.
Bit 3: 2 - Res: Số bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 1: 0 - WGM0 [1: 0]: Chế độ tạo dạng sóng
Kết hợp với bit WGM02 được tìm thấy trong Thanh ghi TCCR0B, các bit này điều khiển trình tự đếm của bộ đếm, nguồn cho giá trị bộ đếm tối đa (TOP) và loại tạo dạng sóng sẽ được sử dụng, xem Bảng 11-5. Các chế độ hoạt động được hỗ trợ bởi bộ hẹn giờ / bộ đếm là: Chế độ bình thường (bộ đếm), chế độ Xóa hẹn giờ khi so sánh đối sánh (CTC) và hai loại chế độ Điều chế độ rộng xung (PWM) (xem "Phương thức hoạt đông" trên trang 71).
Bảng 11-5. Chế độ tạo dạng sóng Bit Mô tả
Cách thức | WGM 02 | WGM 01 | WGM 00 | Chế độ hoạt động của bộ hẹn giờ / bộ đếm | ĐỨNG ĐẦU | Cập nhật OCRx tại | Cờ TOV được bật |
0 | 0 | 0 | 0 | Bình thường | 0xFF | Ngay lập tức | TỐI ĐA(1) |
1 | 0 | 0 | 1 | PWM, Pha đúng | 0xFF | ĐỨNG ĐẦU | ĐÁY(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Ngay lập tức | TỐI ĐA(1) |
3 | 0 | 1 | 1 | PWM nhanh | 0xFF | ĐÁY(2) | TỐI ĐA(1) |
4 | 1 | 0 | 0 | Kín đáo | – | – | – |
5 | 1 | 0 | 1 | PWM, Pha đúng | OCRA | ĐỨNG ĐẦU | ĐÁY(2) |
6 | 1 | 1 | 0 | Kín đáo | – | – | – |
7 | 1 | 1 | 1 | PWM nhanh | OCRA | ĐÁY(2) | ĐỨNG ĐẦU |
Bit 7 - FOC0A: So sánh đầu ra lực A
Bit FOC0A chỉ hoạt động khi các bit WGM chỉ định chế độ không phải PWM.
Tuy nhiên, để đảm bảo tính tương thích với các thiết bị trong tương lai, bit này phải được đặt thành 0 khi TCCR0B được ghi khi hoạt động ở chế độ PWM. Khi ghi một lôgic vào bit FOC0A, khớp So sánh ngay lập tức được bắt buộc trên đơn vị Tạo dạng sóng. Đầu ra OC0A được thay đổi theo cài đặt bit COM1A [0: 0] của nó. Lưu ý rằng bit FOC0A được thực hiện dưới dạng nhấp nháy. Do đó, giá trị hiện diện trong các bit COM1A [0: XNUMX] sẽ xác định hiệu quả của phép so sánh cưỡng bức.
Một nhấp nháy FOC0A sẽ không tạo ra bất kỳ ngắt nào, cũng như không xóa bộ định thời trong chế độ CTC sử dụng OCR0A làm TOP. Bit FOC0A luôn được đọc là XNUMX.
Bit 6 - FOC0B: So sánh đầu ra lực B
Bit FOC0B chỉ hoạt động khi các bit WGM chỉ định chế độ không phải PWM.
Tuy nhiên, để đảm bảo tính tương thích với các thiết bị trong tương lai, bit này phải được đặt thành 0 khi TCCR0B được ghi khi hoạt động ở chế độ PWM. Khi ghi một lôgic vào bit FOC0B, khớp So sánh ngay lập tức được bắt buộc trên đơn vị Tạo dạng sóng. Đầu ra OC0B được thay đổi theo cài đặt bit COM1B [0: 0] của nó. Lưu ý rằng bit FOC0B được thực hiện dưới dạng nhấp nháy. Do đó, giá trị hiện diện trong các bit COM1B [0: XNUMX] sẽ xác định hiệu quả của phép so sánh cưỡng bức.
Một nhấp nháy FOC0B sẽ không tạo ra bất kỳ ngắt nào, cũng như sẽ xóa bộ định thời trong chế độ CTC sử dụng OCR0B làm TOP.
Bit FOC0B luôn được đọc là XNUMX.
Bit 5: 4 - Res: Số bit dành riêng
Các bit này là các bit dành riêng trong ATtiny25 / 45/85 và sẽ luôn được đọc là XNUMX.
Bit 3 - WGM02: Chế độ tạo dạng sóng
Xem mô tả trong “TCCR0A - Thanh ghi điều khiển bộ định thời / bộ đếm A” trên trang 77.
Bit 2: 0 - CS0 [2: 0]: Chọn đồng hồ
Ba bit Chọn đồng hồ chọn nguồn xung nhịp sẽ được Bộ định thời / Bộ đếm sử dụng.
Bảng 11-6. Đồng hồ Chọn Bit Mô tả
CS02 | CS01 | CS00 | Sự miêu tả |
0 | 0 | 0 | Không có nguồn đồng hồ (Bộ hẹn giờ / Bộ đếm đã dừng) |
0 | 0 | 1 | clkI/O/(Không tính tỷ lệ trước) |
0 | 1 | 0 | clkI/O/8 (Từ bộ chia tỷ lệ trước) |
0 | 1 | 1 | clkI/O/64 (Từ bộ chia tỷ lệ trước) |
1 | 0 | 0 | clkI/O/256 (Từ bộ chia tỷ lệ trước) |
1 | 0 | 1 | clkI/O/1024 (Từ bộ chia tỷ lệ trước) |
1 | 1 | 0 | Nguồn xung nhịp ngoài trên chân T0. Đồng hồ trên mép rơi. |
1 | 1 | 1 | Nguồn xung nhịp ngoài trên chân T0. Đồng hồ trên cạnh tăng. |
Nếu các chế độ chân bên ngoài được sử dụng cho Bộ định thời / Bộ đếm0, các chuyển tiếp trên chân T0 sẽ tạo xung nhịp cho bộ đếm ngay cả khi chân được cấu hình làm đầu ra. Tính năng này cho phép phần mềm kiểm soát việc đếm.
Bộ đếm và so sánh các đơn vị
Hoạt động chung của Timer / Counter1 được mô tả trong chế độ không đồng bộ và hoạt động trong chế độ đồng bộ chỉ được đề cập nếu có sự khác biệt giữa hai chế độ này. Hình 12-2 hiển thị sơ đồ khối thanh ghi đồng bộ Timer / Counter 1 và sự chậm trễ đồng bộ giữa các thanh ghi. Lưu ý rằng tất cả các chi tiết thu thập đồng hồ không được hiển thị trong hình. Các giá trị thanh ghi Timer / Counter1 đi qua các thanh ghi đồng bộ hóa bên trong, gây ra độ trễ đồng bộ hóa đầu vào, trước khi ảnh hưởng đến hoạt động của bộ đếm. Các thanh ghi TCCR1, GTCCR, OCR1A, OCR1B và OCR1C có thể được đọc lại ngay sau khi ghi thanh ghi. Các giá trị đọc lại bị trễ đối với thanh ghi Timer / Counter1 (TCNT1) và cờ (OCF1A, OCF1B và TOV1), do đồng bộ hóa đầu vào và đầu ra.
Bộ đếm thời gian / Bộ đếm 1 có độ phân giải cao và sử dụng độ chính xác cao với các cơ hội đặt trước thấp hơn. Nó cũng có thể hỗ trợ hai bộ điều biến độ rộng xung 8 bit chính xác, tốc độ cao, sử dụng tốc độ đồng hồ lên đến 64 MHz (hoặc 32 MHz ở Chế độ tốc độ thấp). Trong chế độ này, Timer / Counter1 và các thanh ghi so sánh đầu ra đóng vai trò PWM kép độc lập với các đầu ra không đảo ngược và không đảo ngược không chồng chéo. Tham khảo trang 86 để có mô tả chi tiết về chức năng này. Tương tự, các cơ hội định mức trước cao làm cho thiết bị này hữu ích cho các chức năng tốc độ thấp hơn hoặc các chức năng định thời gian chính xác với các hành động không thường xuyên.
Hình 12-2. Sơ đồ khối thanh ghi đồng bộ hóa Timer/Counter 1.
Bộ hẹn giờ / Bộ đếm1 và bộ định mức trước cho phép chạy CPU từ bất kỳ nguồn xung nhịp nào trong khi bộ định mức sẵn đang hoạt động trên đồng hồ PCK nhanh 64 MHz (hoặc 32 MHz ở Chế độ tốc độ thấp) ở chế độ không đồng bộ.
Lưu ý rằng tần số xung nhịp hệ thống phải thấp hơn một phần ba tần số PCK. Cơ chế đồng bộ của Bộ định thời / Bộ đếm không đồng bộ1 cần ít nhất hai cạnh của PCK khi xung nhịp hệ thống cao. Nếu tần số của đồng hồ hệ thống quá cao, sẽ có nguy cơ làm mất dữ liệu hoặc các giá trị điều khiển.
Sau đây là Hình 12-3 hiển thị sơ đồ khối cho Timer / Counter1.
Bảng 12-1. So sánh Chế độ Chọn trong Chế độ PWM
COM1x1 | COM1x0 | Hiệu ứng trên các chân so sánh đầu ra |
0 | 0 | OC1x không được kết nối. OC1x không được kết nối. |
0 | 1 | OC1x bị xóa khi so sánh đối sánh. Đặt khiTCNT1 = $ 00. OC1x được đặt trên trận đấu so sánh. Được thanh toán khi TCNT1 = $ 00. |
1 | 0 | OC1x bị xóa khi so sánh đối sánh. Đặt khi TCNT1 = $ 00. OC1x không được kết nối. |
1 | 1 | OC1x Đặt trên trận đấu so sánh. Được thanh toán khi TCNT1 = $ 00. OC1x không được kết nối. |
Đặc điểm của ADC
Bảng 21-8. Đặc điểm ADC, Kênh kết thúc đơn. TA = -40°C đến +85°C
Biểu tượng | Tham số | Tình trạng | Tối thiểu | Kiểu | Tối đa | Đơn vị |
Nghị quyết | 10 | Bit | ||||
Độ chính xác tuyệt đối (Bao gồm các lỗi INL, DNL và Lượng tử hóa, Độ lợi và Độ lệch) | VREF = 4V, VCC = 4V,
Đồng hồ ADC = 200 kHz |
2 | LSB | |||
VREF = 4V, VCC = 4V,
Đồng hồ ADC = 1 MHz |
3 | LSB | ||||
VREF = 4V, VCC = 4V,
Đồng hồ ADC = 200 kHz Chế độ giảm tiếng ồn |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
Đồng hồ ADC = 1 MHz Chế độ giảm tiếng ồn |
2.5 | LSB | ||||
Tích phân không tuyến tính (INL) (Độ chính xác sau khi hiệu chuẩn bù và khuếch đại) | VREF = 4V, VCC = 4V,
Đồng hồ ADC = 200 kHz |
1 | LSB | |||
Sự khác biệt không tuyến tính (DNL) | VREF = 4V, VCC = 4V,
Đồng hồ ADC = 200 kHz |
0.5 | LSB | |||
Gặp lỗi | VREF = 4V, VCC = 4V,
Đồng hồ ADC = 200 kHz |
2.5 | LSB | |||
Lỗi bù đắp | VREF = 4V, VCC = 4V,
Đồng hồ ADC = 200 kHz |
1.5 | LSB | |||
Thời gian chuyển đổi | Chuyển đổi chạy miễn phí | 14 | 280 | µs | ||
Tần số đồng hồ | 50 | 1000 | kHz | |||
Mã số VIN | Đầu vào Voltage | GND | VREF | V | ||
Băng thông đầu vào | 38.4 | kHz | ||||
AREF | Tài liệu tham khảo bên ngoàitage | 2.0 | VCC | V | ||
VINT | Vol nội bộtage Tham khảo | 1.0 | 1.1 | 1.2 | V | |
Tham chiếu 2.56V bên trong (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
CƠN MƯA | Điện trở đầu vào tương tự | 100 | MΩ | |||
Đầu ra ADC | 0 | 1023 | LSB |
Lưu ý: 1. Giá trị chỉ là hướng dẫn.
Bảng 21-9. Đặc điểm ADC, Kênh vi sai (Chế độ đơn cực). TA = -40°C đến +85°C
Biểu tượng | Tham số | Tình trạng | Tối thiểu | Kiểu | Tối đa | Đơn vị |
Nghị quyết | Tăng = 1x | 10 | Bit | |||
Tăng = 20x | 10 | Bit | ||||
Độ chính xác tuyệt đối (Bao gồm INL, DNL và
Các lỗi lượng tử hóa, tăng và bù đắp) |
Tăng = 1x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
10.0 | LSB | |||
Tăng = 20x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
20.0 | LSB | ||||
Tích phân không tuyến tính (INL) (Độ chính xác sau khi hiệu chuẩn bù và tăng) | Tăng = 1x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
4.0 | LSB | |||
Tăng = 20x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
10.0 | LSB | ||||
Gặp lỗi | Tăng = 1x | 10.0 | LSB | |||
Tăng = 20x | 15.0 | LSB | ||||
Lỗi bù đắp | Tăng = 1x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
3.0 | LSB | |||
Tăng = 20x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Thời gian chuyển đổi | Chuyển đổi chạy miễn phí | 70 | 280 | µs | ||
Tần số đồng hồ | 50 | 200 | kHz | |||
Mã số VIN | Đầu vào Voltage | GND | VCC | V | ||
VDIFF | Đầu vào sai khác Voltage | VREF/Mức tăng | V | |||
Băng thông đầu vào | 4 | kHz | ||||
AREF | Tài liệu tham khảo bên ngoàitage | 2.0 | VCC – 1.0 | V | ||
VINT | Vol nội bộtage Tham khảo | 1.0 | 1.1 | 1.2 | V | |
Tham chiếu 2.56V bên trong (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Điện trở đầu vào tham chiếu | 32 | kΩ | |||
CƠN MƯA | Điện trở đầu vào tương tự | 100 | MΩ | |||
Đầu ra chuyển đổi ADC | 0 | 1023 | LSB |
Lưu ý: Các giá trị chỉ là hướng dẫn.
Bảng 21-10. Đặc điểm ADC, Kênh vi sai (Chế độ lưỡng cực). TA = -40°C đến +85°C
Biểu tượng | Tham số | Tình trạng | Tối thiểu | Kiểu | Tối đa | Đơn vị |
Nghị quyết | Tăng = 1x | 10 | Bit | |||
Tăng = 20x | 10 | Bit | ||||
Độ chính xác tuyệt đối (Bao gồm INL, DNL và
Các lỗi lượng tử hóa, tăng và bù đắp) |
Tăng = 1x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
8.0 | LSB | |||
Tăng = 20x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
8.0 | LSB | ||||
Tích phân không tuyến tính (INL) (Độ chính xác sau khi hiệu chuẩn bù và tăng) | Tăng = 1x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
4.0 | LSB | |||
Tăng = 20x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
5.0 | LSB | ||||
Gặp lỗi | Tăng = 1x | 4.0 | LSB | |||
Tăng = 20x | 5.0 | LSB | ||||
Lỗi bù đắp | Tăng = 1x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
3.0 | LSB | |||
Tăng = 20x
VREF = 4V, VCC = 5V Đồng hồ ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Thời gian chuyển đổi | Chuyển đổi chạy miễn phí | 70 | 280 | µs | ||
Tần số đồng hồ | 50 | 200 | kHz | |||
Mã số VIN | Đầu vào Voltage | GND | VCC | V | ||
VDIFF | Đầu vào sai khác Voltage | VREF/Mức tăng | V | |||
Băng thông đầu vào | 4 | kHz | ||||
AREF | Tài liệu tham khảo bên ngoàitage | 2.0 | VCC – 1.0 | V | ||
VINT | Vol nội bộtage Tham khảo | 1.0 | 1.1 | 1.2 | V | |
Tham chiếu 2.56V bên trong (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Điện trở đầu vào tham chiếu | 32 | kΩ | |||
CƠN MƯA | Điện trở đầu vào tương tự | 100 | MΩ | |||
Đầu ra chuyển đổi ADC | -512 | 511 | LSB |
Tóm tắt bộ hướng dẫn
Thuật ghi nhớ | Toán hạng | Sự miêu tả | Hoạt động | Cờ | #Đồng hồ |
HƯỚNG DẪN THUẬT TOÁN VÀ LOGIC | |||||
THÊM VÀO | Đường, Rr | Thêm hai sổ đăng ký | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Đường, Rr | Thêm với Mang theo hai thanh ghi | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Thêm ngay vào Word | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
ĐĂNG KÝ | Đường, Rr | Trừ hai đăng ký | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
TÔI ĐÃ ĐI LÊN | Đường, K | Trừ Hằng số khỏi Đăng ký | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Đường, Rr | Trừ bằng Mang theo hai thanh ghi | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Đường, K | Trừ với Hằng số Mang từ Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Trừ ngay khỏi Word | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
VÀ | Đường, Rr | Logic VÀ Thanh ghi | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Đường, K | Logic AND Đăng ký và Hằng số | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Đường, Rr | Logic HOẶC Thanh ghi | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Đường, K | Logic HOẶC Đăng ký và Hằng số | Rd ← Rd v K | Z, N, V | 1 |
EOR | Đường, Rr | Đăng ký HOẶC độc quyền | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Sự bổ sung của một | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Bổ sung của hai | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Đặt (các) Bit trong Đăng ký | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Xóa (các) Bit trong Đăng ký | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
ĐĂNG KÝ | Rd | Tăng dần | Rd ← Rd + 1 | Z, N, V | 1 |
THÁNG MƯỜI HAI | Rd | Giảm dần | Rd ← Rd−1 | Z, N, V | 1 |
Tst | Rd | Kiểm tra Zero hoặc Minus | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Xóa đăng ký | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Đặt đăng ký | Rd ← 0xFF | Không có | 1 |
HƯỚNG DẪN CHI NHÁNH | |||||
RJMP | k | Bước nhảy tương đối | PC ← PC + k + 1 | Không có | 2 |
IJMP | Chuyển đến (Z) gián tiếp | PC ← Z | Không có | 2 | |
GỌI | k | Cuộc gọi chương trình con tương đối | PC ← PC + k + 1 | Không có | 3 |
ICALL | Gọi gián tiếp tới (Z) | PC ← Z | Không có | 3 | |
ĐĂNG KÝ | Chương trình con trở lại | PC ← CÒN | Không có | 4 | |
MẠNG | Trả lại gián đoạn | PC ← CÒN | I | 4 | |
CPSE | Rd, Rr | So sánh, Bỏ qua nếu bằng | nếu (Rd = Rr) PC ← PC + 2 hoặc 3 | Không có | 1/2/3 |
CP | Rd, Rr | So sánh | Rd−Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | So sánh với Carry | Rd−Rr−C | Z, N, V, C, H | 1 |
Chỉ số CPI | Rd, K | So sánh Đăng ký với Ngay lập tức | Rd−K | Z, N, V, C, H | 1 |
SBRC | Rr, b | Bỏ qua nếu Bit trong Đăng ký được xóa | nếu (Rr(b)=0) PC ← PC + 2 hoặc 3 | Không có | 1/2/3 |
SBRS | Rr, b | Bỏ qua nếu Bit trong Đăng ký được đặt | nếu (Rr(b)=1) PC ← PC + 2 hoặc 3 | Không có | 1/2/3 |
SBIC | p, b | Bỏ qua nếu Bit trong Đăng ký I / O được xóa | nếu (P(b)=0) PC ← PC + 2 hoặc 3 | Không có | 1/2/3 |
SBI | p, b | Bỏ qua nếu Bit trong thanh ghi I / O được thiết lập | nếu (P(b)=1) PC ← PC + 2 hoặc 3 | Không có | 1/2/3 |
BRBS | s, k | Nhánh nếu Cờ Trạng thái Đặt | nếu (SREG(s) = 1) thì PC←PC+k + 1 | Không có | 1/2 |
BRBC | s, k | Nhánh nếu cờ Trạng thái được xóa | nếu (SREG(s) = 0) thì PC←PC+k + 1 | Không có | 1/2 |
BREQ | k | Nhánh nếu bằng nhau | nếu (Z = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRNE | k | Nhánh nếu không bằng nhau | nếu (Z = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRCS | k | Nhánh nếu Bộ Mang | nếu (C = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRCC | k | Chi nhánh nếu đã thanh toán | nếu (C = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRSH | k | Chi nhánh nếu Tương tự hoặc Cao hơn | nếu (C = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRLO | k | Nhánh nếu thấp hơn | nếu (C = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRMI | k | Nhánh nếu Trừ | nếu (N = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRPL | k | Chi nhánh nếu Plus | nếu (N = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRGE | k | Chi nhánh nếu Lớn hơn hoặc Bằng, Đã ký | nếu (N ⊕ V= 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRLT | k | Nhánh nếu nhỏ hơn XNUMX, đã ký | nếu (N ⊕ V= 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRHS | k | Nhánh nếu đặt cờ Half Carry | nếu (H = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRHC | k | Nhánh nếu cờ Half Carry được xóa | nếu (H = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRTS | k | Nhánh nếu đặt cờ T | nếu (T = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRTC | k | Nhánh nếu cờ T được xóa | nếu (T = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
BRV | k | Nhánh nếu Cờ tràn được đặt | nếu (V = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
BRVC | k | Nhánh nếu Cờ tràn được xóa | nếu (V = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
PHÔ MAI MỀM CỦA PHÁP | k | Nhánh nếu đã bật ngắt | nếu ( I = 1) thì PC ← PC + k + 1 | Không có | 1/2 |
CẦU | k | Nhánh nếu ngắt bị vô hiệu hóa | nếu ( I = 0) thì PC ← PC + k + 1 | Không có | 1/2 |
HƯỚNG DẪN BIT VÀ BIT-TEST | |||||
Ngân hàng SBI | P, b | Đặt Bit trong Đăng ký I / O | I/O(P,b) ← 1 | Không có | 2 |
CBI | P, b | Xóa Bit trong Đăng ký I / O | I/O(P,b) ← 0 | Không có | 2 |
LSL | Rd | Chuyển dịch logic sang trái | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Chuyển dịch logic sang phải | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
VAI TRÒ | Rd | Xoay trái qua thực hiện | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Xoay phải qua Carry | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Dịch chuyển số học sang phải | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Thuật ghi nhớ | Toán hạng | Sự miêu tả | Hoạt động | Cờ | #Đồng hồ |
TRÁO ĐỔI | Rd | Hoán đổi Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Không có | 1 |
BSET | s | Cờ đặt | SREG(s) ← 1 | SREG (các) | 1 |
BCLR | s | Cờ rõ ràng | SREG(s) ← 0 | SREG (các) | 1 |
BST | Rr, b | Bit Store từ Đăng ký đến T | T ← Rr(b) | T | 1 |
BLD | đường, b | Tải bit từ T đến Đăng ký | Rd(b) ← T | Không có | 1 |
GIÂY | Đặt Carry | C ← 1 | C | 1 | |
CLC | rõ ràng thực hiện | C ← 0 | C | 1 | |
SEN | Đặt cờ phủ định | N ← 1 | N | 1 | |
CLN | Xóa cờ phủ định | N ← 0 | N | 1 | |
Khu kinh tế đặc biệt | Đặt cờ Zero | Z ← 1 | Z | 1 | |
CLZ | Xóa cờ Zero | Z ← 0 | Z | 1 | |
SEI | Cho phép ngắt toàn cục | Tôi ← 1 | I | 1 | |
CLI | Tắt toàn cầu ngắt | Tôi ← 0 | I | 1 | |
SES | Đặt cờ kiểm tra đã ký | S ← 1 | S | 1 | |
CLS | Xóa cờ kiểm tra đã ký | S ← 0 | S | 1 | |
SEV | Đặt Tràn bổ sung Twos. | V ← 1 | V | 1 | |
CTV | Xóa tràn bổ sung Twos | V ← 0 | V | 1 | |
BỘ | Đặt T trong SREG | T ← 1 | T | 1 | |
CLT | Xóa T trong SREG | T ← 0 | T | 1 | |
SEH | Đặt cờ Half Carry trong SREG | H ← 1 | H | 1 | |
CLH | Xóa cờ Half Carry trong SREG | H ← 0 | H | 1 | |
HƯỚNG DẪN CHUYỂN DỮ LIỆU | |||||
MOV | Đường, Rr | Di chuyển giữa các sổ đăng ký | Rd ← Rr | Không có | 1 |
MOVW | Đường, Rr | Sao chép Đăng ký Word | Rd+1:Rd ← Rr+1:Rr | Không có | 1 |
LDI | Đường, K | Tải ngay lập tức | Rd ← K | Không có | 1 |
LD | Đường, X | Tải gián tiếp | Rd ← (X) | Không có | 2 |
LD | Rd, X + | Tải gián tiếp và hậu Inc. | Rd ← (X), X ← X + 1 | Không có | 2 |
LD | Rd, - X | Tải gián tiếp và trước tháng XNUMX. | X ← X – 1, Rd ← (X) | Không có | 2 |
LD | Đường, Y | Tải gián tiếp | Rd ← (Y) | Không có | 2 |
LD | Rd, Y + | Tải gián tiếp và hậu Inc. | Rd ← (Y), Y ← Y + 1 | Không có | 2 |
LD | Rd, - Y | Tải gián tiếp và trước tháng XNUMX. | Y ← Y – 1, Rd ← (Y) | Không có | 2 |
LDD | Rd, Y + q | Tải gián tiếp với dịch chuyển | Rd ← (Y + q) | Không có | 2 |
LD | Đường, Z | Tải gián tiếp | Rd ← (Z) | Không có | 2 |
LD | Rd, Z + | Tải gián tiếp và hậu Inc. | Rd ← (Z), Z ← Z+1 | Không có | 2 |
LD | Đường, -Z | Tải gián tiếp và trước tháng XNUMX. | Z ← Z – 1, Rd ← (Z) | Không có | 2 |
LDD | Rd, Z + q | Tải gián tiếp với dịch chuyển | Rd ← (Z + q) | Không có | 2 |
Các Thánh Hữu Ngày Sau | Đường, k | Tải trực tiếp từ SRAM | Rd ← (k) | Không có | 2 |
ST | X, Rr | Cửa hàng gián tiếp | (X) ← Rr | Không có | 2 |
ST | X +, Rr | Store Gián tiếp và Post-Inc. | (X) ← Rr, X ← X + 1 | Không có | 2 |
ST | - X, Rr | Cửa hàng gián tiếp và trước tháng XNUMX. | X ← X – 1, (X) ← Rr | Không có | 2 |
ST | Y, Rr | Cửa hàng gián tiếp | (Y) ← Rr | Không có | 2 |
ST | Y +, Rr | Store Gián tiếp và Post-Inc. | (Y) ← Rr, Y ← Y + 1 | Không có | 2 |
ST | - Y, Rr | Cửa hàng gián tiếp và trước tháng XNUMX. | Y ← Y – 1, (Y) ← Rr | Không có | 2 |
Bệnh lây truyền qua đường tình dục | Y + q, Rr | Cửa hàng gián tiếp với dịch chuyển | (Y + q) ← Rr | Không có | 2 |
ST | Z, Rr | Cửa hàng gián tiếp | (Z) ← Rr | Không có | 2 |
ST | Z +, Rr | Store Gián tiếp và Post-Inc. | (Z) ← Rr, Z ← Z + 1 | Không có | 2 |
ST | -Z, Rr | Cửa hàng gián tiếp và trước tháng XNUMX. | Z ← Z – 1, (Z) ← Rr | Không có | 2 |
Bệnh lây truyền qua đường tình dục | Z + q, Rr | Cửa hàng gián tiếp với dịch chuyển | (Z + q) ← Rr | Không có | 2 |
STS | k, rr | Lưu trữ trực tiếp đến SRAM | (k) ← Rr | Không có | 2 |
LPM | Tải bộ nhớ chương trình | R0 ← (Z) | Không có | 3 | |
LPM | Đường, Z | Tải bộ nhớ chương trình | Rd ← (Z) | Không có | 3 |
LPM | Rd, Z + | Tải bộ nhớ chương trình và hậu kỳ | Rd ← (Z), Z ← Z+1 | Không có | 3 |
SPM | Lưu trữ bộ nhớ chương trình | (z) ← R1:R0 | Không có | ||
IN | Đường, P | Trong cảng | Rd ← P | Không có | 1 |
NGOÀI | P, Rr | Ra cảng | P ← Rr | Không có | 1 |
XÔ | Rr | Đẩy đăng ký trên ngăn xếp | CỌC ← Rr | Không có | 2 |
NHẠC POP | Rd | Đăng ký bật từ ngăn xếp | Rd ← NGỒI | Không có | 2 |
HƯỚNG DẪN ĐIỀU KHIỂN MCU | |||||
KHÔNG | Không có hoạt động | Không có | 1 | ||
NGỦ | Ngủ | (xem mô tả cụ thể cho chức năng Ngủ) | Không có | 1 | |
WDR | Đặt lại cơ quan giám sát | (xem mô tả cụ thể cho WDR / Hẹn giờ) | Không có | 1 | |
PHÁ VỠ | Phá vỡ |
Tốc độ (MHz) (1) | Cung cấp Voltage (V) | Phạm vi nhiệt độ | Bưu kiện (2) | Mã đặt hàng (3) |
10 | 1.8 – 5.5 | Công nghiệp
(-40 ° C đến + 85 ° C) (4) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20M1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | Công nghiệp
(-40 ° C đến + 85 ° C) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Ghi chú: 1. Đối với tốc độ so với khối lượng cung cấptage, xem phần 21.3 “Tốc độ” trên trang 163.
Tất cả các gói đều không có Pb, không có halogen và hoàn toàn có màu xanh lá cây và chúng tuân thủ chỉ thị của Châu Âu về Hạn chế Các Chất Nguy hiểm (RoHS).
chỉ số mã
H: Kết thúc dẫn đầu NiPdAu
U: thiếc mờ
R: băng & cuộn
Các thiết bị này cũng có thể được cung cấp ở dạng wafer. Vui lòng liên hệ với văn phòng kinh doanh Atmel tại địa phương của bạn để biết thông tin đặt hàng chi tiết và số lượng tối thiểu.
Erratum
Lỗi ATtiny25
Thư sửa đổi trong phần này đề cập đến bản sửa đổi của thiết bị ATtiny25.
Rev D - F
Không có errata nào được biết đến.
Rev B - C
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Cố gắng đọc EEPROM ở tần số xung nhịp thấp và / hoặc điện áp nguồn thấptage có thể dẫn đến dữ liệu không hợp lệ.
Khắc phục sự cố / Cách giải quyết
Không sử dụng EEPROM khi tần số xung nhịp dưới 1MHz và nguồn cung cấp voltage dưới 2V. Nếu tần số hoạt động không thể tăng lên trên 1MHz thì nguồn cung cấp voltage phải hơn 2V. Tương tự, nếu nguồn cung cấp voltage không thể nâng lên trên 2V thì tần số hoạt động phải lớn hơn 1MHz.
Tính năng này được biết là phụ thuộc vào nhiệt độ nhưng nó chưa được đặc trưng. Chỉ đưa ra các hướng dẫn về nhiệt độ phòng.
Rev A
Không Sampđã dẫn.
Lỗi ATtiny45
Thư sửa đổi trong phần này đề cập đến bản sửa đổi của thiết bị ATtiny45.
Rev F - G
Không có errata được biết đến
Rev D - E
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Cố gắng đọc EEPROM ở tần số xung nhịp thấp và / hoặc điện áp nguồn thấptage có thể dẫn đến dữ liệu không hợp lệ.
Khắc phục sự cố / Cách giải quyết
Không sử dụng EEPROM khi tần số xung nhịp dưới 1MHz và nguồn cung cấp voltage dưới 2V. Nếu tần số hoạt động không thể tăng lên trên 1MHz thì nguồn cung cấp voltage phải hơn 2V. Tương tự, nếu nguồn cung cấp voltage không thể nâng lên trên 2V thì tần số hoạt động phải lớn hơn 1MHz.
Tính năng này được biết là phụ thuộc vào nhiệt độ nhưng nó chưa được đặc trưng. Chỉ đưa ra các hướng dẫn về nhiệt độ phòng.
Rev B - C
PLL không khóa
EEPROM đọc từ mã ứng dụng không hoạt động ở Chế độ khóa bit 3
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Bộ đếm bộ hẹn giờ 1 Tạo đầu ra PWM trên OC1B- XOC1B không hoạt động chính xác
PLL không khóa
Khi ở tần số dưới 6.0 MHz, PLL sẽ không khóa
Khắc phục sự cố / Cách giải quyết
Khi sử dụng PLL, hãy chạy ở 6.0 MHz hoặc cao hơn.
EEPROM đọc từ mã ứng dụng không hoạt động ở Chế độ khóa bit 3
Khi các Bit Khóa Bộ nhớ LB2 và LB1 được lập trình ở chế độ 3, chức năng đọc EEPROM không hoạt động từ mã ứng dụng.
Khắc phục sự cố / Giải quyết vấn đề
Không đặt Chế độ Bảo vệ Bit Khóa 3 khi mã ứng dụng cần đọc từ EEPROM.
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Cố gắng đọc EEPROM ở tần số xung nhịp thấp và / hoặc điện áp nguồn thấptage có thể dẫn đến dữ liệu không hợp lệ.
Khắc phục sự cố / Cách giải quyết
Không sử dụng EEPROM khi tần số xung nhịp dưới 1MHz và nguồn cung cấp voltage dưới 2V. Nếu tần số hoạt động không thể tăng lên trên 1MHz thì nguồn cung cấp voltage phải hơn 2V. Tương tự, nếu nguồn cung cấp voltage không thể nâng lên trên 2V thì tần số hoạt động phải lớn hơn 1MHz.
Tính năng này được biết là phụ thuộc vào nhiệt độ nhưng nó chưa được đặc trưng. Chỉ đưa ra các hướng dẫn về nhiệt độ phòng.
Bộ đếm bộ hẹn giờ 1 Tạo đầu ra PWM trên OC1B - XOC1B không hoạt động chính xác
Bộ đếm thời gian 1 Ngõ ra PWM OC1B-XOC1B không hoạt động chính xác. Chỉ trong trường hợp khi các bit điều khiển, COM1B1 và COM1B0 ở cùng chế độ như COM1A1 và COM1A0, tương ứng, ngõ ra OC1B-XOC1B hoạt động chính xác.
Khắc phục sự cố / Giải quyết vấn đề
Cách giải quyết duy nhất là sử dụng cài đặt điều khiển tương tự trên các bit điều khiển COM1A [1: 0] và COM1B [1: 0], xem bảng 14-4 trong bảng dữ liệu. Sự cố đã được khắc phục cho Tiny45 rev D.
Rev A
Tiêu thụ điện năng giảm quá cao
DebugWIRE mất liên lạc khi một bước bị gián đoạn
PLL không khóa
EEPROM đọc từ mã ứng dụng không hoạt động ở Chế độ khóa bit 3
Đọc EEPROM có thể không thành công ở mức nguồn cung cấp thấptage / tần số đồng hồ thấp
Tiêu thụ điện năng giảm quá cao
Ba tình huống sẽ dẫn đến mức tiêu thụ điện năng sập nguồn quá cao. Đó là:
Đồng hồ bên ngoài được chọn bởi cầu chì, nhưng CỔNG I / O vẫn được kích hoạt như một đầu ra.
EEPROM được đọc trước khi tắt nguồn.
VCC là 4.5 vôn hoặc cao hơn.
Tuyên bố miễn trừ trách nhiệm: Thông tin trong tài liệu này được cung cấp liên quan đến các sản phẩm của Atmel. Không có giấy phép nào, rõ ràng hay ngụ ý, bằng biện pháp cấm vận hay cách khác, đối với bất kỳ quyền sở hữu trí tuệ nào được cấp theo tài liệu này hoặc liên quan đến việc bán các sản phẩm của Atmel. NGOẠI TRỪ NHƯ ĐƯỢC QUY ĐỊNH TRONG CÁC ĐIỀU KHOẢN VÀ ĐIỀU KIỆN BÁN HÀNG CỦA ATMEL TRÊN ATMEL WEBTRANG WEB, ATMEL KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ BẤT KỲ BẤT KỲ TRÁCH NHIỆM PHÁP LÝ NÀO VÀ TUYÊN BỐ TỪ CHỐI BẤT KỲ BẢO HÀNH RÕ RÀNG, NGỤ Ý HOẶC LUẬT ĐỊNH NÀO LIÊN QUAN ĐẾN SẢN PHẨM CỦA ATMEL BAO GỒM NHƯNG KHÔNG GIỚI HẠN Ở BẢO ĐẢM NGỤ Ý VỀ KHẢ NĂNG BÁN ĐƯỢC, TÍNH PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ HOẶC KHÔNG VI PHẠM. TRONG MỌI TRƯỜNG HỢP, ATMEL SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ VỀ BẤT KỲ THIỆT HẠI TRỰC TIẾP, GIÁN TIẾP, DO HẬU QUẢ, TRÁCH NHIỆM, ĐẶC BIỆT HOẶC NGẪU NHIÊN (BAO GỒM, KHÔNG GIỚI HẠN, THIỆT HẠI VỀ TỔN THẤT VÀ LỢI NHUẬN, GIÁN ĐOẠN KINH DOANH HOẶC MẤT THÔNG TIN) PHÁT SINH NGOÀI VIỆC SỬ DỤNG HOẶC KHÔNG CÓ KHẢ NĂNG SỬ DỤNG TÀI LIỆU NÀY, NGAY CẢ KHI ATMEL ĐÃ ĐƯỢC TƯ VẤN VỀ KHẢ NĂNG THIỆT HẠI ĐÓ.
Atmel không tuyên bố hay bảo đảm về tính chính xác hoặc đầy đủ của nội dung trong tài liệu này và bảo lưu quyền thay đổi thông số kỹ thuật và mô tả sản phẩm bất kỳ lúc nào mà không cần thông báo. Atmel không đưa ra bất kỳ cam kết nào về việc cập nhật thông tin trong tài liệu này. Trừ khi có quy định cụ thể khác, các sản phẩm của Atmel không phù hợp và sẽ không được sử dụng trong các ứng dụng ô tô. Các sản phẩm của Atmel không được thiết kế, ủy quyền hoặc bảo hành để sử dụng làm thành phần trong các ứng dụng nhằm hỗ trợ hoặc duy trì sự sống.