[r]
(1)Duykhanh8x1311@gmail.com 1 Bản dịch Datasheet vi điều khiển AVR Atmega 128
Created by Le Duy Khanh Date : 16/02/2010
I Đặc điểm , tính năng ( Features ) :
+ Hiệu suất cao , tiết kiệm điện + Hoàn thiện cấu trúc RISC
- 133 lệnh hiệu - thực thi tất chu kì đồng hồđơn
- 32 *8 ghi chung đa + ghi điều khiển ngoại vi - Đầy đủ trình điều khiển tĩnh
- Nâng lên 16 MIPS liệu 16 MHz - Chip nhân
+ Độ bền , sức chịu đựng cao , không thay đổi phân vùng nhớ
- 128 K Bytes nhở Flash lập trình hệ thống - 4K Bytes EEPROM
- 4K Bytes nhớ SRAM bên
- Chu kì ghi/xóa : 10000 Flash / 100000 EEPROM - Độ bền liệu 20 năm 85 độ / 100 năm 25 độ
- Đoạn mã lựa chọn chế độ khởi động với bít khóa độc lập chương trình hệ thống chương trình khởi động đọc thật trình ghi diễn
- Tối đa 64K Bytes khơng gian nhớ bên ngồi lựa chọn - Lập trình khóa cho phần mềm bảo mật
- Giao diện SPI cho lập trình hệ thống + giao diện JTAG ( phù hợp với tiêu chuẩn IEEE 1149.1
- Khả quét biên theo tiêu chuẩn JTAG - Hỗ trợ chếđộ sửa tạm ( debug ) chip
- Lập trình Flash , EEPROM , bảo vệ ( FUSE) Bit khóa ( Lock Bits) thơng qua giao diện JTAG
+ Đặc điểm ngoại vi
- Timer /counter bit với bộđếm gộp trước riêng biệt chếđộ so sánh mẫu
- timer /counter 16 bit mở rộng với bộđếm gộp trước chếđộ so sánh mẫu chế độ thu thập ( bắt liệu )
- Bộ counter thời gian thực với dao động ( oscillator ) riêng biệt - kênh PWM bit
(2)Duykhanh8x1311@gmail.com 2 - kênh , 10 bit ADC : kênh đầu cuối đơn , kênh khác ( vi
phân ) , kênh khác với khuyêch đại lập trình 1x , 10x ,200x
- Bit định hướng với dây giao diện nối tiếp - Lập trình kép USARTs nối tiếp
- Giao diện nối tiếp SPI chủ tớ
- Lập trình timer Watchdog với dao động chip - Bộ so sánh tương tự chip
+ tính đặc biệt vi xử lí
- thiết lập bật lại nguồn lập trình lại phát nguồn yếu (brown-out)
- hiệu chỉnh dao động RC bên - Ngắt nguồn
- chếđộ chờ ( sleep ) : Idle nghỉ , giảm ồn ADC , tiết kiệm điện ( power – saver) , ngắt điện , chếđộ chờ ( standby ) , chế độ chờ mở rộng
- Phần mềm lựa chọn tần số xung nhịp
- Lựa chọn chế độ so sánh Atmega 103 cầu chì Fuse - Vơ hiệu hóa dừng lại tồn
+ cổng vào dạng đóng gói
- 53 đường vào lập trình - 64 chân TQFP 64 khối QFN/MLF + Điện áp hoạt động
- 2,7 – 5,5 V Atmega 128L - 4,5 – 5,5 V Atmega 128 + Mức tốc độ xung nhịp
(3)Duykhanh8x1311@gmail.com 3
II Cấu hình chân ( pin configurations )
Hình : chân Atmega 128
(4)(5)Duykhanh8x1311@gmail.com 5 Lõi AVR bao gồm tập hợp lệnh cài đặt với 32 ghi chung đa Tất 32 ghi nối trực tiếp với khối số học logic (ALU ) cho phép ghi độc lập truy cập lệnh thực thi chu kì quét xung đồng hồ kết cấu trúc có nhiều kiểu chế độ hiệu đạt tốc độ tối đa nhanh 10 lần vi sử lý CISC thông thường
Atmega 128 cung cấp tính sau : 128K bytes nhớ lập trình Flash hệ thống với khả đọc ghi , K bytes EEPROM , K bytes SRAM , 53 đường vào đa , 32 ghi chung đa , bộđếm thời gian thực , timer /counter tiện dụng với kiểu so sánh PWM , USART , bit định hướng dây giao diện nối tiếp , kênh , 10 bit ADC với lựa chọn cổng vào riêng biệt với khả lập trình khuyêch đại , lập trình timer Watchdog với tạo dao động bên , cổng SPI nối tiếp , phù hợp với chuẩn IEEE 1149.1 , giao diện kiểm tra JTAG , sử dụng để truy cập vào chếđộ sửa tạm hệ thống chip hỗ trợ lập trình , phần mềm lựa chọn chế độ tiết kiệm điện Chếđộ rỗi IDLE dừng CPU cho phép SRAM , Timer/counter , cổng SPI , ngắt hệ thống tiếp tục vận hành Chế độ tắt nguồn tiết kiệm dung lượng ghi làm đóng băng tạo dao động (oscillator ) bên , vô hiệu hóa tất chức chip có ngắt reset lại phần cứng (reset hardware ) Trong chếđộ tiết kiệm điện timer dị tiếp tục chạy , điều cho phép người sử dụng bảo dưỡng thời gian phần lại thiết bịđang trình nghỉ ( ngủ ) sleeping Kiểu giảm nhiễu ADC dừng CPU tất modul vào trừ timer dị ADC , làm cực tiểu nhiễu chuyển mạch suốt trình chuyển đổi ADC Trong chếđộ chờ Standby tạo dao động thạch anh cộng hưởng chạy phần lại thiết bịđang trạng thái ngủ Điều cho phép nhiều khởi tạo nhanh đồng thời tiêu thụđiện thấp Trong chế độ chờ mở rộng , hai tạo dao động timer dị tiếp tục chạy
Thiết bị sản xuất dựa cơng nghệ chíp nhớđộ đặc cao ATMEL Bộ nhớ flash ISP chip cho phép nhớ chương trình lập trình lại hệ thống thơng qua giao diện ISP nối tiếp , chương trình lập trình nhớ cố định thơng thường chương trình khởi động chạy lõi AVR Chương trình khởi động sử dụng giao diện để tải chương trình ứng dụng vào nhớ chương trình ứng dụng ( Flash ) Phần mềm phần vùng khởi động nhớ Flash tiếp tục chạy ứng dụng phân vùng cập nhật , cung cấp hoạt động đọc ghi Bằng việc kết hợp CPU- cấu trúc bit RISC với nhớ flash lập trình hệ thống chip đơn , Atmega 128 vi sử lý mạnh , cung cấp linh hoạt cao mơi trường làm việc có ích cho nhiều úng dụng điều khiển nhúng
(6)Duykhanh8x1311@gmail.com 6 trình chạy thử mô , mô mạch điện , công cụđánh giá so sánh
Sự tương thích với Atmega 103 Atmega 128
Atmega 128 vi xử lý có độ phức tạp cao mà sốđầu vào tích hợp nhiều lên đến 64 địa vào dự trữ sẵn lệnh cài đặt Để đảm bảo tương thích với Atmega 103 tất địa vào Atmega 103 giống địa Atmega 128 Tất địa I/O thêm vào thêm vào không gian địa I/O mở rộng $60 đến $FF ( Atmega 103 chứa khơng gian RAM ) Những địa gọi việc sử dụng lệnh LD/LDS/LDD ST/STS/STD , sử dụng lệnh IN OUT Việc đặt lại địa RAM Atmega 103 vấn đề cho người sử dụng Ngoài , gia tăng số lượng vecto ngắt vấn đề mã sử dụng địa tuyệt đối Để giải vấn đề , tương thích Atmega 103 lựa chọn việc lập trình cho Fuse M103C Trong chế độ , khơng có chức không gian I/O mở rộng sử dụng , RAM đặt địa Atmega 103 Ngoài , vecto ngắt mở rộng gỡ bỏ
Atmega 128 thích hợp 100 % với Atmega 103 , cớ thể thay cho Atmega 103 bo mạch in hành ý ứng dụng ” thay Atmega 103 Atmega 128 ” mô tả mà người sử dụng nên nhận biết thay Atmega 103 Atmega 128
Chếđộ tương thích của Atmega 103
Bằng việc lập trình M130C , Atmega 128 tương thích với Atmega 103 để ý RAM , chân I/O vecto ngắt miêu tả Tuy nhiên , vài đặc điểm Atmega 128 khơng có ích chế độ tương thích , đặc điểm liệt kê
- Một USART thay , chếđộ dị Chỉ có bít có nghĩa nhỏ ghi Baud Rate có ích
- Giao diện dây nối tiếp khơng hỗ trợ - Cổng C cổng
- Cổng G phục vụ chức xoay chiều ( luân phiên )
- Cổng F phục vụ đầu vào kĩ thuật số thêm vào đầu vào tương tự tới chuyển đổi ADC
- Bộ tải khởi động ( Boot Loader ) không hỗ trợ
(7)Duykhanh8x1311@gmail.com 7 - Giao diện nhớ bên ngồi khơng giải phóng chân địa cho cổng I/O chung , cấu hình chế độ chờ khác đến khu vực địa nhớ bên
Thêm vào , có vài điểm khác biệt nhỏ để làm nên khả tương thích với Atmega 103
- EXTRF PORF MCUCSR
- kết thời gian khơng cần thiết cho timer vWatch dog chuyển đổi thời gian chờ
- chân ngắt – phục vụ mức ngắt
- USART khơng có đệm FIFO , liệu vượt qua đến sớm
- Những bít I/O khơng sử dụng Atmega 103 nên viết O để bảo đảm hoạt động giống Atmega 128
Mô tả ý nghĩa chân ( Pin descipsions ) - VCC : chân cấp nguồn
- GND : Chân nối đất
- Port A (PA7 PA0) : Cổng A cổng vào hai hưóng bit với điện trở hãm bên (được lựa chọn cho bit ) Bộđệm đầu cổng A có đặc tính đối xứng với tản nhiệt nguồn cấp
- Port B (PB7 PB0) : cổng B cổng vào hướng với điện trở hãm ( lựa chọn cho bit ) Bộđệm cổng B có tính đối xứng với tản nhiệt nguồn cấp
- Port C (PC7 PC0) : cổng C cổng vào hưóng Bộđệm đầu cổng C có tính đối xứng
- Port D (PD7 PD0) : cổng D tương tự cổng D - Port E tương tự cổng E
- Port F : trợ giúp giông cổng vào tưong tự analog cho chuyển đổi A/D cổng F cổng vào hướng chuyển đổi A/D không đựơc sử dụng Các chân cổng có trở kháng hãm đựoc lựa chọn cho bit Chân TDO chân có chếđộ trừ chế độ TAP xuất tín hiệu bật Cổng F trợ giúp chức giao diện JTAG - Port G (PG4 PGO) : cổng G cổng vào bit hướng với điện trở
hãm ( lựa chọn cho bit ) Bộđệm cổng G có tính đối xứng với tản nhiệt nguồn cấp Cổng G cung cấp tính đặc biệt Các chân cổng G cổng có chế độ mà điều kiện reset kích hoạt dù đồng hồ không chạy
- RESET : đầu reset cấp cho phép chân dài độ dài xung tối thiểu phát tín hiệu reset , cho dù đồng hồ không chạy
(8)Duykhanh8x1311@gmail.com 8 - XTAL2 đầu cho khuyếch đại dao động
- AVCC : chân nguồn áp cấp cho cổng F chuyển đổi A/D Nó nên chân nối với VCC , dù ADC không sử dụng Nếu ADC sử dụng , nên nối với chân VCC thông qua lọc thấp tần
- AREF : chân tham khảơ cho chuyển đổi A/D
- PEN : chân kích hoạt trình cho kiểu lập trình nối tiếp SPI , tín hiệu vào kéo lên cao Bằng việc giữ chân mức thấp suốt trình khởi động lại nguồn ( Power – on Reset ) , thiết bị nhập vào cổng lập trình nối tiếp SPI PEN khơng có chức q trình điều khiển Sự trì dữ liệu
Kết thẩm định độ bền tốc độ hỏng liệu nhỏ PPM 20 năm nhiệt độ 85 độ C 100 năm 25 độ C
Về ví dụ mẫu : datasheet bao gồm vĩ dụ code mẫu theo cách ngắn gọn cách sử dụng phần khác thiết bị Các đoạn code mẫu giả thiết phần xác định tiêu đề file cài đặt sẵn trước biên dịch Để nhận biết khơng phải tất trình biên dịch C cung cấp bao gồm bit xác định tiêu đề file trình ngắt C phụ thuộc vào trình biên dịch xem thêm tài liệu trình biên dịch C để biết thêm chi tiết
Sự xác định vị trí ghi vào đồ I/O , IN , OUT , SBIC , CBI, SBI lệnh phải thay với lệnh cho phếp truy cập phần I/O mở rộng Thông thường , LDS STS kết hợp với SBRS , SBRC, SBR , CBR
(9)Duykhanh8x1311@gmail.com 9
III AVR CPU core : Lõi CPU của AVR
Giới thiệu :
Phần giới thiệu cấu trúc chung lõi AVR Chức lõi CPU đểđảm bảo thực chương trình CPU phải truy cập , quản lí nhớ , tiến hành tính tốn , điều khiển ngoại vi xử lí ngắt
Tổng quan cấu trúc : hình sơđồ khối cấu trúc AVR
Để có hiệu cao khả làm việc song song , AVR sử dụng cấu trúc Harvard – với phân chia nhớ bus cho chương trình liệu Các lệnh nhớ chương trình thực thi với cấp sử lí liên lệnh đơn Trong lệnh được xử lí lệnh nạp tiếp từ nhớ chương trình Khái niệm kích hoạt lệnh để thực thi chu kì xung nhịp đồng hồ Bộ nhớ chương trình nhớ flash lập trình lại hệ thống
Sự truy cập nhanh vào file ghi bao gồm 32*8 bít ghi đa với chu kì xung nhịp để quản lí thời gian Điều cho phép điểu khiển chu kì đơn đơn vị sử lí số học ALU Thơng thường hoạt động ALU , tốn hạng địa chỉđược xuất từ file ghi , trình điều khiển thực thi kết lưu trữ lại ghi file – chu kì xung nhịp
(10)Duykhanh8x1311@gmail.com 10 Đơn vị sử lý số học logic ALU hỗ trợ trình điều khiển số học logic ghi đại lượng không đổi ghi Các ghi điều khiển q trình đơn thi hành ALU Sau trình điểu khiển số học , trạng thái ghi cập nhật để phản ánh thông tin kết q trình điều khiển
Dịng chương trình cung cấp lệnh nhảy có điều kiện khơng có điều kiện lệnh gọi (call instructions ) , địa trực tiếp tồn khơng gian địa Hầu hết lệnh AVR có định dạng 16 bit từđơn Mỗi nhớ địa chương trình bao gồm 16 32 bit lệnh
Không gian nhớ Flash chia làm phần , phần chương trình khởi động phần chương trình ứng dụng Cả phần có bit khóa riêng cho bảo vệ ghi đọc/ghi Lệnh SPM viết vào nhớứng dụng Flash phải thường khu vực khởi động chương trình
Trong suốt trình ngắt gọi chương trình con, hồn trả địa đếm chương trình lưu ngăn xếp (Stack ) Ngăn xếp ( stack ) cách gán hiệu SRAM liệu chung , hiệu ngăn xếp ( stack ) bị giới hạn độ lớn SRAM sử dụng SRAM Tất chương trình sử dụng phải khởi tạo SP chương trình reset ( trước chương trình ngắt thực thi ) Con trỏ ngăn xếp ( SP- stack pointer ) q trình truy cập đọc/ghi khơng gian địa I/O SRAM liệu dễ dàng truy cập đến thông qua kiêu địa khác hỗ trợở cấu trúc AVR
Khơng gian nhớở cấu trúc AVR tuyến tính vùng nhớ thơng thường Một module ngắt linh hoạt có ghi điều khiển khơng gian I/O với bit ngắt kích hoạt chung thêm vào ghi trạng thái Tất ngắt có véc tơ phân chia ngắt bảng vecto ngắt Các ngắt có quyền ưu tiên phù hợp với vị trí vecto ngắt chúng vecto ngắt mức thấp , vecto ngăt mức cao ưu tiên
Vùng không gian địa nhớ I/O bao gồm 64 địa mà có thểđược truy cập trực tiếp ,hoặc vị trí lưu liệu theo ghi từ $20- $5F , Thêm vào Atmega 128 cịn có thêm khơng gian địa I/O mở rộng từ $60 - $FF SRAM nơi mà có lệnh ST/STS/STD LD/LDS/LDD sử dụng
ALU – đơn vị sử lí số học logic
(11)Duykhanh8x1311@gmail.com 11 hiệu/khơng tín hiệu phép nhân định dạng phân số xem thêm phần cài đặt lệnh đẻ miêu tả chi tiết
Thanh ghi trạng thái – status registers
Thanh ghi trạng thái bao gồm thông tin kết tất lệnh số học thực thi gần Thơng tin có thểđược sử dụng cho thay đổi dịng chương trình thực điều kiện trình điều khiển Chú ý ghi trạng thái cập nhật sau trình điều khiển ALU xác định phần tham khảo cài đặt lệnh điều gỡ bỏ nhiều trường hợp cần thiết phải sử dụng lệnh so sánh riêng , kết việc ta có đoạn mã nhanh chặt chẽ
Thanh ghi trạng thái không tựđộng lưu nhập vào chương trình ngắt khôi phục phản hồi từ ngắt điều phải điều khiển phần mềm
Thanh ghi trạng thái – SREG- xác định :
- Bit 7- I Bit ngắt kích hoạt chung:
phải cài đặt cho ngắt kích hoạt Sựđiều khiển kích hoạt ngắt riêng lẻ sau sử dụng ghi điều khiển phân chia Nếu toàn ghi kích hoạt ngắt bị xóa , khơng có ngắt kích hoạt độc lập số ngắt riêng rẽđược cài đặt kích hoạt Bít I bị xóa phần cứng sau ngắt gặp cố , cài đặt lệnh RETI để kích hoạt lại chương trình phục vụ ngắt Bit I cài đặt bị xóa phần mềm với lệnh SEI CLI mô tả phần tham khảo lệnh cài đặt
- Bít – T : bit chép kho liệu
Bít lệnh copy BLD (bit LoaD ) BST ( bit STore) sử dụng Bit T nguồn đích đến bit điều khiển Một bit từ ghi file ghi chép vào Bit T lệnh BST , bit T chép vào bit ghi ghi file lệnh BLD
- Bit – H : cờ báo nửa ( half carry flag )
Bít cờ báo nửa H hiển thị nửa số nhớ vài q trình tính tốn sơ học bit hữu dụng đại số BCD ( xem phần mô tả cài đặt lệnh để biết thêm chi tiết )
- Bit – S : bít báo hiêu ( sign bit ) , S = N+V
Bit S ln ln riêng biệt cờ âm N dòng tràn bổ sung cờ V xem phần mô tả lệnh cài đặt để biết thêm chi tiết
(12)Duykhanh8x1311@gmail.com 12 Cờ báo tràn bổ sung V hỗ trợ phần bù số học xem phần mô tả lệnh để biết thêm chi tiết
- Bit – N : cờ báo âm
Cờ báo âm N hiển thị kết âm q trình tính tốn số học logic xem thêm phần mô tả lệnh để biết thêm chi tiết
- Bit – Z : cờ không ( zero )
Cờ không Z hiển thị kết zêro q trình tính tốn logic số học xem phần mô tả cài đặt lệnh để biết thêm chi tiết
- Bit – C cờ mang :
Cờ mang C hiển thị số mang q trình tính tốn logic số học File đăng kí đa năng dùng chung ( general purpose register file )
File đăng kí tối ưu hóa cho AVR tăng cường nhờ việc cài đặt lệnh RISC Để đạt hiệu suất độ linh hoạt cần thiết , giản đồđầu vào
(input/output ) sau dùng để hỗ trợ file đăng kí :
- toán hạng đầu bit kết đầu vào bit - toán hạng đầu bit kết đầu vào bit - toán hạng đầu bit kết đầu vào 16 bit - toán hạng đầu 16 bit kết quảđầu vào 16bit
Hình cấu trúc 32 ghi đa dùng chung CPU
Hầu hết lệnh điều khiển file đăng kí truy cập trực tiếp vào tất ghi hầu hết lệnh chúng thực chu kì xung nhịp
(13)Duykhanh8x1311@gmail.com 13 Thanh ghi X , ghi Y , ghi Z
Thanh ghi R26 R31 có vài chức thêm vào vùng nhớđa chúng Các ghi trỏđịa 16 bit cho việc đặt địa cách gián tiếp vùng liệu Có ghi địa gián tiếp X, Y , Z miêu tả hinh
Trong kiểu đặt địa khác có nhiều ghi địa có chức thay cốđịnh , tự động gia tăng ,và tựđộng giảm ( xem thêm phần tham khảo cài đặt lệnh để biết thêm chi tiết )
Stack pointer : trỏ ngăn xếp
Ngăn xếp sử dụng cho việc lưu trữ liệu tạm thời , cho việc lưu trữ biến địa phương việc lưu trữ địa phản hồi sau gọi chương trình ngắt chương trình Thanh ghi trỏ ngăn xếp ln ln ghi đỉnh ngăn xếp (Stack ) Chú ý Ngăn xếp cài đặt phát triển từ
những vị trí nhớ cao đến vị trí nhớ thấp Điều gợi ý Ngăn xếp đẩy lệnh rút ngắn xuống trỏ ngăn xếp
Con trỏ ngăn xếp vào ngăn xếp liệu SRAM nơi mà chương trình ngăn xếp ngắt đặt Không gian ngăn xếp SRAM phải xác định chương trình trước lệnh gọi chương trình thực thi ngắt kích hoạt Con trỏ ngăn xếp phải cài đặt ởđiểm $60 Con trỏ ngăn xếp bị suy giảm liệu bịđẩy lên ngăn xếp dùng lệnh PUSH , suy giảm phản hồi địa bịđẩy vào ngăn xếp với gọi chương trình ngắt Con trỏ ngăn xếp tăng lên liệu bị tràn khỏi ngăn xếp với lệnh POP , tăng lên liệu bị tràn khỏi ngăn xếp với phản hồi từ chương trình RET phản hồi từ ngắt RETI
(14)Duykhanh8x1311@gmail.com 14 không gian liệu vài cài đặt trước cấu trúc AVR nhỏ mà cần SPL Trong trường hợp , ghi SPH khơng trình bày
Thanh ghi lựa chọn RAM page Z - RAMPZ
- Bit – RES : bit dự trữ ( Reserved Bits )
Có bít dự trữ luôn đọc Khi viết vào vị trí địa viết bit khơng cho tương thích với thiết bị tương lai
- Bit – RAM PZ0 : extended RAM page Z – pointer
Thanh ghi RAMPZ thường sử dụng để chọn lựa mà 64K RAM page truy cập trỏ Z Vì Atmega 128 khơng hỗ trợ nhiều 64K nhớ SRAM , ghi chỉđược sử dụng để lựa chọn trang mà nhớ chương trình truy cập vào mà lệnh ELMP/SPM sử dụng Sự cài đặt khác Bit RAMPZ0 cho ta hiệu ứng :
RAMPZ0 = địa chỉ nhớ chương trình từ $0000 - $7FFF ( thấp hơn 64K bytes ) truy cập ELPM/SPM
RAMPZ0 = địa chỉ nhớ chương trình từ $8000 - $FFFF ( cao hơn 64K bytes) truy cập bởiELPM/SPM
Chú ý LPM khơng có ảnh hưởng việc cài đặt RAMPZ Lệnh thực thi định thời (instruction execution timing)
Phần miêu tả khái niệm quản lý truy cập bộđịnh thời cho thực thi lệnh CPU AVR điều khiển bộđịnh thời CPU , sinh trực tiếp từ nguồn phát xung đồng hồđã chọn đến chip Không có chia bộđếm thời gian bên sử dụng
(15)Duykhanh8x1311@gmail.com 15 cho chức giá thành , chức xung nhịp chức đơn vị nguồn điện
Hình : lệnh truy cập đồng thời lệnh thực thi
Hình khái niệm bộđịnh thời bên cho file đăng kí Trong chu kì xung nhịp đơn 1qua trình tính tốn ALU có ghi thực thi , kết lưu lại ghi đích đến
Q trình điều khiển ALU chu kì đơn
Khởi động lại điều khiển ngắt
AVR cung cấp đa dạng nguồn ngắt khác Các ngắt vecto phân chia ngắt có vecto chương trình ngắt vùng nhớ chương trình Tất vecto ngắt gán với bit riêng rẽ mà phải viết mức logic với bit kích hoạt ngắt chung ghi trạng thái kích hoạt ngắt Phụ thuộc vào giá trị bộđếm chương trình , ngắt tựđộng vơ hiệu hóa mà bít khóa khởi động BLB02 BLB12 lập trình Đặc điểm cải thiện tính bảo mật phần mềm xem thêm phần nhớ chương trình trang 286 để biết thêm chi tiết
(16)Duykhanh8x1311@gmail.com 16 Khi ngắt xuất , Bit I kích hoạt ngắt chung bị xóa tất ngắt bị vơ hiệu hóa Phần mềm người sử dụng viết mức logic vào bit I để kích hoạt khối ngắt Tất ngắt kích hoạt ngắt chương trình phục vụ ngắt hành Bít I tựđộng cài đặt có phản hồi từ lệnh ngắt RETI thực thi
Đây sở loại ngắt Loại thứ khởi động kiện mà cài đặt cờ báo ngắt Với ngắt , bộđếm chương trình vecto hóa đến vecto ngắt thực thực thi việc điều khiển chương trình phục vụ ngắt , phần cứng xóa cờ ngắt tương ứng Cờ ngắt xóa việc viết mức logic lên bit vị trí cờ ngắt bị xóa Nếu điều kiện ngắt xuất bit kích hoạt ngắt tương ứng bị xóa ,cờ ngăt cài đặt ghi nhớ q trình ngắt kích hoạt , cờ ngắt bị xóa phần mềm Tương tự , nhiều điều kiện ngắt xuất bit kích hoạt ngắt chung bị xóa, cờ báo ngắt tương ứng cài đặt ghi nhớ bít kích hoạt ngắt chung cài đặt thực thi sau thứ tự ưu tiên
Loại thứ ngắt khởi động cần điều kiện ngắt đưa Những ngắt khơng cần thiết phải có cờ báo ngắt Nếu điều kiện ngắt biến trước ngắt kích hoạt ngắt khơng khởi động
Khi AVR từ ngắt , ln ln phản hồi từ chương trình thực nhiều lệnh trước ngắt trì hỗn xử lý
Chú ý ghi trạng thái khơng tựđộng lưu trữ nhập vào chương trình phục vụ ngắt khơi phục lại phản hồi từ chương trình phục vụ ngắt Điều phải điều khiển phần mềm
(17)Duykhanh8x1311@gmail.com 17 Khi việc sử dụng lệnh SEI để kích hoạt ngắt , lệnh SEI thực thi trước ngắt bị trì hỗn ví dụ
Thời gian đáp ứng ngắt
Đáp ứng ngắt thực thi cho tất ngắt AVR tối thiểu chu kì xung nhịp đồng hồ Sau xung nhịp đồng hồ , vec to địa chương trình chương trình phục vụ ngắt thực thi Trong suốt chu kì xung nhịp , đếm chương trình bịđẩy vào ngăn xếp Vecto thường nhảy chương trình phục vụ ngắt , lệnh nhảy tạo chu kì xung nhịp Nếu ngắt xuất suốt trình thực thi lệnh nhiều chu kì , lệnh hoàn thành sau trước ngắt xử lí Nếu ngắt xuất MCU chếđộ ngủ Sleep mode , thời gian đáp ứng thực thi ngắt gia tăng chu kì xung nhịp Sự gia tăng dẫn đến thêm vào thời gian khởi động từ trình ngủ lựa chọn Sleep mode
(18)Duykhanh8x1311@gmail.com 18
IV Các bộ nhớ của AVR Atmega 128
Phần miêu tả nhớ khác Atmega 128 Cấu trúc AVR có khơng gian nhớ , nhớ liệu nhớ chương trình Thêm vào , đặc điểm Atmega 128 nhớ EEPROM cho kho lưu trữ liệu Tất vùng nhớ dài ổn định
Bộ nhớ chương trình flash co thể lập trình lại hệ thống
Atmega 128 bao gồm 128K bytes nhớ chương trình lập trình lại chip dùng để lưu trữ chương trình Từ tất lệnh AVR có độ rộng 16 32 bit , nhớ Flash tổ chức 64K*16 Để bảo mật phần mềm , khơng gian nhớ chương trình Flash chia thành phần , phần chương trình khởi động phần chương trình ứng dụng
Bộ nhớ Flash có độ bền lâu 10000 chu kì ghi xóa Bộđếm chương trình (PC )của Atmega 128 16 bit dài , việc đặt địa cho 64K định vị nhớ chương trình Hoạt động khu vực chương trình khởi động cịn kết hợp với bit khóa q trình khởi động bảo vệ phần mềm mô tả cách chi tiết phần hỗ trợ tải trình khởi động trang 273 lập trình nhớ trang 286 ởđó bảo gồm mơ tả chi tiết lập trình cho nhớ Flash SPI , JTAG , kiểu lập trình song song
Bảng số có thểđược gán bên khơng gian địa nhớ chương trình( xem thêm LPM – load program memory ELPM – Extended load program Memory instruction description )
Giản đồ thời gian cho việc cài đặt lệnh thực thi lệnh giới thiệu phần lệnh thực thi thời gian trang 14
(19)Duykhanh8x1311@gmail.com 19 Bộ nhớ dữ liệu SRAM : SRAM Data Memory
Atmega 128 hỗ trợ cấu hình khác cho nhớ liệu SRAM nhưđược liệt kê bảng
Hình : cách mà nhớ SRAM Atmega 128 tổ chức
Atmega 128 vi xử lý linh hoạt với nhiều đơn vị ngoại vi nên hỗ trợ 64 vị trí dự trữ mã hoạt động lệnh IN OUT Vì khơng gian địa I/O mở rộng từ $60 đến $FF SRAM , lệnh ST/STS/STD
LD/LDS/LDD có thểđược sử dụng Không gian địa I/O xuất mà Atmega 128 trạng thái tương thích với Atmega 103
Trong chếđộ thông thường địa vị trí liệu 4352 hai file đăng kí , nhớ đầu vào I/O liệu SRAM 32 vị trí địa chỉđầu tiên ghi file , 64 vị trí nhớ I/O tiêu chuẩn , sau 160 vị trí vùng nhớ I/O mở rộng 4096 vị trí địa SRAM liệu
Trong chế độ tương thích với Atmega 103 , 4096 vị trí địa vùng liệu hai file đăng kí , vùng nhớ I/O SRAM liệu bên Đầu tiên 32 vị trí địa file đăng kí , 64 vị trí vùng nhớ I/O chuẩn , 4000 vị trí địa SRAM bên
Một tùy chọn SRAM liệu bên ngồi có thểđược sử dụng với Atmega 128 SRAM chiếm vùng vung địa cịn lại khơng gian địa 64K Vùng bắt đầu ởđịa bên SRAM Thanh ghi file , I/O , I/O mở rộng SRAM chiếm bit thấp 4352 bytes chế độ bình thường , chiếm 4096bytes thấp chế độ tương thích với Atmega 103 (I/O mở rộng khơng đề cập ởđây ) , sử dụng 64KB(65536 Bytes ) nhớ , 61184 Bytes nhớ dư chế độ bình thường , 61440 Bytes chếđộ tương thích với Atmega 103 xem phần giao diện nhớ bên trang 26 để thêm chi tiết
Khi truy cập địa nhớ SRAM vượt vị trí nhớ liệu bên , SRAM liệu bên truy cập sử dụng lệnh giống phần truy cập nhớ liệu bên Khi nhớ liệu bên truy cập , chân phân tích q trình đọc ghi (PG0 PG1) khơng hoạt động tất truy cập chu kì Quá trình điều khiển SRAM ngồi kích hoạt việc cài đặt bit SRE ghi MCUCR
(20)Duykhanh8x1311@gmail.com 20 SRAM ngoài, ngắt , gọi chương trình , phản hồi tạo xung nhịp bổ xung , bộđếm chương trình bytes bịđẩy lên tràn , việc truy cập vào nhớ không tạo thuận lợi cho truy cập nhớ pipe-line bên Khi giao diện SRAM sử dụng với trạng thái chờ ( wait- state ) , truy cập byte tạo , , xung nhịp thêm vào cho , , trạng thái chờ tương ứng Các ngắt , chương trình , phản hồi cần , , xung nhịp nhiều xác định hướng dẫn cài đặt lệnh cho ,2, trạng thái chờ
Năm kiểu đặt địa cho nhớ liệu bao gồm : trực tiếp , gián tiếp kèm thay , gián tiếp , gián tiếp kèm tiền giảm bớt , gián tiếp kèm post – increment Trong Bộ ghi file , ghi R26 R31 có đặc điểm ghi trỏđịa gián tiếp
Cách đánh địa trực tiếp hướng tới không gian địa trọn vẹn
Cách đánh địa gián tiếp kèm theo thay hướng tới 63 vị trí địa từ đại sởđược đưa ghi Y Z
Khi sử dụng kiểu đánh địa ghi gián tiếp kèm theo tự động thay post – increment , địa ghi X , Y , Z gia tăng giảm bớt
32 ghi làm việc đa chung , 64 ghi I/O 4096 Bytes SRAM liệu Atmega 128 truy cập thông qua tất kiểu đặt địa ghi file miêu tả “bộ ghi file đa dùng chung trang 12 “
(21)Duykhanh8x1311@gmail.com 21 Thời gian truy cập dữ liệu bộ nhớ : Data memory Access Times
Phần miêu tả khái niệm thời gian truy cập nói chung truy cập nhớ Sự truy cập nhớ liệu SRAM biểu thị xung cklCPU miêu tả hình 10
Bộ nhớ dữ liệu EEPROM
Atmega 128 bao gồm 4K bytes nhớ liệu EEPROM Nó tổ chức phân chia không gian liệu , bit đơn có thểđược đọc ghi Bộ nhớ EEPROM có độ bền 100000 chu kì ghi xóa Q trình truy cập EEPROM CPU miêu tả , việc xác định địa ghi địa EEPROM , ghi liệu EEPROM , ghi điều khiển EEPROM
Lập trình nhớ trang 286 bao gồm miêu tả chi tiết lập trình EEPROM SPI , JTAG , kiểu lập trình đồng thời
Truy cập đọc ghi của EEPROM
Các ghi quản lí việc truy cập EEPROM quản lí khơng gian I/O Thời gian truy cập ghi cho EEPROM đưa Bảng chức tự định thời , nhiên , phần mềm người dùng tự dò byte ghi Nếu mà mã người dùng bao gồm lệnh mà viết vào EEPROM , vài phịng ngừa phải đưa Trong nguồn cung cấp lọc kĩ , VCC có khả tăng giảm chậm bật tắt nguồn Vì nguyên nhân nên thiết bị vài chu trình thời gian để chạy điện áp thấp xác định tần số xung nhịp sử dụng Xem thêm phần giới thiệu sai hỏng EEPROM trang 25 để biết thêm chi tiết để tránh vấn đề xảy trường hợp
Để mà tránh ngăn cản vơ tình EEPROM viết , biện pháp viết xác định phải tuân theo Tham khảo phần miêu tả ghi điều khiển EEPROM để biết thêm chi tiết
(22)Duykhanh8x1311@gmail.com 22 Thanh ghi địa chỉ EEPROM – EEARH EEARL
Bit 15 12 – Res : bít dự trữ
Đây bít ln ln đọc Khi viết đến vị trí địa , viết bit để tương thích với thiết bị tương lai
Bít 11 – EEAR11 : địa EEPROM
Thanh ghi địa EEPROM – EEARH EEARL – xác định địa EEPROM không gian 4K bytes EEPROM Bytes liệu EEPROM đánh địa thuộc khoảng 4096 Giá trị ban đầu EEAR khơng xác định Giá trị xác phải viết trước EEPROM truy cập
Thanh ghi dữ liệu EEPROM – EEDR
Bít – EEDR7.0 dư liệu EEPROM
Để phục vụ cho trình ghi EEPROM , ghi EEDR bao gồm liệu viết vào EEPROM địa chỉđược đưa ghi EEAR Để phục vụ trình đọc EEROM , ghi EEDR bao gồm liệu đưa từ EEPROM địa đưa EEAR
Thanh ghi điều khiển EEPROM – EECR
Bít – Res : bit dự trữ
(23)Duykhanh8x1311@gmail.com 23 Việc viết EERIE để kích hoạt ngắt sẵn sàng EEPROM bít I SREG cài đặt Viết EERIE để vơ hiệu hóa ngắt ghi ngắt sẵn sàng EEPROM sinh ngắt khơng đổi EEWE bị xóa
Bít – EEMWE : bít kích hoạt viết EEPROM
Bít EEMWE định có cài đặt EEWE 1nguyên nhân gây EEPROM ghi liệu vào Khi mà EEMWE viết , việc viết EEWE vịng chu kì xung nhịp viết liệu vào EEPROM địa chỉđã lựa chọn Nếu EEMWE , việc viết EEWE khơng có hiệu lực Khi EEMWE viết phần mềm, phần cứng xóa bit sau chu kì xung nhịp Xem thêm phần miêu tả bit EEWE cho quy trình viết vào EEPROM
Bit 1- EEWE : Kích hoạt việc viết EEPROM
Tín hiệu EEWE kích hoạt việc ghi vào EEPROM phân tích EEPROM Khi địa liệu cài đặt xác , bit EEWE phải cài đặt để viết giá trị vào EEPROM Bit EEMWE phải cài đặt mức logic viết vào bit EEWE , theo cách khác việc viết vào EEPROM khơng xảy Quy trình nên tuân theo ghi vào EEPROM ( thứ tự bước không cần thiết )
1 Đợi EEWE trở thành
2 Đợi bit SPMEN ghi SPMCSR trở thành Viết địa EEPROM tới EEAR ( lựa chọn )
4 Viết liệu EEPROM tới EEDR ( lựa chọn )
5 Viết mức logic tới bit EEMWE viết mức logic tới bit EEWE ghi EECR
6 Trong chu kì xung nhịp sau cài đặt EEMWE , viết mức logic vào EEWE
Bộ nhớ EEPROM khơng thể bị lập trình suốt trình mà CPU ghi vào nhớ Flash Phần mềm phải kiểm tra xem chương trình nhớ Flash hoàn thiện trước khởi đầu lần ghi EEPROM Bước thực cần thiết phần mềm bao gồm tải trình khởi động (boot loader ) cho phép CPU lập trình vào nhớ Flash Nếu nhớ Flash không bao giờđược cập nhật CPU bước bỏ qua xem phần hỗ trợ tải trình khởi động trang 273 để biết thêm chi tiết lập trình khởi động
Cảnh báo : gián đoạn bước bước làm hỏng chu kì ghi , từ bit kích hoạt q trình ghi EEPROM bị hết thời gian chờ Nếu 1chương trình phục vụ ngắt truy cập vào ngắt truy cập vào EEPROM khác , ghi EEAR ghi EEDR bị sửa đổi , nguyên nhân trình ngắt EEPROM bị hỏng Nó đề nghị phải có cờ báo ngắt chung xóa suốt bước cuối để tránh vấn đề
(24)Duykhanh8x1311@gmail.com 24 EEWE cài đặt , CPU bị dừng lại chu kì xung nhịp trước lệnh thực thi
Bit – EERE : kích hoạt q trình đọc EEPROM
Tín hiệu EERE kích hoạt việc đọc EEPROM q trình đọc phân tích EEPROM Khi địa xác cài đặt ghi EEAR , bit EERE phải viết mức logic tới kích hoạt q trình đọc EEPROM Quá trình đọc EEPROM tạo lệnh , truy vấn liệu có giá trị Khi EEPROM đọc, CPU bị dừng lại chu kì xung nhịp trước lệnh thực thi
Người sử dụng nên thăm dị bit EEWE trước bắt đầu q trình đọc Nếu trình viết tiến hành , khơng thểđược đọc EEPROM , không thay đổi ghi EEAR
Sựđiều chỉnh tạo dao động thường sử dụng trình truy cập EEPROM Bảng liệt kê thịi gian chương trinh thơng thường cho truy cập EEPROM từ CPU
Các đoạn code mẫu dùng hàm C ASSEMBLY để viết vào EEPROM
(25)(26)Duykhanh8x1311@gmail.com 26 Quá trình viết suốt chế độ ngủ ngắt điện (EEPROM Write During Power- down Sleep Mode )
Khi đăng nhập vào chế độ ngủ ngắt điện trình viết
EEPROM hoạt động , trình viết EEPROM tiếp tục hồn thành trước thời gian truy cập ghi chuyển tiếp Tuy nhiên , q trình viết hồn thành , tạo dao động tiếp tục chạy , hệ , thiết bị không truy nhập vào chếđộ ngắt nguồn cách trọn vẹn Vì đề nghị kiểm tra lại q trình viết EEPROM hồn thành trước có truy nhập vào chế độ ngắt nguồn
Sự ngăn cản việc sai hỏng EEPROM
Trong suốt trình VCC mức thấp , liệu EEPROM bị hư hỏng điện áp nguồn cấp thấp CPU EEPROM làm việc bình thường Những kết giống phần EEPROM sử dụng bậc bo mạch hệ thống , giải pháp thiết kế nên áp dụng
Một hư hỏng liệu EEPROM bị gây hai trường hợp mà điện áp thấp Đầu tiên , trình ghi liên tục thơng thường tới EEPROM cần có điện áp cực tiểu đểđiều khiển Thứ , thân CPU thực lệnh không , nguồn cung cấp thấp
Sự hư hỏng liệu EEPROM dễ dàng tránh khuyến cáo trình bày :
Giữ cho hoạt động RESET (low) AVR suốt giai đoạn thiếu điện áp nguồn cấp Điều làm việc kích hoạt dị sụt áp bên (BOD) Nếu tín hiệu RESET xuất trình ghi tiến hành , trình ghi hoàn thành với điều kiện điện áp nguồn cấp bị thiếu hụt Bộ nhớ vào/ra : I/O Memory
Vùng nhớ I/O xác định Atmega 128 phần “chi tiết ghi “ trang 362
(27)Duykhanh8x1311@gmail.com 27 hỗ trợ phạm vi 64 vị trí dự trữ mã hoạt động (opcode )cho lệnh IN OUT Cho phần vùng nhớ I/O mở rộng từ $60 - $FF SRAM, lệnh ST/STS/STD LD/LDS/LDD sử dụng Vùng khơng gian I/O mở rộng thay với vị trí SRAM mà Atmega 128 chế độ tương thích với Atmega 103
Để tương thích với thiết bị tương lai , bít dự trữ nên viết truy nhập Các địa I/O dự trữ không nên viết vào
Một vài trạng thái cờ báo bị xóa việc viết mức logic lên chúng Chú ý lệnh CBI SBI sẽđiều khiển tất bit ghi I/O, viết lùi vào cờ đọc cài đặt , có xóa cờ Các lệnh CBI SBI làm việc với ghi từ $00 đến $1F
Các ghi ngoại vi ghi điều khiển ngoại vi diễn giải phần sau
Giao diện bộ nhớ : External Memory Interface
Với tất tính mà nhớ ngồi cung cấp , phù hợp đểđiều khiển giao diện đến nhớ thiết bị SRAM nhớ Flash , ngoại vi hiển thị LCD , chuyển đổi A/D , D/A Các tính
- Cài đặt chế độ chờ khác ( bao gồm No wait – state )
- Không phụ thuộc vào việc cài đặt trạng thái chờ cho phần nhớ ngồi ( cấu hình cỡ sector )
- Số bit riêng đến địa bit cao lựa chọn
- Bộ giữ bus đường liệu tới triệt tiêu dòng điện cực tiểu ( lựa chọn)
Tổng quan : Overview
(28)Duykhanh8x1311@gmail.com 28 Chú ý : Atmega 128 không chế độ tương thích với Atmega 103 : cấu hình nhớ A khả dụng ( cấu hình nhớ B N/A )
Atmega 128 chế độ tương thích với Atmega 103 : cấu hình nhớ B khả dụng ( cấu hình nhớ A N/A)
Chếđộ tương thích với Atmega 103
Cả hai ghi điều khiển nhớ ( XMCRA XMCRB ) đặt không gian I/O mở rộng Trong chếđộ tương thích với Atmega 103 , ghi khơng khả dụng , tính lựa chọn ghi không khả dụng Thiết bị chế độ tương thích với Atmega 103 , giống tính khơng Atmega 103 Sự giới hạn chế độ tương thích với Atmega 103
- có cài đặt trạng thái chờ ( wait – state ) khả dụng (SRW1n = 0b00 SRW1n = 0b01)
- Số bit mà truy cập đến địa byte cao sửa chữa - Phần nhớ bên ngồi khơng thể bị phân chia vào phần nhỏ sector
với cài đặt trạng thái chờ khác - Bus – keeper khơng khả dụng
- Các chân RD , WR ALE đầu ( cổng G Atmega 128 )
(29)Duykhanh8x1311@gmail.com 29 Việc sử dụng giao diện bộ nhớ : Using the External Memory Interface
Giao diện bao gồm :
- AD7:0 nhiều bus địa thấp bus liệu
- A15:8 Bus địa cao ( cấu hình thứ tự bit ) - ALE : kích hoạt địa then chốt
- RD : Phân tích sựđọc - WR: phân tích ghi
Bít điều khiển giao diện nhớ đặt trong3 ghi , ghi điều khiển MCU – MCUCR , ghi điều khiển nhớ A – XMCRA , ghi điều khiển nhớ bên B – XMCRB
Khi giao diện XMEM kích hoạt , giao diện XMEM ghi đè lên trình cài đặt ghi định hướng liệu mà tương ứng với cổng riêng tới giao diện XMEM Để biêt thêm chi tiết phần cổng ghi đè xem phần chức luân phiên cổng I/O trang 86 Giao diện XMEM tự động dò truy cập vào hay dù hay không Nếu truy cập bên ngồi giao diện XMEM xuất địa , liệu , tín hiệu điều khiển cổng theo hình 13 ( hình dạng sóng thiếu trạng thái chờ vWait – state ) Khi ALE từ cao đến thấp có giá trịđịa AD7:0 ALE thấp suốt trình truyền liệu Khi giao diện XMEM kích hoạt có truy cập vào gây hoạt động địa , liệu , cổng ALE , phân tích RD WR khơng bị dịch chuyển suốt trình truy nhập vào Khi giao diện nhớ ngồi bị vơ hiệu hóa , chân bình thường việc cài đặt bit định hướng liệu sử dụng Chú ý mà giao diện XMEM bị vơ hiệu hóa , không gian địa bên SRAM nhị phân bên không vẽ vào SRAM bên Hình 12 minh họa cách kết nối SRAM với AVR việc sử dụng bit then cài bit (an octal latch ) ( thường “74*573” lượng tương đương ) mà suốt cổng G mức cao
Sự cần thiết của Chốt địa chỉ ( Address Latch Requirements )
Do trình điều khiển giao diện XRAM có tốc độ cao , chốt địa phải lựa chọn cẩn thận cho tần số hệ thống MHz @4V 4MHz @ 2.7V Khi trình điều khiển tần số , series chốt 74HC cũ thông thường trở nên không phù hợp Giao diện nhớ thiết kếđể phù hợp với series chốt 74HC Tuy nhiên , hầu hết latch sử dụng cần chúng tuân theo tham số thời gian , tham số thời gian cho chốt địa :
- D đến Q lan truyền trễ ( tPD)
(30)Duykhanh8x1311@gmail.com 30 Giao diện nhớ thiết kếđểđảm bảo thời gian treo địa nhỏ sau G xác nhận mực thấp th = ns Tham khảo thêm tLAXX_LD /tLLAXX_ST phần “ biểu đồ nhớ liệu “ bảng 137 đến bảng 144 trang 328 -330 Sự lan truyền trễ từ D đến Q ( tPD ) phải đưa vào xem xét mà tính tốn thời gian truy cập cần thiết thành phần bên Thời gian cài đặt liệu trước G thấp (tSU ) phải không vượt giá trị địa chỉđể ALE thấp (tAVLLC ) giá trị PCB âm trì hỗn q trình viết ( phụ thuộc vào dung lượng tải )
Hình 12 : SRAM kêt nối với AVR
Sự dừng lại bộ giữ Bus ( Pull – up and Bus – keeper )
Các dừng cổng AD7:0 hoạt động ghi cổng tương ứng viết Để giảm lượng tiêu thụđiện chế độ Sleep mode , khuyến cáo để vơ hiệu hóa dừng pull – up việc viết ghi cổng trước đăng nhập vào chếđộ ngủ sleep
Giao diện XMEM cung cấp giữ Bus – keeper đường AD7:0 Bộ Bus – keeper bị vơ hiệu hóa kích hoạt phần mềm , miêu tả phần “ External Memory Control Register B – XMCRB “ trang 33 Khi kích hoạt , giữ bus – keeper bảo đảm1 cấp logic xác định (0 ) bus AD7:0 mà đường khác trạng thái giao diện XMEM Bộđịnh thời
(31)Duykhanh8x1311@gmail.com 31 sánh với thủ tục cài đặt Atmega 128 Thời gian truy cập nhớ xác định thời gian từ lúc chip nhận tín hiệu đến lựa chọn/đánh địa liệu địa thực điều khiển Bus Thời gian truy nhập vượt thời gian từ xung ALE phải xác nhận thấp liệu ổn định suốt trình đọc liên tục (xem tLLRL + tRLRH – tDVRH bảng 137 – 144 trang 328- 330 ) Các trạng thái chờ khác cài đặt phần mềm Như tính thêm vào , phân chia nhớ ngồi thành phần nhỏ với cài đặt trạng thái riêng Điều làm có khả kết nối với thiết bị nhớ khác với yêu cầu định thời khác giống giao diện XMEM Để biết thêm chi tiết bộđịnh thời giao diện XMEM , tham khảo bảng 137 -144 hình 157-160 phần bộđịnh thời nhớ liệu gắn trang 328
Chú ý giao diện XMEM dị dạng sóng hình liên hệ với đồng hồ xung nhịp bên hệ thống Độ lệch xung nhịp xung nhịp ngồi (XTAL ) bảo đảm ( khác nhiệt độ thiết bị nguồn cấp ) Kết việc , giao diện XMEM không thích hợp với q trình điều khiển dị
(32)(33)Duykhanh8x1311@gmail.com 33 Miêu tả ghi XMEM (XMEM register Description )
Thanh ghi điều khiển MCU –MCUCR ( MCU Control Register )
Bit – SRE : kích hoạt SRAM/XMEM bên ngồi
Bằng việc viết SRE kích hoạt giao diện nhớ ngồi Các chân chức AD7:0 , A15:8 , ALE , WR , RD kích hoạt chân chức luân phiên Bít SRE ghi đè lên cài đặt chân định hướng ghi định hướng liệu tương ứng Việc viết SRE , vơ hiệu hóa giao diện nhớ ngồi chân thơng thường cài đặt định hướng liệu sử dụng
Bit – SRW10 : bit lựa chọn trạng thái chờ
Để có miêu tả chi tiết khơng phải chế độ tương thích với Atmega 103 , xem phần mô tả chung cho bit SRWn bên (XMCRA miêu tả ) Trong chếđộ tương thích với Atmega 103 , việc viết SRW10 để kích hoạt trạng thái chờ chu kì xung nhịp thêm vào suốt trình phân tích đọc /viết hình 14
(34)Duykhanh8x1311@gmail.com 34 Thanh ghi điều khiển bộ nhớ A – XMCRA
Bit – RES : bit dự trữ
Đây bit dự trữ luôn đọc Khi việc viết vào vị trí địa , viết bit để tương thích với thiết bị tương lai
Bít – SRL2 , SRL1 , SRL0 : giới hạn vùng trạng thái chờ
Nó dùng để cấu hình trạng thái chờ khác cho địa nhớ bên Khơng gian địa nhớ bên ngồi phân chia vào khu vực mà vừa phân chia bit trạng thái chờ Các bit SLR2 , SLR1 , SLR0 đặt khơng gian địa nhớ bên ngồi nguyên sử lý khu vực Khi tồn khơng gian địa SRAM cấu khu , trạng thái chờđược cấu hình bang bit SRW11 SRW10
Bit bit MCUCR – SRW11 , SRW10 : bit lựa chọn trạng thái chờ cho khu vực cao
Các bit điều khiển SRW11 SRW10 điều khiển thứ tự trạng thái chờ cho khu vực cao không gian địa nhớ , xem bảng
(35)Duykhanh8x1311@gmail.com 35 Bít – Res : bit dự trữ
Đây bit dự trữ luôn đọc Khi đọc vị trí địa này, viết bit để tương thích với thiết bị tương lai
Thanh ghi điều khiển bộ nhớ bên ngồi B - XMCRB
Bít – XMBK : kích hoạt bus- keeper nhớ bên ngồi
Việc viết XMBK để kích hoạt Bus-keeper đường AD7:0 Khi Bus –keeper kích hoạt , đảm bảo mức logic xác định ( )trên
AD7:0 chung khác trạng thái Việc viết XMBK để vơ hiệu hóa Bus keeper XMBK khơng đủđiều kiện với SRE , dù giao diện XMEM bị vô hiệu hóa , bus keeper hoạt động cần bit XMBK
Bít – Res : bit dự trữ
Đây bit dự trữ luôn đọc Khi đọc vị trí địa này, viết bit để tương thích với thiết bị tương lai
Bit – XMM2 , XMM1, XMM0 : chắn mức cao nhớ
(36)Duykhanh8x1311@gmail.com 36 Việc sử dụng tất cả vị trí của bộ nhớ nhỏ hơn 64KB
Kể từ nhớ vẽ đồ sau nhớ trong bảng11 , nhớ ngồi khơng đánh địa việc đánh địa 4352bytes không gian liệu Có thể xuất 4352 bytes địa chỉđầu tiên nhớ ngồi khơng truy cập ( địa nhớ 0x0000 đến 0x10FF ) Tuy nhiên , kết nối với nhớ ngồi nhỏ 64KB, ví dụ 32 KB , vị trí dễ dàng truy cập cách đơn giản việc đánh địa từ địa 0x8000 đến 0x90FF Vì bit địa A15 nhớ ngồi khơng kết nối đến nhớ , địa từ0x0000 đến 0x90FF xuất địa 0x0000 đến 0x10FF nhớ Việc đánh địa bên địa
0x90FF khơng khuyến nghị., điều xuất vị trí nhớ ngồi mà sẵn sàng truy cập địa (thấp ) khác Đến phần mềm ứng dụng , 32 KB nhớ bên ngồi xuất khơng gian địa 32 KB từ
0x1100 đến 0x90FF Điều minh họa hình 17 Cấu hình nhớ B tham khảo chếđộ tương thích với Atmega 103 , cấu hình A khơng có chếđộ tương thích
(37)Duykhanh8x1311@gmail.com 37 Sử dụng tất cả 64KB vị trí của bộ nhớ
(38)(39)Duykhanh8x1311@gmail.com 39
V Xung nhịp hệ thống lựa chọn xung nhịp
Xung nhịp hệ thống sự phân bố của chúng
Hình 18 giới thiệu xung hệ thống AVR phân bố chúng Tất xung nhịp cần kích hoạt thời điểm đưa Để giảm suy giảm điện áp nguồn , bộđịnh thời modules khơng sử dụng có thểđược dừng cách sử dụng chế độ ngủ khác mô tả phần ‘ quản lí nguồn chếđộ ngủ “ trang 45 tạo xung nhịp hệ thống mô tả chi tiết :
Xung nhịp CPU – clkCPU
(40)Duykhanh8x1311@gmail.com 40 Xung nhịp I/O – clkI/O
Xung nhịp I/O sử dụng đa số module I/O , giống
Timer/Counter , SPI USART Xung nhịp I/O sử dụng module ngắt , ý vài ngắt dò logic dị , cho phép ngắt tìm kiếm cho dù xung nhịp I/O bị tạm dừng Cũng ý nhận biết địa chỉở module TWI tiến hành cách không đồng mà clkI/O bị tạm dừng , kích hoạt thu nhận địa TWI tất chế độ sleep
Xung nhịp Flash – clkFLASH
Quá trình điều khiển xung nhịp Flash giao diện Flash Xung nhịp Flash thường hoạt động lúc với xung nhịp CPU
Xung nhịp của Timer dị bộ - clkASY
Xung nhịp timer dị cho phép timer/counter dị bộđược giữ nhịp cách trực tiếp từ tạo xung nhịp thạch anh 32 kHz bên Vùng xung nhịp xác định cho phép việc sử dụng Timer/counter bộđếm thời gian thực thiết bị chếđộ ngủ
Xung nhịp ADC – clkADC
ADC cung cấp với vùng xung nhịp riêng Điều cho phép trình dừng CPU xung nhịp I/O làm giảm nhiễu sinh mạch điện kĩ thuật số Nó đưa nhiều kết quảđúng đắn trình chuyển đổi ADC
Thanh ghi điều khiển chia XTAL – XDIV
Thanh ghi điều khiển phân chia XTAL sử dụng để phân chia tần số xung nhịp nguồn số khoảng 2-129 Tính sử dụng để làm giảm sụt áp mà có cần thiết cho nguồn tính tốn thấp
Bít – XDIVEN : Kích hoạt phân chia XTAL
(41)Duykhanh8x1311@gmail.com 41 Bít – XDIV0 : Bit lựa chọn chia XTAL
Các bit xác định hệ số chia mà áp dụng bit XDIVEN đặt Nếu giá trị bít kí hiệu d , cơng thức xác định kết tần số xung nhịp CPU ngoại vi fCLK :
fCLK = xung nhịp nguồn 129 – d
Giá trị bit bị thay đổi mà bit XDIVEN đặt Khi mà XDIVEN viết , giá trị viết đồng thời vào XDIV6 .XDIV0 chia theo hệ số chia Khi mà XDIVEN ghi , giá trị viết đồng thời vào XDIV6 XDIV0 loại bỏ Như chia chia xung đầu vào đến MCU , tốc độ tất ngoại vi làm giảm xuống mà trình chia theo hệ sốđược sử dụng
Khi xung nhịp hệ thống bị chia , timer/counter có thểđược sử dụng với xung nhịp không đồng Tần số xung nhịp dị phải thấp hơn1/4 tần số xung nhịp nguồn (scaled down ) Theo cách khác , ngắt bị , truy cập vào ghi timer/counter bị hỏng
Xung nhịp nguồn
Thiết bị có lựa chọn xung nhịp nguồn , lựa chọn bít cầu chì Flash (Flash Fuse ) Xung nhịp từ nguồn lựa chọn nhập vào phát xung nhịp AVR , định hướng đến module tương thích
Có nhiều lựa chọn khác cho lựa chọn xung nhịp khác đưa phần Khi mà CPU thức dậy từ chếđộ ngắt điện chế độ tiết kiệm điện , nguồn xung nhịp lựa chọn sử dụng cho thời gian khởi động , bảo đảm hoạt động ổn định tạo dao động trước lệnh bắt đầu Khi mà CPU khởi động từ chếđộ Reset cho phép khoảng thời gian trễ thêm vào để nguồn tiến đến cấp ổn định trước bắt đầu trình hoạt động bình thường Bộ tạo dao động
(42)Duykhanh8x1311@gmail.com 42 lượng xung nhịp dao động WDT sử dụng cho khoảng thời gian chờ bảng Tần số tạo dao động watchdog điện áp phụ thuộc phần “các số thông dụng “ trang 333
Nguồn tạo xung mặc định vận chuyển CKSEL = “0001” SUT = 10 Sự cài đặt nguồn tạo xung mặc định tạo dao động RC bên với khoảng thời gian khởi động dài Sự cài đặt mặc định bảo đảm người sử dụng tạo nguồn tạo xung nhịp theo mong muốn họ cách sử dụng ứng dụng hệ thống (in-system ) phần mềm lập trình song song
Bộ tạo dao động thạch anh
XTAL1 XTAL2 đầu vào đầu , tương thích , khuyêch đại ngược mà cấu hình để sử dụng tạo dao động chip , hình 19 Một tinh thể thạch anh cộng hưởng gốm có thểđược sử dụng Cầu chì CKOPT lựa chọn kiểu khuyêch đại tạo dao động khác Khi mà CKOPT lập trình , đầu tạo dao động dao động dao động rail-to-rail đầu Kiểu thích hợp điều khiển mơi trường nhiều nhiễu mà đầu từ XTAL2 điều khiển bộđệm xung nhịp thứ Chế độ có khoảng tần số rộng Khi mà CKOPT khơng lập trình tạo dao động có biên độ dao động đầu nhỏ Điều làm giảm mức tiêu thụ nguồn xét đến Chếđộ có dải tần số giới hạn khơng thể sử dụng đểđiều khiển bộđệm xung nhịp khác
(43)Duykhanh8x1311@gmail.com 43 tạo dao động có thểđược điều khiển chế độ khác , chế độ tối ưu cho mơt dải tần số xác định Các chếđộ điều khiển lựa chọn bầng cầu chì CKSEL3 bảng
Bảng
Bộ tạo dao động thạch anh tần số thấp
Để sử dụng đồng hồ thạch anh 32768 kHz tạo xung nhịp cho thiết bị tạo dao động thạch anh tần số thấp phải lựa chọn việc cài đặt cầu chì CKSEL đến “1001” Bộ tạo dao động thạch anh nên kết nối hình 19 Bằng việc lập trình cầu chì CKOPT , người sử dụng kích hoạt tụ bên XTAL1 XTAL2 , gỡ bỏ tụ bên ngồi cần thiết Các tụ bên có giá trị danh định 36pF
(44)Duykhanh8x1311@gmail.com 44 Bộ tạo dao động RC bên
Để định thời ứng dụng không nhạy , tạo dao động RC cấu hình 20 sử dụng Tần sốđược ước lượng cách đại khái công thức f=1/(3RC) C nên để 22pF Bằng việc lập trình cầu chì CKOPT , người sử dụng kích hoạt tụ 36pF bên XTAL1 GND Vì việc gỡ bỏ tụ bên ngồi cần thiết Để biết thơng tin vê trình điều khiển tạo dao động chi tiết cách chọn R , C , tham khảo ý ứng dụng tạo dao động RC bên ngồi
Bộ tạo dao động hoạt động chế độ khác , chế độ tối ưu cho1 khoảng tần số xác định Chế độđiều khiển lựa chọn cầu chì CKSEL3 bảng 11
(45)Duykhanh8x1311@gmail.com 45 Bộ tạo dao động bên đã hiệu chỉnh
Bộ tạo dao động bên hiệu chỉnh cung cấp xung nhịp ổn định 1.0, 2.0 ,4.0 , 8.0 MHz Tất tần số giá trị danh định 5V 250C Xung nhịp có thểđược lựa chọn xung nhịp hệ thống cách lập trình cầu chì CKSEL bảng 13 Nếu chọn lựa , hoạt động mà khơng có phận bên ngồi Cầu chì CKOPT nên ln ln khơng lập trình sử dụng lựa chọn xung nhịp Trong suốt trình Reset , phần cứng tải byte hiệu chỉnh cho tạo dao động MHz ghi OSCCAL tựđộng hiệu chỉnh tạo dao động RC Ở 5V , 25độ tần số tạo dao động1.0MHz lựa chọn , trình hiệu chỉnh đưa tần số khoảng ± 3% tần số danh định Việc sử dụng phương pháp hiệu chỉnh nhưđược miêu tả vWWW.atmel.com có thểđạt độ xác ± 1% bất cứđiện áp , nhiệt độ Khi tạo dao động sử dụng xung nhịp chip , tạo dao động Watchdog sử dụng cho Timer Watchdog cho thời gian chờ reset ( Reset Time- out ) Để biết thêm thông tin chi tiết giá trị hiệu chỉnh tiền lập trình , xem phần “calibration Byte “ trang 289
(46)Duykhanh8x1311@gmail.com 46 Thanh ghi hiệu chỉnh bộ tạo dao động – OSCCAL
Chú ý : ghi OSCCAL khơng khả dụng chế độ tương thích với Atmega103
Bít – CAL7 : giá trịđiều chỉnh tạo dao động
(47)Duykhanh8x1311@gmail.com 47 Xung nhịp bên
Để điều khiển thiết bị từ nguồn tạo xung nhịp bên , XTAL1 nên điều khiển hình 21 Để chạy thiết bị xung nhịp ngồi , cầu chì CKSEL phải lập trình “0000” Bằng việc lập trình cầu chì CKOPT , người sử dụng kích hoạt tụ 36pF bên XTAL1 GND
Khi mà tạo dao động lựa chọn , thời gian khởi động xác định rõ cầu SUT bảng 16
Khi áp dụng xung nhịp bên , cần thiết tránh thay đổi đột ngột trình áp dụng tần số xung nhịp đểđảm bảo hoạt động ổn định MCU Một thay đổi tần số lớn 2% từ chu kì xung nhịp đến xung dẫn đến trạng thái khơng thể tiên đoán trước Điều cần thiết đểđảm bảo MCU giữở chế độ Reset suốt trình thay đổi tần số xung nhịp
Bộ tạo dao động Timer/Counter
Vi điều khiển AVR với chân tạo dao động Timer/Counter (TOSC1 TOSC2) , dao động thạch anh nối trực tiếp chân Khơng có tụ cần thiết Bộ tạo dao động tối ưu cho việc sử dụng với tạo dao động theo dõi thạch anh 32.768kHz Việc áp dụng nguồn xung nhịp ngồi đến TOSC1 không khuyến cáo
(48)Duykhanh8x1311@gmail.com 48
VI Quản lí nguồn điện chếđộ sleep
Chếđộ chờ sleep kích hoạt chương trình ứng dụng để tắt module khơng sử dụng MCU , so tiết kiệm nguồn điện AVR cung cấp nhiều chếđộ sleep cho phép người dùng điều chỉnh tổn hao nguồn điện đáp ứng địi hỏi chương trình ứng dụng
Để truy nhập vào chế độ số chếđộ chờ , bit SE ghi MCUCR phải ghi với biến logic lệnh SLEEP phải thực thi Các bit SM2 , SM1 , SM0 ghi MCUCR lựa chọn chế độ chờ (Idle , giảm nhiễu ADC , tắt nguồn , tiết kiệm điện , chờ , chế độ chờ mở rộng ) kích hoạt lệnh SLEEP xem bảng 17 để biết thêm chi tiết Nếu ngắt kích hoạt xuất MCU chế độ chờ , MCU đánh thức MCU sau tạm dừng chu kì xung nhịp thời gian khởi động thêm vào , thực thi chương trình phục vụ ngắt , khơi phục lại q trình thực thi từ lệnh lệnh SLEEP Thành phần ghi file SRAM khơng bị thay đổi mà thiết bịđược đánh thức từ chế độ chờ Nếu tín hiệu reset xuất suốt chếđộ chờ , MCU đánh thức thực thi từ vecto Reset
Hình 18 trang 36 giới thiệu xung nhịp hệ thống khác Atmega 128 , phân bố chúng Hình hữu dụng việc lựa chọn chế độ chờ thích hợp
Thanh ghi điều khiển MCU
Thanh ghi điều khiển MCU bao gồm bit điều khiển cho quản lí nguồn điện
Bit – SE : kích hoạt chế độ chờ
Bít SE phải ghi mức logic để truy nhập vào MCU chếđộ Chờ mà lệnh SLEEP thực thi Để tránh việc truy nhập vào MCU chếđộ chờ lập trình đa , khuyến nghịđể viết bit kích hoạt chế độ Chờ SE trước trình thực lệnh SLEEP xóa thức dậy
Bit – SM2 : Bit ,1 ,0 lựa chọn chế độ chờ
(49)Duykhanh8x1311@gmail.com 49 Idle mode
Khi mà bit SM2 viết 000 , lệnh ngủ làm cho MCU truy nhập vào chếđộ Idle , việc dừng CPU cho phép SPI , USART , so sánh tương tự , chuyển đổi ADC giao diện dây nối tiếp , Timer/Counter , Watchdog , ngắt hệ thống tiếp tục hoạt động Chế độ ngủ dừng clkCPU clkFLASH cho phép xung nhịp khác chạy
Chếđộ Idle kích hoạt MCU thức dậy từ ngắt khởi động bên ngồi tốt phận bên giống timer tràn ngắt hồn thành q trình chuyển đổi USART Nếu thức dậy từ ngắt so sánh tương tụ Analog khơng cần thiết , so sánh Analog tắt nguồn cách cài đặt bit ACD bộđiều khiến so sánh analog ghi trạng thái – ASCR Nó giảm nhu cầu dùng điện chếđộ Idle Nếu ADC kích hoạt , q trình chuyển đổi bắt đầu tựđộngkhi mà chếđộ truy nhập
Chếđộ giảm nhiễu ADC
Khi mà bit SM2 đặt là001 , lệnh SLEEP làm cho MCU truy nhập vào chế độ giảm nhiễu ADC , việc dừng CPU cho phép ADC ,các ngắt , theo dõi địa giao diện dây nối tiếp , Timer/Counter Watchdog tiếp tục hoạt động ( kích hoạt) Chếđộ ngủ dừng clkI/O , clkCPU clkFLASH cho phép xung nhịp khác chạy
Điều cải tạo môi trường nhiễu cho ADC , làm cho độ xác phép đo cao Nếu chuyển đổi ADC kích hoạt , chuyển đổi bắt đầu tựđộng mà chế độ truy nhập Một phần ngắt bổ sung chuyển đổi ADC , có 1Reset , 1Reset Watchdog , Reset tắt nguồn ,1 địa giao diện dây nối tiếp tương ứng với ngắt , 1ngắt Timer/Counter0
(50)Duykhanh8x1311@gmail.com 50 Chếđộ ngắt nguồn
Khi mà bit SM2 viết 010, lệnh SLEEP làm cho MCU truy nhập vào chếđộ Tắt nguồn Power – down Trong chếđộ , tạo dao động bên bị dừng lại , ngắt , đồng hồđịa giao diện dây nối tiếp , Watchdog tiếp tục hoạt động (nếu kích hoạt ) Chỉ có Reset ngồi , Reset Watchdog , Reset Brown-out , ngắt tương ứng địa giao diện dây nối tiếp , cấp ngắt INT7:4 , ngắt INT3:0 có thểđánh thức MCU Chế độ ngủ dừng cách tất nguồn phát xung nhịp , cho phép module dị hoạt động
Chú ý ngắt khởi động cấp sử dụng cho việc đánh thức từ chế độ ngắt nguồn Power-down , thay đổi cấp phải giữ vài giai đoạn đểđánh thức MCU Tham khảo ngắt trang90 để biết thêm chi tiết
Khi đánh thức từ chế độ ngắt nguồn Power-down , có chậm trễ từ trạng thái đánh thức xuất đánh thức trở nên có hiệu lực Điều cho phép bộđịnh thời để khởi động trở nên ổn định sau hồn thành q trình dừng lại Chu kì đánh thức định nghĩa cầu chì CKSEL giống mà xác định chu kì Reset Time-out , miêu tả ”Clock Sourse” trang 37
Chếđộ tiết kiệm điện Power-save
Khi mà bit SM2 viết 011 , lệnh SLEEP làm cho MCU đăng nhập vào chếđộ tiết kiệm điện Power save Chế độ giống với chếđộ ngắt nguồn Power-down , với điểm khác sau :
Nếu Timer/Counter bị khóa cách khơng đồng , ví dụ Bít AS0 ghi ASSR cài đặt , Timer/Counter0 chạy suốt q trình ngủ Thiết bị có thểđược đánh thức từ tràn Timer kiện so sánh đầu từ
Timer/Counter0 bít kích hoạt ngắt Timer/Counter tương ứng cài đặt TIMSK , bít kích hoạt ngắt chung ghi SREG cài đặt
Nếu Timer dị khơng bị khóa dị , chế độ ngăt nguồn Power-down khuyến cáo thay cho chế độ tiết kiệm điện PoWer –save thành phần ghi Timer dị nên coi không xác định sau đánh thức chế độ tiết kiệm điện AS0
Chếđộ ngủ dừng tất phát xung nhịp trừ clkASY ,sự cho phép hoạt động module dị , bao gồm Timer/Counter bị khóa dị Chếđộ chờ Standby
(51)Power-Duykhanh8x1311@gmail.com 51 down với ngoại lệ phát dao động Oscillator giữ trình chạy Từ chế độ chờ Standby , thiết bịđược đánh thức chu kì xung nhịp đồng hồ Chếđộ chờ mở rộng
Khi mà bit SM2 đặt 111 xung nhịp tạo dao động thạch anh/bộ cộng hưởng lựa chọn , lệnh SLEEP làm cho MCU truy nhập vào chế độ chờ mở rộng Chếđộ giống chếđộ tiết kiệm điện với ngoại lệ tạo dao động giữ chạy Từ chế độ chờ mở rộng Extended Standby , thiết bị đánh thức chu kì xung nhịp
Sự tối thiểu hóa tổn hao cơng suất nguồn
Có nhiều yếu tố phải xem xét cố gắng làm cực tiểu tổn hao công suất nguồn hệ thống điều khiển AVR Nói chung ,các chếđộ ngủ Sleep nên sử dụng tối đa ,và chếđộ chờ nên lựa chọn vài chức thiết bị hoạt động Tất chức khơng cần thiết nên bị vơ hiệu hóa Đặc biệt , module cần xem xét đặc biệt cố gắng để đạt tổn hao nguồn thấp
Bộ chuyển đổi từ Analog sang Digital
(52)Duykhanh8x1311@gmail.com 52 theo chuyển đổi mở rộng Tham khảo phần chuyển đổi từ tương tự sang sốở trang 230 để biết thêm chi tiết hoạt động ADC
Bộ so sánh tương tự
Khi truy nhập vào chế độ Idle , so sánh tương tự nên vơ hiệu hóa sử dụng Khi truy nhập vào chế độ giảm nhiễu ADC , so sánh Analog nên vơ hiệu hóa Trong chếđộ ngủ khác , so sánh Analog bị vơ hiệu hóa cách tựđộng Tuy nhiên , so sánh Analog cài đặt để sử dụng điện tham chiếu đầu vào , so sánh Analog nên vơ hiệu hóa tất chếđộ ngủ Nói cách khác , điện áp tham chiếu kích hoạt , phụ thuộc vào chếđộ ngủ Tham khảo so sánh Analog trang 227 để biết thêm chi tiết cách cấu hình so sánh Analog
Bộ dò sự yếu nguồn Brown-out
Nếu dị Brown-out khơng cần thiết ứng dụng , module nên tắt Nếu dị Brown-out kích hoạt cầu chì BODEN , sẽđược kích hoạt tất tất chếđộ ngủ , , luôn tiêu hao nguồn Trong chế độ ngủ sâu ( deeper sleep ) , điều đóng góp đáng kể vào tổng tổn hao cơng suất mạch Tham khảo thêm phần “Brown-out Detector “để biết thêm chi tiết cách cấu hình dị yếu nguồn
Điện áp chuẩn bên ( Internal Voltage Reference )
Điện áp chuẩn bên kích hoạt cần Bộ dị yếu nguồn, so sánh tương tự , chuyển đổi ADC Nếu module bị vơ hiệu hóa mơ tả phần , Điện áp tham khảo (Internal Voltage Reference ) bị vơ hiệu hóa làm tổn hao nguồn Khi bật trở lại , người sử dụng phải cho phép truy xuất để khởi động trước đầu sử dụng Nếu truy xuất bị giữ lại chếđộ ngủ đầu sử dụng Tham khảo thêm phần ‘Internal Voltage Reference “ trang 54 để biết thêm chi tiết thời gian khởi động Timer Watchdog
(53)Duykhanh8x1311@gmail.com 53 Các chân cổng
Khi truy nhập vào chế độ ngủ , tất chân cổng nên cấu hình để tối thiểu hóa cơng suất sử dụng Điều quan trọng sau bảo đảm khơng có chân điều khiển tải trở Trong chếđộ ngủ xung nhịp I/O (clkI/O) xung nhịp ADC (clkADC) bị dừng lại bộđệm đầu vào thiết bị bị vơ hiệu hóa Điều đảm bảo khơng có cơng suất nguồn bị tiêu hao đầu vào logic không cần thiết Trong vài trường hợp, cổng vào logic cần thiết cho việc dị tìm điều kiện thức dậy (wake-up conditions) sau sẽđược kích hoạt lại Tham khảo thêm phần đầu vào số chếđộ ngủở trang70 để biết thêm chi tiết chân kích hoạt Nếu bộđệm đầu kích hoạt tín hiệu đầu vào gỡ bỏ di động (floating) có cấp tín hiệu tương tự đóng vào chân VCC/2 , bộđệm đầu vào sử dụng nguồn thừa
Giao diện JTAG hệ thống dõ lỗi chip
Nếu hệ thống dị lỗi chip kích hoạt cầu chì OCDEN chip truy nhập vào chếđộ ngắt nguồn (Power down) chế độ ngủ tiết kiệm điện , nguồn phát xung nhịp cịn lại kích hoạt Trong chếđộ ngủ khác , điều đóng góp đáng kể vào tổng hao hụt dịng điện Có cách khác để tránh điều :
- vơ hiệu hóa Cầu chì OCDEN - Vơ hiệu hóa cầu chì JTAGEN
- Viết vào bit JTD ghi MCUCSR
(54)Duykhanh8x1311@gmail.com 54
VII Điều khiển hệ thống Reset ( System Control and Reset )
Quá trình Reset của AVR
Trong suốt trình Reset , tất ghi I/O cài đặt đến giá trị khởi đầu chúng , chương trình bắt đầu thực thi từ vécto Reset chúng Các lệnh đặt Vecto Reset phải JMP – bước nhảy hoàn toàn – dẫn đến chương trình điều khiển trình Reset Nếu chương trình khơng kích hoạt nguồn ngắt , véc tơ ngắt không sử dụng , đoạn mã
chương trình bình thường có thểđược đặt vị trí khác Đây trường hợp vecto Reset khu vực ứng dụng vecto ngắt khu vực khởi động (Boot Section) vice versa Mạch điện hình 22 mức logic Reset bảng 19 xác định tham sốđiện mạch reset
Các cổng I/O AVR reset trạng thái ban đầu chúng mà nguồn reset tiến hành hoạt động Không cần thiết nguồn phát xung để chạy
Sau nguồn Reset vừa dừng hoạt động , bộđếm trễđược gọi , kéo dài Reset bên Điều cho phép nguồn hướng tới cấp độ ổn định trước hoạt động bắt đầu Chu kì định bộđếm trễđược xác định người sử dụng thông qua cầu chì CKSEL Các lựa chọn khác cho chu kì trễđược giới thiệu “clock Sourse” trang 37
Các nguồn Reset
Atmega 128 có nguồn Reset :
- Reset bật nguồn (Power On Reset) MCU Reset mà điện áp nguồn cấp thấp ngưỡng Reset bật nguồn (Power On Reset)
- Reset ngồi MCU Reset mức thấp đưa chân RESET dài độ dài xung tối thiểu
- Reset Watchdog MCU Reset mà chu kì Timer watchdog hết hạn (expires ) watchdog kích hoạt
- Reset Brown-out MCU reset điện áp nguồn cấp VCC ngưỡng Reset yếu điện áp Brown-out (VBOT) dò yếu điện áp (Brown-out Detector ) kích hoạt
(55)(56)Duykhanh8x1311@gmail.com 56 Reset Power on
1 xung reset bật nguồn (POR) (Reset Power on) phát mạch dò chip Cấp độ phát định nghĩa bảng 19 Xung POR kích hoạt đâuVCC cấp độ phát thấp Một mạch POR có thểđược sử dụng để khởi động Reset Start-up , để phát hỏng hóc ởđiện áp nguồn cấp
(57)Duykhanh8x1311@gmail.com 57 Reset ( External Reset )
(58)Duykhanh8x1311@gmail.com 58 Sự dò yếu điện áp
Atmega 128 có mạch dị yếu điện áp chip để theo dõi mức VCC suốt trình hoạt động việc so sánh với mức khởi động Mức khởi động cho BOD lựa chọn cầu chì BODLEVEL 2,7 V (BODLEVEL khơng lập trình ) 4.0V BODLEVEL lập trình ) Cấp khởi động có độ trễ để bảo đảm đầu độc lập dò điện áp thấp Độ trễ cấp dò nên diễn dịch VBOT+ = VBOT + VHYST/2 va VBOT- = VBOT – VHYST/2
Mạch BOT có thểđược kích hoạt vơ hiệu hóa cầu chì BODEN Khi mà cầu chì BOD kích hoạt ( BODEN lập trình ) , VCC giảm giá trị bên mức khởi động (VBOT- hình 26 ) , Reset yếu điện áp hoạt động Khi mà VCC tăng cấp khởi động (VBOT+ hình 26 ) , bộđếm thời gian trễ khởi động MCU sau chu kì thời gian chờ tTOUT vừa hết hạn
Mạch BOD dò sụt giảm điện áp VCCnếu nhưđiện áp cấp khởi động lâu tBODđược đưa bảng 19
Reset watchdog
(59)Duykhanh8x1311@gmail.com 59 Thanh ghi trạng thái điều khiển MCU – MCUCSR
Thanh ghi trạng thái điều khiển MCU cung cấp thông tin nguồn xung Reset nguyên nhân tín hiệu Reset
Chú ý EXTRF PORF khả dụng chế độ tương thích với Atmega 103
Bit – JTRF : cờ Reset JTAG
Bit cài đặt tín hiệu reset bị gây mức logic1 ghi Reset JTAG lựa chọn lệnh JTAG AVR_RESET Bit Reset tín hiệu Reset bật nguồn ( power on ) , việc viết mức logic lên cờ
Bit – WDRF : cờ reset Watchdog
Bit cài đặt tín hiệu Reset Watchdog xuất Bit Reset bởi1 tín hiệu Reset bật nguồn (power – on) , viết mức logic lên cờ
Bit – BORF cờ Reset yếu điện áp Brown-out
Bit reset tín hiệu reset Brown-out xuất Bit Reset bởi1 tín hiệu Reset bật nguồn (power – on) , viết mức logic lên cờ
Bit – EXTRF : cờ Reset
Bit cài đặt tín hiệu reset ngồi xuất Bit Reset bởi1 tín hiệu Reset bật nguồn (power – on) , viết mức logic lên cờ
Bit – PORF : cờ Reset bật nguồn (Power-on )
Bit cài đặt tín hiệu Reset Power-on xuất bit reset việc viết mức logic lên cờ
Để hiểu cách sử dụng cờ Reset với điều kiện Reset giống , người sử dụng nên đọc sau reset ghi MCUCSR dễ dàng lập trình Nếu ghi bị xóa trước tín hiệu reset khác xuất , nguồn tín hiệu reset tìm thấy việc khảo sát cờ reset
Sự tham khảo điện áp bên
Atmega 128 có vùng tham khảo bên (internal bandgap reference ) Điểm chuẩn sử dụng cho dò yếu điện áp (Brown-out Detection) , có thểđược sử dụng đầu vào đến so sánh tương tự chuyển đổi ADC Mốc chuẩn 2.56 V đến chuyển đổi ADC sinh từ Vùng tham khảo bên (internal bandgap reference)
(60)Duykhanh8x1311@gmail.com 60 Chuẩn điện áp có thời gian khởi động mà có thểảnh hưởng đến phương pháp nên sử dụng Thời gian khởi động đưa bảng 20 Để tiết kiệm điện , điện áp chuẩn khơng ln ln bật Điện áp chuẩn bật suốt trường hợp :
- Khi mà BOD kích hoạt ( cách lập trình cầu chì BODEN )
- Khi mà vùng điện áp chuẩn kết nối tới so sánh analog ( việc cài đặt bit ACBG ghi ACSR )
- Khi mà chuyển đổi ADC kích hoạt
Như , mà BOD khơng kích hoạt , sau cài đặt bit ACBG kích hoạt ADC , người sử dụng phải luôn cho phép mốc chuẩn (reference ) để khởi động trước đầu từ so sánh tương tự chuyển đổi ADC sử dụng Để giảm tổn hao công suất chếđộ tắt nguồn , người sử dụng tránh điều kiện bên đểđảm bảo mốc chuẩn tắt trước truy nhập vào chếđộ tắt nguồn Power- down
Timer watchdog
Timer watchdog bị khóa từ tạo dao động chip riêng biệt mà chạy MHz Đây giá trịđiển hình VCC = 5V Xem liệu mơ tảđặc tính cho giá trịđiển hình mức VCC khác Bằng việc điều khiển bộđếm gộp trước Timer watchdog , khoảng Reset watchdog điều chỉnh nhưđược bảng 22 trang 57 Bit WDR – Watchdog Reset – hướng dẫn reset Timer watchdog Timer watchdog reset mà bị vơ hiệu hóa tín hiệu reset chip xuất chu kì xung nhịp khác lựa chọn để xác định chu kì reset Nếu chu kì reset hết hạn mà khơng có tín hiệu Reset watchdog khác , Atmega 128 reset thực thi từ vecto reset Về chi tiết bộđịnh thời Reset watchdog , tham khảo trang 54
(61)Duykhanh8x1311@gmail.com 61 Thanh ghi điều khiển Timer watchdog – WDTCR
Bit – Res : bit dự trữ
Các bit bit dự trữ Atmega 128 luôn đọc Bit – WDCE : kích hoạt thay đổi watchdog
Bit phải cài đặt mà bit WDE ghi mức logic Nói cách khác , watchdog khơng bị vơ hiệu hóa lần viết , phần cứng xóa bit sau chu kì xung nhịp Tham khảo phần miêu tả bit WDE cho thủ tục vơ hiệu hóa watchdog Trong cấp an toàn bit phải cài đặt mà thay đổi bit bộđếm gộp trước (prescaler ) Xem thêm phần “timed Sequences for Changing the Configuration of the watchdog Timer) trang 58 để biết thêm chi tiết Bit – WDE : kích hoạt watchdog
(62)Duykhanh8x1311@gmail.com 62 thể bị xóa WDCE có mức logic Để vơ hiệu hóa Timer watchdog kích hoạt , quy trình phải tuân theo
1 hoạt động giống , viết mức logic lên WDCE WDE mức logic phải viết lên WDE cho dù cài đặt trước hoạt động vơ hiệu hóa bắt đầu
2 Trong vịng chu kì xung nhịp , viết mức logic lên WDE Điều vô hiệu hóa watchdog
Trong cấp an tồn , khơng thể thực để vơ hiệu hóa Timer watchdog , chí với thuật tốn mơ tả bên xem “ timed Sequences for Changing the Configuration of the watchdog Timer” trang 58
Bit – WDP2, WDP1 , WDP0 : Bộđếm gộp trước 2,1,0 Timer watchdog Các bit WDP2, WDP1 , WDP0 xác định việc đếm gộp trước Timer watchdog mà Timer watchdog kích hoạt Giá trị việc đếm gộp trước khác chu kì thời gian chờ tương ứng chúng bảng 22
(63)Duykhanh8x1311@gmail.com 63 Các chuỗi được định thời cho việc thay đổi cấu hình của Timer watchdog
Các chuỗi cho việc thay đổi cấu hình khác biệt khơng đáng kể cấp an toàn Phương pháp phân chia miêu tả cho cấp
Cấp an tồn
Chếđộ tương thích với hoạt động Timer watchdog tìm thấy Atmega 103 Timer watchdog bị vơ hiệu hóa từ đầu , khơng thể kích hoạt việc ghi bit WDE mà khơng có hạn chế Chu kì thời gian chờ bị thay đổi thời gian giới hạn Để vơ hiệu hóa Timer watchdog kích hoạt , quy trình miêu tảở trang 56 (sự miêu tả Bit WDE) phải tuân theo
Cấp an toàn
(64)Duykhanh8x1311@gmail.com 64 hoạt động giống , viết mức logic lên bit WDCE WDE Một
mức logic phải ghi bất chấp giá trị trước bit WDE
2 Trong vịng chu kì xung nhịp , trình điều khiển giống , viết bit WDE WDP ý muốn với bit WDCE xóa
Cấp an toàn
Trong chế độ , Timer watchdog ln ln kích hoạt , bit WDE luôn đọc chuỗi định thời cần thiết thay đổi chu kì thời gian chờ watchdog Để thay đổi thời gian chờ watchdog , quy trình phải tuân theo :
1 Trong trình điều khiển giống , viết mức logic len WDCE WDE Cho dù WDE cài đặt , WDE phải viết để khởi động chuỗi định thời
(65)Duykhanh8x1311@gmail.com 65
VIII Các ngắt
Phần miêu tả đặc trưng việc sử lý ngắt chạy Atmega 128 Để cho diễn tả chung việc sử lý ngắt AVR , tham khảo phần “Reset sử lý ngắt “ trang 15
(66)Duykhanh8x1311@gmail.com 66 Bảng 24 rasự bố trí vecto ngắt Reset cho kết hợp khác việc cài đặt BOOTRST IVSEL Nếu chương trình khơng kích hoạt nguồn ngắt , vecto ngắt khơng sử dụng , đoạn code chương trình thơng thường đặt vào vị trí Đây trường hợp vecto Reset đoạn chương trình ứng dụng vecto ngắt khu vực khởi động Boot section vise
versa
(67)Duykhanh8x1311@gmail.com 67
(68)Duykhanh8x1311@gmail.com 68 Khi cầu chì BOOTRST lập trình độ lớn khu vực khởi động cài đặt lên 8K bytes , cài đặt chương trình chung thông dụng cho địa Vecto ngắt Reset
(69)Duykhanh8x1311@gmail.com 69 Việc di chuyển ngắt chương trình ứng dụng không gian khởi động ( Moving Interrrupts Between Application and Boot Space )
Thanh ghi điều khiển ngắt chung điều khiển việc xếp vị trí bảng vecto ngắt
Thanh ghi điều khiển MCU – MCUCR
Bit – IVSEL : lựa chọn vecto ngắt
Khi mà bit IVSEL bị xóa (0 ) , vecto ngắt đặt vào vị trí bắt đầu nhớ Flash Khi bit đặt , vecto ngắt di chuyển đến vị trí bắt đầu khu vực tải chếđộ khởi động nhớ Flash Địa thời vị trí bắt đầu khu vực khởi động nhớ Flash (Boot Flash section ) xác định cầu chì BOOTSZ tham khảo phần “Boot Loader Support “ “Read-while- write Self-Programming “ trang 273 để thêm chi tiết Để tránh thay đổi vơ tình bảng vec to ngắt , quy trình ghi đặc biệt phải tuân theo để thay đổi bit IVSEL :
1 Viết bit kích hoạt thay đổi vecto ngăt (IVCE)
2 Trong vịng chu kì xung nhịp , viết giá trị mong muốn lên IVSEL viết lên bit IVCE
Các ngắt bị vô hiệu hóa cách tự động chuỗi thi hành , ngắt bị vơ hiệu hóa chu kì IVCE cài đặt phần dư chúng bị vơ hiệu hóa sau lệnh bên viết vào IVSEL Nếu IVSEL khơng ghi , ngắt cịn lại bị vơ hiệu hóa chu kì xung nhịp Bít I ghi trạng thái khơng bị tác động việc vơ hiệu hóa tựđộng Chú ý : Nếu vecto ngắt đặt khu vực tải q trình khởi động bit khóa trình khởi đọng BLB02 lập trình , ngắt bị vơ hiệu hóa q trình thực thi từ khu vực ứng dụng Nếu vecto ngăt đặt khu vực chương trình ứng dụng bit khóa Boot BLB02 lập trình, ngắt bị vơ hiệu hóa q trình thực thi từ khu vực tải trình khởi động tham khảo thêm phần “Boot Loader Support “ trang 273 để biết thêm chi tiết bit khóa BOOT
Bit – IVCE : kích hoạt thay đổi vecto ngắt
(70)(71)Duykhanh8x1311@gmail.com 71
IX Các cổng vào ( I/O port )
Giới thiệu
Tất cổng vào AVR có chức đọc-sửa đổi-ghi sử dụng cổng I/O digital chung Điều có nghĩa hướng chân cổng có thểđược thay đổi mà có thay đổi hướng vơ tình chân khác với lệnh SBI CBI Cái giống áp dụng thay đổi giá trịđiều khiển (nếu cấu đầu ) việc kích hoạt/vơ hiệu hóa điện trở kéo lên (nếu cấu đầu vào ) Mỗi bộđệm đầu có đặc tính điều khiển đối xứng với hai tản nhiệt cao nguồn điện dung Bộđiều khiển chân đủ mạnh đểđiều khiển hiển thị LED cách trực tiếp Tất chân cổng có điện trở kéo lên có khả lựa chọn riêng biệt với trở kháng bất biến điện áp nguồn cấp Tất chân I/O có điode bảo vệ để VCC chân Ground hiển thị hình 29 Tham khảo “electrical characteristic” trang 318 để có bảng tham số đầy đủ
Tất ghi bit tham khảo phần ghi mẫu chung
Trong trường hợp thấp “x” đại diện cho numbering letter cổng , két (lower case ) “n” đại diện cho số thứ tự bit Tuy nhiên việc sử dụng ghi bit xác định chương trình , mẫu xác phải sử dụng Ví dụ PORTB3 cho bit số cổng B , dẫn chứng chung chung PORTxn Thanh ghi I/O vật lí vị trí bit liệt kê “Register Description for I/O Ports “ trang 87
(72)Duykhanh8x1311@gmail.com 72 – PUD SFIOR vô hiệu hóa chức pull-up cho tất chân tất cổng cài đặt
Việc sử dụng cổng vào cổng vào số chung miêu tả “Ports as general Digital I/O” trang 67 Hầu hết chân cổng đa hợp với hàm luân phiên (alternate functions) cho đặc tính ngoại vi thiết bị Cách mà hàm luân phiên gây nhiễu với chân cổng miêu tả “alternate port functions”trên trang 71 Tham khảo thêm phần module riêng biệt cho cho miêu tả đầy đủ hàm luân phiên (Alternate function)
Chú ý việc kích hoạt hàm luân phiên vài chân cổng khơng ảnh hưởng đến việc sử dụng chân khác cổng cổng I/O số chung Các cổng như I/O kĩ thuật số chung ( Ports as General Digital I/O)
(73)Duykhanh8x1311@gmail.com 73 Cấu hình chân
Mỗi chân cổng bao gồm bit đăng kí : DDxn , PORTxn , PINxn Như ‘’ Register Description for I/O ports ‘ trang 87 Các bit DDxn truy nhập địa I/O DDRx , bit PORTxn địa I/O PORTx bit PINxn địa I/O PINx
Bit DDxn ghi DDRx lựa chọn hướng chân Nếu DDxn viết mức logic , Pxn cấu hình chân đầu vào
Nếu PORTxn viết mức logic chân cấu chân đầu vào , điện trở pull-up kích hoạt Để tắt điện trở pull-up , PORTxn phải viết mức logic chân phải cấu chân đầu Các chân cổng có trạng thái mà điều kiện Reset trở nên hoạt động , khơng có định thời chạy
Nếu PORTxn viết mức mà chân cấu chân đầu , chân cổng điều khiển mức cao (1) Nếu PORTxn viết mức logic mà chân cấu chân đầu , chân cổng điều khiển mức thấp (0)
Khi bật tắt trạng thái ({DDxn , PORTxn})=0b00 ) đầu cao ({DDxn , PORTxn} = 0b11 , trạng thái trung gian với pull-up kích hoạt ({DDxn ,
PORTxn}=0b01 ) đầu thấp ({DDxn,PORTxn}=0b10 ) phải xuất Thơng thường , pull-up kích hoạt trạng thái truy nhập đầy đủ , mơi trường có trở kháng cao khơng nhận biết khác bộđiều khiển mạnh pull-up Nếu trường hợp , bit PUD ghi SFIOR có thểđược viết để vơ hiệu hóa tất pull-up tất cổng
Việc chuyển đổi cổng vào với pull-up cổng thấp làm nảy sinh vấn đề giống Người sử dụng phải sử dụng trạng thái({DDxn , PORTxn} = 0b00 ) trạng thái đầu mức cao ({DDxn , PORTxn }=0b11 ) bước trung gian
(74)Duykhanh8x1311@gmail.com 74
Đọc giá trị chân
Không phụ thuộc vào việc cài đặt bit định hướng liệu DDxn , chân cổng có thểđược đọc thơng qua bit ghi PINxn Nhưđược hình 30 , bit ghi PINxn then cài trước cấu tạo cách đồng Điều cần thiết để tránh tính nửa bền chân vật lí thay đổi giá trị gần sườn xung nhịp bên (internal clock ) , giới thiệu độ trễ Hình 31 mạch định thời sựđồng việc đọc giá trị chân đặt bên Giá trị cực đại cực tiểu trễ lan truyền kí hiệu tương ứng tpd,max tpd,min
Coi chu kì xung nhịp bắt đầu ngắn sau sườn xuống xung nhịp hệ thống Then cài (latch ) đóng mà xung nhịp thấp , trở thành suốt xung nhịp mức cao , hiển thị khoảng bóng tín hiệu “SYNC LATCH “ Giá trị tín hiệu chốt (latched ) mà xung nhịp hệ thống xuống mức thấp Nó bị khóa bên ghi PINxn vị trí sườn xung nhịp dương Như hiển thị dòng tpd,max tpd, , tín hiệu chuyển tiếp đơn chân bị trễ ½ 1½ chu kì xung nhịp hệ thống phụ thuộc vào thời gian xác nhận
(75)Duykhanh8x1311@gmail.com 75 Đoạn mã mẫu cách để cài đặt chân cao 2,3 thấp cổng B , xác định chân cổng từ đến đầu vào với pull-úp gán vào chân Kết giá trị chân đọc trở lại , thảo luận từ trước , lệnh nop bao gồm giá trị thời có thểđọc trở lại gán đến vài chân
Kích hoạt đầu vào kĩ thuật số chếđộ ngủ ( Digital Input Enable and Sleep Modes )
(76)Duykhanh8x1311@gmail.com 76 mode , chế độ chờ mở rộng Extended Standby , để tránh tổn hao điện áp cao vài tín hiệu đầu vào khơng nối đất (left floating ) , có tín hiệu tương tự analog đóng lên chân VCC/2
SLEEP ghi đè lên chân cổng kích hoạt chân ngắt (External Interrupt ) Nếu truy vấn ngắt ngồi khơng kích hoạt , SLEEP kích hoạt cho chân SLEEP ghi đè nhiều hàm chức khác miêu tả “ Alternate Port Function “ trang 71 Nếu mức logic cao (1) đưa trong1 chân ngắt dị cấu “ sườn lên ngắt , sườn xuống ngắt , thay đổi logic chân “ ngắt ngồi khơng kích hoạt , tương ứng cờ báo ngắt sẽđược cài đặt tiếp tục từ chếđộ ngủđược nói đến , kèm chế độ ngủ gây truy vấn thay đổi logic
Các chân không được kết nối
Nếu vài chân khơng sử dụng , khuyến cáo đểđảm bảo chân có cấp xác định Mặc dù tất đầu vào số bị vơ hiệu hóa chế độ ngủ miêu tả , việc nối đất đầu vào nên tránh để giảm dòng điện tổn hao tất chếđộ khác nơi mà đầu vào số kích hoạt (Reset , Active mode Idle mode)
Phương pháp đơn giản đểđảm bảo cấp xác định chân khơng sử dụng , để kích hoạt pull-up bên Trong trường hợp , pull-up bị vơ hiệu hóa suốt q trình Reset Nếu tổn hao nguồn thấp suốt trình Reset quan trọng , khuyến cáo để sử dụng pull-up pull-down Việc kết nối chân không sử dụng cách trực tiếp đến VCC GND khơng khuyến khích , từ việc gây dòng điện thừa chân cấu hình ngẫu nhiên đầu
Chức năng cổng luân phiên
(77)(78)Duykhanh8x1311@gmail.com 78 Vùng nhỏ bên miêu tả chức luân phiên cho cổng , có liên quan đên tín hiệu ghi đè lên chức luân phiên Tham khảo thêm phần mô tả chức luân phiên để biết thêm chi tiết
Thanh ghi IO chứ năng đặc biệt – SFIOR
Bit – PUD : vơ hiệu hóa pull-up
Khi bit viết , pull-up cổng I/O bị vơ hiệu hóa dù ghi DDxn PORTxn cấu hình để kích hoạt pull-ups ({DDxn , PORTxn }=0b01 ) Xem phần cấu hình chân trang 67 để biết thêm chi tiết vềđặc điểm
Chức năng luân phiên của cổng A
(79)(80)Duykhanh8x1311@gmail.com 80 Chức năng luân phiên của cổng B : Alternate Functions of Port B
Chân luân phiên cấu bên : OC2/OC1C , bit
OC2 , đầu so sánh ghép với đầu : chân PB7 phục vụ đầu bên cho đầu so sánh Timer/Counter Chân cấu cổng (DDB7 đặt ) để phục vụ chức Chân OC2 đầu cho chức timer mode PWM
OC1C , đầu ghép với đầu C Chân PB7 phục vụ đầu bên cho đầu so sánh C Timer/Counter1 Chân cấu đầu (DDB7 đặt )để phục vụ chức Chân OC1C đầu cho chức timer PWM
OC1B , bit
OC1B , đầu so sánh ghép đầu B : Chân PB6 phục vụ đầu bên cho đầu so sánh B Timer/Counter Chân phải cấu đầu (DDB6 đặt ) để phục vụ chức Chân OC1B chân cho chức PWM mode timer
OC1A , bit
OC1A , đầu so sánh ghép đầu A : chân PB5 phục vụ cổng bên cho Timer/Counter đầu so sánh A Chân phải cấu cổng ( DDB5 đặt ) để phục vụ chức Chân OC1A chân đầu cho chức PWM mode timer
OC0 , Bit
OC0 , đầu so sánh ghép với đầu : Chân PB4 phục vụ đầu bên cho đầu so sánh Timer/Counter Chân phải cấu đầu (DDB4 đặt ) để phục vụ cho chức Chân OC0 đầu cho chức PWM mode timer
(81)Duykhanh8x1311@gmail.com 81 MISO : chân Master Data input , Slave Data output cho kênh SPI Khi mà SPI kích hoạt master , chân cấu đầu mà khơng quan tâm đến việc cài đặt DDB3 Khi SPI kích hoạt slave , sựđịnh hướng liệu chân điều khiển DDB3 Khi mà chân bị ép buộc làm đầu vào , pull-up điều khiển bit PORTB3
MOSI – Cổng B , bit
MOSI : SPI Master Data ouput , Slave Data input cho kênh SPI Khi mà SPI kích hoạt slave , chân cấu đầu vào bất chấp cài đặt DDB2 Khi SPI cấu master , sựđịnh hướng liệu chân điều khiển DDB2 Khi chân bị ép buộc làm đầu vào , pull-up điều khiển bit PORTB2
SCK – cổng B , bit
SCK : Master Clock output , Slave Clock input cho kênh SPI Khi mà SPI kích hoạt slave , chân cấu đầu vào bất chấp việc cài đặt DDB1 Khi SPI kích hoạt master , định hướng liệu chân điều khiển DDB1 Khi chân bị ép buộc làm đầu vào , pull-up điều khiển bit PORTB1
SS – cổng B ,bit
(82)Duykhanh8x1311@gmail.com 82 Chức năng luân phiên của cổng C
(83)(84)Duykhanh8x1311@gmail.com 84 Chức năng luân phiên của cổng D (alternate Functions oi Port D )
Các chân cổng D với chức luân phiên bảng 36
Cấu hình chân luân phiên : T2 – cổng D , bit
T2 , nguồn bộđếm Timer/Counter T1 – Cổng D , bit
T1, nguồn bộđếm Timer/Counter XCK1 – Cổng D ,bit
XCK1 , xung nhịp USART1 Thanh ghi định hướng liệu (DDD4)điều khiển hai xung nhịp đầu (DDD4 đặt ) đầu vào (DDD4 bị xóa ) Chân XCK1 hoạt động UART1 hoạt động chế động chếđộ đồng hóa
ICP1 – cổng D ,bit
ICP1 – Input Capture Pin1 : Chân PD4 đóng vai trờ chân thu thập đầu vào cho Timer/Counter
INT3/TXD1 – Cổng D , bit
INT3 , External Interrupt sourse : Chân PD3 phục vụ nguồn ngắt đến MCU
TXD1 , Transmit Data (chân đầu liệu cho UART1 ) Khi mà chuyển phát USART1 kích hoạt , chân cấu đầu bất chấp giá trị DDD3
INT2/RXD1 – cổng D , bit
INT2 , External Interrupt sourse Chân PD2 phục vụ nguồn ngắt đến MCU
RX D1 , Receive Data ( chân đầu vào liệu cho USART1 ) Khi mà thu USART1 kích hoạt , chân cấu đầu vào bất chấp giá trị DDD2 Khi USART bắt ép chân trở thành đầu vào , pull-up điều khiển bit PORTD2
(85)Duykhanh8x1311@gmail.com 85 INT1 , External Interrupt sourse Chân PD1 phục vụ nguồn ngắt đến MCU
SDA , Two-wire Serial Interface Data : mà bit TWEN ghi TWCR đặt để kích hoạt giao diện dây nối tiếp , chân PD1 bị ngắt kết nối khỏi cổng trở thành chân I/O liệu nối tiếp cho giao diện nối tiếp dây Trong chế độ , có lọc xung nhiễu chân để khử tín hiệu ngắn 50ns tín hiệu đầu vào , chân điều khiển bộđiều khiển kênh mở với giới hạn tốc độ quay
INT0/SCL – Cổng D , bit
INT0 , External Interrupt source Chân PD0 phục vụ nguồn ngắt bên đến MCU
SCL , Two-wire Serial Interface Clock : Khi mà TWEN TWCR đặt để kích hoạt giao diện dây nối tiếp , chân PD0 bị ngắt kết nối khỏi cổng trở thành cổng I/O xung nhịp nối tiếp cho giao diện dây nối tiếp Trong chế độ , có lọc xung nhiễu chân để khử xung nhiễu ngắn 50ns tín hiệu đầu vào chân điều khiển bộđiều khiển kênh mở với giới hạn tốc độ quay
(86)Duykhanh8x1311@gmail.com 86 Chức năng luân phiên của cổng E ( Alternate Functions of Port E )
(87)Duykhanh8x1311@gmail.com 87 INT7/ICP3 – cổng E , bit
INT7 , External Interrupt source : Chân PE7 phục vụ nguồn ngắt
ICP3 – Input Capture Pin : Chân PE7 có thểđóng vai trị chân thu thập đầu vào cho Timer/Counter
INT6/T3 – Cổng E ,bit
INT6 , External Interrupt source : chân PE6 phục vụ nguồn ngắt
T3 , nguồn bộđếm Timer/Counter INT5/OC3C – Cổng E , bit
INT5 , External Interrupt source : Chân PE5 phục vụ nguồn ngắt
OC3C , Output Compare Match C ouput ( đầu so sánh tương ứng đầu C ) : chân PE5 phục vụ đầu bên cho đầu so sánh cổng C Timer/Counter Chân phải cấu đầu (DDE5 đặt ) để phục vụ chức Chân OC3C chân đầu cho chức Timer chếđộ PWM
INT4/OC3B – Cổng E ,bit
INT4 , External Interrupt source : chân PE4 phục vụ nguồn ngắt
OC3B , đầu so sánh ghép đầu B : Chân PE4 phục vụ đầu bên cho đầu so sánh B Timer/Counter Chân phải cấu cổng (DDE4 đặt ) để phục vụ chức Chân OC3B chân đầu cho chức timer chếđộ PWM
AIN1/OC3A – cổng E ,bit
AIN1 – Analog Comparator Negative Input Chân nối trực tiếp đên đầu vào âm so sánh tương tự (analog Comparator )
OC3A , đầu so sánh ghép đầu A : Chân PE3 phục vụ đầu bên cho đầu so sánh A Timer/Counter Chân cấu đầu (DDE3 đặt )để phục vụ chức Chân OC3A chân cho chức timer chế độ PWM
AIN0/XCK0 – cổng E , bit
AIN0 – Analog Comparator Positive input (đầu vào dương so sánh Analog ) : chân nối trực tiếp với đầu vào dương so sánh analog XCK0 , USART0 External Clock ( xung nhịp USART0) Thanh ghi định hướng liệu (DDE2) điều khiên xung nhịp đầu (DDE2 đặt ) đầu vào (DDE2 bị xóa ) Chân XCK0 hoạt động USART0 điều khiển chế độđồng hóa
PDO/TXD0 – Cổng E ,bit
(88)Duykhanh8x1311@gmail.com 88 RXD0 , USART0 Receive Pin ( chân liệu đầu vào đến USART0) Khi thu tín hiệu USART0 kích hoạt chân cấu hình đầu vào bất chấp giá trị DDRE0 Khi USART0 bắt chân đầu vào , mức logic PORTE0 bật pull-up bên lên
Bảng 40 41 liên quan đến chức luân phiên cổng E tới việc ghi đè tín hiệu hình 33 trang 71
Chức năng luân phiên của cổng F ( alternate Functions of port F )
Cổng F có chức luân phiên đầu vào tương tự cho chuyển đổi ADC bảng 42 Nếu vài chân cổng F cấu đầu , điều cần thiết khơng có chuyển mạch trình chuyển đổi tiến hành Điều làm hỏng kết trình
(89)Duykhanh8x1311@gmail.com 89 TDI, ACD7 – cổng F , bit
ACD7 , chuyển đổi tương tự sang số , kênh
TDI , JTAG Test Data In : liệu cổng vào nối tiếp shifted ghi lệnh thành chi liệu ( chuỗi quét ) Khi mà giao diện JTAG kích hoạt , chân khơng sử dụng chân I/O
TDO,ADC6 – cổng F ,bit
ADC6 , chuyển đổi tương tự sang số , kênh
TDO, JTAG Test Data Out : liệu đầu vào nối tiếp từ ghi lệnh ghi liệu Khi giao diện JTAG kích hoạt, chân khơng thểđược sử dụng chân I/O
Chân TDO có trạng thái trạng thái TAP shift liệu truy nhập
TMS, ADC5 – cổng F , bit
ADC5 , chuyển đổi tương tự sang số , kênh
TMS , lựa chọn chếđộ kiểm tra JTAG : chân sử dụng cho sựđịnh hướng thông qua bộđiều khiển TAP trạng thái máy (TAP-controller state machine ) Khi giao diện JTAG kích hoạt chân khơng thể sử dụng chân I/O TCK, ACD4 – cổng F ,bit
ACD4 , chuyển đổi tương tự sang số ,kênh
TCK , xung nhịp kiểm tra JTAG : trình điều khiển JTAG đồng hóa lên TCK Khi mà giao diện JTAG kích hoạt , chân khơng thể sử dụng chân I/O
ADC3 – ADC0 – cổng F , bit
(90)Duykhanh8x1311@gmail.com 90 Chức năng luân phiên của cổng G
Trong chế độ tương thích với Atmega 103 , chếđộ luân phiên mặc định cho cổng G , cổng G sử dụng chân cổng số chung Cấu hình chân luân phiên bên :
TOSC1 – cổng G , bit
(91)Duykhanh8x1311@gmail.com 91 TOSC2 – cổng G , bit
TOSC2 , chân tạo dao động Timer : Khi bit AS0 ghi ASSR đặt để kích hoạt bộđịnh thời dị Timer/Counter , chân PG3 bị ngắt kết nối khỏi cổng , trở thành đầu khuyêch đại khuyêch đại tạo dao động Trong chếđộ , tạo dao động thạch anh kết nối với chân ,và chân sử dụng chân vào
ALE – cổng G , bit
ALE nhớ liệu bên Address Latch Enable signal RD – cổng G , bit
RD nhớ liệu bên ngồi đọc điều khiển phân tích WR – cổng G , bit
WR nhớ liệu bên viết điều khiển phân tích
(92)Duykhanh8x1311@gmail.com 92 Sự mô tả ghi cho cổng I/O
Thanh ghi liệu cổng A - PORTA
Thanh ghi định hướng liệu cổng A – DDRA
Địa chân đầu vào cổng A - PINA
Thanh ghi liệu cổng B – PORTB
Thanh ghi định hướng liệu cổng B – DDRB
Địa chân đầu vào B – PINB
Thanh ghi liệu cổng C –PORTC
(93)Duykhanh8x1311@gmail.com 93 Địa chân đầu vào C – PINC
Trong chế độ tương thích với Atmega 103 , ghi DDRC PINC khởi tạo đểđẩy kéo ( Push – Pull )đầu Zero Các chân cổng giả sử giá trị khởi tạo chúng , cho dù bộđịnh thời không hoạt động Chú ý ghi DDRC PINC khơng khả dụng chếđộ tương thích với Atmega 103 nên khơng sử dụng cho chế độ tương thích phía sau
Thanh ghi liệu cổng D – PORTD
Thanh ghi định hướng liệu cho cổng D – DDRD
Địa chân đầu vào cổng D
Thanh ghi liệu cho cổng E – PORTE
Thanh ghi định hướng liệu cho cổng E – DDRE
(94)Duykhanh8x1311@gmail.com 94 Thanh ghi liệu cổng F – PORTF
Thanh ghi định hướng liệu cổng F – DDRF
Địa chân đầu vào – PINF
Thanh ghi liệu cổng G – PORTG
Thanh ghi định hướng liệu cổng G – DDRG
Địa chân đầu vào cổng G – PING
(95)Duykhanh8x1311@gmail.com 95
X Các ngắt
Các ngắt khởi động chân INT7:0 Chú ý , kích hoạt , ngắt khởi động chân INT7 cấu đầu Đặc điểm cung cấp cách để sinh phần mềm ngắt Các ngắt ngồi khởi động việc đổ sườn xuống bắt sườn lên mức logic thấp Điều cài đặt nhưđã thể bảng đặc tính kĩ thuật ghi điều khiển ngắt – EICRA (INT3:0) EICRB( INT7:4) Khi ngắt ngồi kích hoạt cấu cấp khởi động , ngắt khởi động cần chân giữ mức thấp Chú ý nhận biết việc bắt sườn xuống bắt sườn lên ngắt chân INT7:4 cần có mặt bộđịnh thời I/O , miêu tả phấn “ Clock System and their Distribution “ trang 36 Các ngắt cấp thấp sườn ngắt INT3:0 dò cách dị Điều ngụ ý ngắt sử dụng cho việc bước (walking ) phần từ chếđộ ngủ khác chế độ Idle Bộđịnh thời I/O dừng tất chế độ ngủ trừ chế độ Idle
Chú ý mức ngắt khởi động sử dụng cho việc đánh thức tử chếđộ ngắt nguồn , mức thay đổi phải giữ khoảng thời gian đểđánh thức MCU Điều làm cho MCU giảm nhạy cảm với nhiễu Mức thay đổi lấy mẫu lần bộđịnh thời tạo dao động watchdog Chu kì tạo dao động watchdog µs (thơng thường ) 5V 25 độ C Tần số tạo dao động watchdog phụ thuộc vào điện áp phần “electrical characteristics “ trang 318 MCU đánh thức đầu vào có mức cần thiết suốt q trình lấy mẫu giữ kết thúc thời gian khởi động Thời gian khởi động xác định cầu chì SUT miêu tả phần “Clock System and their Distribution “ trang 36 Nếu mức lấy mẫu lần tạo dao động watchdog biến trước kết thúc thời gian khởi động, MCU đánh thức , khơng có ngắt sinh Mức cần thiết phải giữ đủ dài cho MCU hoàn thành việc đánh thức để khởi động mức ngắt
Thanh ghi điều khiển ngắt A – EICRA
Thanh ghi khơng hướng tới chếđộ tương thích với Atmega 103 , giá trị khởi đầu xác định INT3:0 ngắt mức thấp , Atmega 103
(96)Duykhanh8x1311@gmail.com 96 INT3 INT0 đăng kí cách dị Các xung chân INT3:0 rộng độ rộng xung cực tiểu đưa bảng 49 sinh ngắt Các xung ngắn khơng bảo đảm để sinh ngắt Nếu mức ngắt thấp lựa chọn , mức thấp phải giữ hoàn tất lệnh thực thi thời để sinh ngắt Nếu kích hoạt , mức ngắt khởi động se phát sinh yêu cầu ngắt cần chân giữở mức thấp Khi thay đổi bit ISCn , ngắt xuất Vì , khuyến cáo để vơ hiệu hóa INTn việc xóa bit kích hoạt ngắt ghi EIMSK Sau , bit ISCn thay đổi Cuối , cờ ngắt INTn nên xóa cách viết mức logic lên bit cờ ngắt (INTFn ) ghi EIFR trước ngắt kích hoạt lại
Thanh ghi điều khiển ngắt B – EICRB
(97)Duykhanh8x1311@gmail.com 97 Thanh ghi che ngắt – EIMSK
Bit – INT7 – INT0 : kích hoạt truy vấn ngắt –
Khi bit INT7 – INT0 ghi bit I ghi trạng thái
(SREG)được đặt , chân ngắt ngồi tương ứng kích hoạt Các bit điều khiển độ nhạy ngắt ghi điều khiển ngắt EICRA EICRB xác định cách , ngắt ngồi kích hoạt sườn lên sườn xuống mức độ nhạy ( level sensed ) Hoạt động chân khởi động yêu cầu ngắt chân kích hoạt đầu Điều cung cấp cách việc sinh phần mềm ngắt
Thanh ghi cờ ngắt EIFR (external interrupt flag register )
Bit – INTF7 – INTF0 : cờ ngắt –
(98)Duykhanh8x1311@gmail.com 98
XI 8-bit Timer/Counter với PWM and Asynchronous Operation ( Timer/Counter bit với PWM điều khiển dị bộ )
Timer/Counter0 module Timer/Counter bit , kênh đơn , đa dùng chung Các đặc điểm :
- Bộđếm kênh đơn
- Xóa Timer so sánh tương ứng ( tựđộng tải lại )
- Khơng có nhiễu sọc ngang , điều chế độ rộng xung pha (PWM) - Máy phát tần số
- Bộđếm gộp trước xung nhịp 10 bit
- Dòng tràn (overflow) nguồn ngắt ghép so sánh (TOV0 OCF0 ) - Cho phép bộđịnh thời từ bên 32kHz đồng hồ thạch anh phụ thuộc vào
xung nhịp I/O Tổng quan
(99)Duykhanh8x1311@gmail.com 99 Các ghi
Timer/Counter (TCNT0 ) ghi so sánh đầu (OCR0 ) ghi bit Các tín hiệu Yêu cầu ngắt ( viết tắt Int.Req ) nhìn thấy trong ghi cờ ngắt Timer (TIFR) Tất ngắt che riêng với ghi che ngắt Timer (TIMSK ) TIFR TIMSK không hình từđó ghi chia sẻ phận timer khác
Timer/Counter bị khóa bên , bộđếm gộp trước bị khóa cách khơng đồng khỏi chân TOSC1/2 , miêu tả chi tiết phần sau Quá trình điều khiển dị bộđược điều khiển ghi trạng thái dị (ASSR) Khối logic lựa chọn xung nhịp điều khiển mà nguồn xung nhịp
Timer/Counter sử dụng để làm tăng giảm giá trị Timer/Counter khơng hoạt động khơng có nguồn phát xung nhịp lựa chọn Đầu từ bộđịnh thời lựa chọn mức logic hướng dẫn xung nhịp timer (clkT0)
Thanh ghi so sánh đầu (OCR0)lưu bộđệm kép so sánh với giá trị Timer/Counter tất thời gian Kết phép so sánh sử dụng máy phát dạng sóng để phát xung PWM đầu tần số biến thiên chân so sánh đầu OC0) Xem thêm “Output Compare Unit “ trang 95 để biết thêm chi tiết Bộ so sánh ghép kiện cài đặt cờ so sánh (OCF0) mà sử dụng để sinh yêu cầu ngắt so sánh đầu
Các định nghĩa
Nhiều ghi bit tham khảo tài liệu viết theo mẫu chung Một trường hợp thấp “n” thay cho số thứ tự Timer/Counter , trường hợp Tuy nhiên , sử dụng hgi bit xác định chương trình , mẫu xác phải sử dụng ( ví dụ TCNT0 cho việc truy nhập
Timer/Counter đếm giá trị )
Định nghĩa bảng 51 sử dụng cách rộng rãi xuyên suốt tài liệu
Các nguồn xung nhịp Timer/Counter
(100)Duykhanh8x1311@gmail.com 100 với TOSC1 TOSC2 Để thêm chi tiết trình điều khiển dị xem thêm
“Asynchronous Status Register – ASSR trang 107, để biết thêm chi tiết nguồn phát xung nhịp bộđếm gộp trước xem phần “Timer/Counter Prescaler “ trang 110
Đơn vị của bộđếm
Phần Timer/Counter bit có thểđược lập trình thành phần bộđếm hướng Hình 35 sơ đồ khối counter môi trường xung quanh
Mơ tả tín hiệu ( tín hiệu bên )
Count tăng giảm TCNT0 Direction lựa chọn việc tăng giảm Clear xóa TCNT0 (đặt tất bit ) ClkT0 xung nhịp Timer/Counter
Top ý TCNT0 vươn tới giá trị cực đại Bottom ý TCNT0 vươn tới giá trị cực tiểu
Phụ thuộc vào chế độđiều khiển sử dụng , bộđếm bị xóa , làm tăng giảm xung nhịp thời gian (clkT0 ) clkT0 sinh từ1 nguồn phát xung nhịp bên bên , lựa chọn bit lựa chọn xung nhịp (CS02:0) Khi khơng có nguồn xung nhịp lựa chọn (CS02:0=0) timer dừng lại Tuy nhiên , giá trị TCNT0 truy nhập CPU , bất chấp việc xung clkT0được đưa hay không CPU viết ghi đè lên (có quyền ưu tiên ) xóa tất counter trình điều khiển đếm
(101)Duykhanh8x1311@gmail.com 101 Cờ báo Dòng tràn Timer/Counter cài đặt theo chếđộđiều khiển lựa chọn bit WGM01:0 TOV0 có thểđược sử dụng cho việc phát ngắt CPU
Các bộ phận so sánh đầu (Output Compare Unit )
Một so sánh bit liên tục so sánh TCNT0 với ghi so sánh đầu (OCR0) Bất nơi TCNT0 tính tốn OCR0 , so sánh báo hiệu match Một match cài đặt cờ báo đầu so sánh (OCF0) chu kì xung nhịp timer Nếu kích hoạt (OCIE0=1) , cờ báo đầu so sánh sinh ngắt đầu so sánh Cờ OCF0 bị xóa cách tự động mà ngắt thực thi Như lựa chọn , cờ OCF0 xóa phần mềm cách viết mức logic lên vị trí bit I/O Bộ phát dạng sóng sử dụng tín hiệu ghép để sinh đầu vào theo chế độđiều khiển cài đặt bit WGM01:0 bit chếđộđầu so sánh (COM01:0) Tín hiệu max bottom sử dụng máy phát dạng sóng cho q trình xử lí trường hợp đặc biệt giá trị cực biên vài chế độđiều khiển “modes of Operation “ trang 98 Hình 36 sơ đồ khối phận so sánh đầu
Thanh ghi OCR0 lưu vào nhớđệm kép sử dụng xung chế độđiều chế độ rộng xung (PWM) Về chếđộ điều khiển bình thường chếđộ so sánh timer xóa , bộđệm kép bị vơ hiệu hóa Việc cập nhật bộđệm kép đồng hóa ghi so sánh OCR0 top bottom chuỗi đếm Việc đồng hóa liệu ngăn cản xuất độ dài lẻ ( Odd-length ) xung PWM không đối xứng , cách tạo đầu khơng có nhiễu sọc ngang
(102)Duykhanh8x1311@gmail.com 102
Đầu so sánh cưỡng bức
trong chế độ khơn phải chếđộ phát dạng sóng PWM , cổng ghép so sánh bị cưỡng ép việc viết lên bit so sánh đầu cưỡng (Force Ouput Compare bit – FOC0) Việc cưỡng ép so sánh ghép không cài đặt cờ OCF0 tải lại/xóa Timer , chân OC0 cập nhật lại ghép so sánh thực xuất (các bit COM01:0 cài đặt xác định chân OC0 cài đặt , bị xóa dịch chuyển )
Sự khóa ghép so sánh bằng việc viết bit TCNT0 – Compare Match Blocking by TCNT0 Write
Tất trình viết ghi tới ghi TCNT0 khóa ghép so sánh mà xuất chu kì xung nhịp , chí Timer bị dừng lại Đặc điểm cho phép OCR0 khởi tạo đến giá trị giống TCTN0 mà không khởi động ngắt mà đồng hồ Timer/Counter kích hoạt Using the Output Compare Unit : Việc sử dụng bộ phận so sánh đầu
Từ việc viết TCTN0 chếđộđiều khiển khóa tất ghép so sánh cho chu kì xung nhịp timer , có nguy hàm chứa thay đổi TCNT0 sử dụng kênh so sánh đầu , điều phụ thuộc vào
Timer/Counter chạy hay không Nếu giá trịđược viết lên TCNT0 giá trị OCR0, ghép so sánh bị lỗi , kết phát dạng sóng không Một cách tương tự , không viết giá trị TCNT0 với giá trị BOTTOM mà counter đếm xuống ( đếm lùi )
Sự cài đặt OC0 nên thi hành trước việc cài đặt ghi định hướng liệu cho chân cổng lên cổng Cách dễ cua việc cài đặt giá trị OC0 sử dụng đầu so sánh cưỡng (FOC0) phân tích bit chế độ thường Thanh ghi OC0 giữ giá trị thay đổi chế độ phát dạng sóng (wareform generation modes )
Phải nhận thức bit COM01:0 khơng ghi vào bộđệm kép với giá trị so sánh Việc thay đổi bit COM01:0 tạo hiệu
Thành phần đầu ghép so sánh – Compare Match Output Unit
(103)Duykhanh8x1311@gmail.com 103 Chỉ có phần ghi điều khiển cổng I/O chung (DDR PORT ) mà bị hư hỏng bit COM01:0 Khi tham khảo trạng thái OC0 , tham khảo cho ghi OC0 bên chân OC0
Chức chân I/O chung ghi đè bit so sánh đầu (OC0) từ máy phát dạng sóng bit COM01:0 cài đặt Tuy nhiên , hướng chân OC0 (đầu vào đầu điều khiển ghi định hướng liệu DDR cho chân cổng Bit ghi định hướng liệu cho chân OC0
(DDR_OC0) phải cài đặt đầu trước giá trị OC0 nhìn thấy chân Chức ghi đè cổng phụ thuộc vào chếđộ phát dạng sóng
Thiết kế chân so sánh đầu logic cho phép việc khởi tạo trạng thái OC0 trước đầu kích hoạt Chú ý vài việc cài đặt bit COM01:0 dự trữ cho chếđộ biến cốđã biết trình điều khiển Xem “8bit Timer/Counter Register Description trang 104
Chếđộ đầu so sánh máy phát dạng sóng
Máy phát dạng sóng sử dụng bit COM01:0 khác chếđộ bình thường , CTC , PWM Với tất chếđộ , việc cài đặt COM01:0 nói cho máy phát dạng sóng khơng có hành động ghi OC0 tiến hành ghép so sánh Về phần ảnh hưởng đầu so sánh chếđộ PWM tham khảo bảng 53 trang 105 Cho chếđộ PWM nhanh , tham khảo bảng 54 trang 105 , PWM pha tham khảo bảng 55 trang 106
(104)Duykhanh8x1311@gmail.com 104 Các chế độđiều khiển
Các chếđộ trình điều khiển , ví dụ trạng thái Timer/Counter chân so sánh đầu xác định cách kết hợp chế độ phát dạng sóng (WGM01:0 ) chếđộđầu so sánh bit (COM01:0) Các bit chếđộ đầu so sánh khơng có ảnh hưởng đến việc đếm chuỗi bit chếđộ phát dạng sóng làm việc Các bit COM01:0 điều khiển đầu PWM sinh nên khuyêch đại không (inverted or non-inverted PWM) Về chếđộ PWM , bit COM01:0 điều khiển đầu nên cài đặt , bị xóa , bị dịch chuyển ghép so sánh ( xem bảng Compare Match Output Unit “ở trang 97 )
Để biết thêm chi tiết tham khảo “Timer/Counter Timing Diagrams “ trang 102 Chếđộ bình thường
Chếđộđơn giản trình điều khiển chếđộ bình thường (normal ) (WGM01:0 = ) Trong chế độ việc đếm định hướng ln hướng lên ( Incrementing) , khơng có xóa bộđếm thi hành Bộđếm đơn giản tràn qua vượt giá trị cực đại bit (TOP=0xFF) sau khởi động từ mức bottom (0x00) Trong trình điều khiển thông thường cờ báo tràn Timer/Counter (TOV0) cài đặt chu kì xung nhịp giống TCNT0 trở thành Cờ TOV0 trường hợp thực giống bit thứ , ngoại lệ cài đặt , khơng bị xóa Tuy nhiên , nối với các ngắt tràn Timer mà tự động xóa cờ TOV0 , độ xác timer có thểđược tăng lên phần mềm Khơng có trường hợp đặc biệt để xét đến chế độ bình thường , giá trị đếm viết vào thời gian
Bộ phận đầu vào so sánh sử dụng để phát ngắt vài thời gian đưa trước Việc sử dụng so sánh đầu để phát dạng sóng chế độ bình thường khơng khuyến cáo , từ điều chiếm nhiều thời gian CPU
Xóa timer chế độ ghép so sánh (Clear Timer on Compare Match Mode CTC ) Trong chế độ xóa Timer chếđộ so sánh CTC mode (WGM01:0=2), ghi OCR0 sử dụng đểđiều khiển độ xác bộđếm Trong chếđộ CTC bộđếm xóa giá tri bộđếm (TCNT0) tương ứng với OCR0 OCR0 xác định giá trịđỉnh bộđếm , thay đổi độ xác cảu Chê độ cho phép điều khiển lớn tần sốđầu so sánh Nó rút gọn q trình điều khiển việc đếm kiện bên
(105)Duykhanh8x1311@gmail.com 105 Một ngắt sinh lần mà giá trị bộđếm vươn tới giá trị TOP việc sử dụng cờ OCF0 Nếu ngắt kích hoạt , chương trình điều khiển ngắt có thểđược sử dụng để cập nhật giá trị TOP Tuy nhiên , việc thay đổi TOP đến giá trị đóng Bottom mà bộđếm chạy với giá trị thấp đếm gộp trước phải làm với cẩn thần từ chếđộ CTC có đặc điểm bộđệm kép Nếu giá trị viết lên OCR0 thấp giá trị thời TCNT0 , đếm bị lỗi ghép so sánh Bộđếm sau phải đếm từ giá trị cực đại (0xFF) bọc xung quanh điểm khởi đầu 0x00 trước ghép so sánh xuất
Về việc phát dạng sóng đầu CTC mode , đầu OC0 có thểđược cài đặt để di chuyển mức logic ghép so sánh việc cài đặt bit chếđộ đầu so sánh tới chếđộ Toggle (COM01:0=1 ) Giá trị OC0 khơng nhìn thấy chân cổng việc định hướng liệu cho chân cài đặt tới đầu Dạng sóng phát có tần số cực đại fOC0 = fclk_I/O/2 mà OCR0 cài đặt (0x00) Tần số dạng sóng xác định công thức :
Biến N trình bày theo tỉ lệ cho trước (1,8, 32,64,128,256, 1024) Cho chế độ thường trình điều khiển , cờ TOV0 cài đặt chu kì xung nhịp khác mà bộđếm đếm từ MAX đến 0x00
Chếđộ Fast PWM : xung PWM cốđịnh
Độ rộng xung điều chế cốđịnh chế độ Fast PWM (WGM01:0 = ) cung cấp lựa chọn phát dạng sóng PWM tần số cao Chế độ fast PWM khác lựa chọn PWM khác chếđộđiều khiển sườn đơn Bộđếm đếm từ mức
(106)Duykhanh8x1311@gmail.com 106 DAC Tần số cao cho phép thành phần vật lý cỡ nhỏ (cuộn dây , tụđiện ) giảm giá thành hệ thống
Trong chế độ Fast PWM , bộđếm làm tăng giá trị bộđếm tương ứng với giá trị MAX Bộđếm sau xóa chu kì xung nhịp timer bên Giản đồ thời gian cho chế độ Fast PWM đưa hình 39 Giá trị TCNT0 giản đồ thời gian biểu đồ minh họa cho trình điều khiển sườn đơn Giản đồ bao gồm đầu PWM đảo không đảo Đường nằm ngang nhởđánh dấu sườn TCNT0 đưa ghép so sánh OCR0 TCNT0
Cờ báo tràn Timer/Counter TOV0 cài đặt lần bộđếm tiến tới giá trị MAX ngắt kích hoạt , chương trình điều khiển ngắt sử dụng cho việc cập nhật giá trị so sánh
Trong chế độ Fast PWM , phận so sánh cho phép việc phát dạng sóng PWM chân OC0 Việc cài đặt bit COM01:0 lên gây xung PWM không đảo đầu PWM đảo phát việc cài đặt COM01:0 lên ( xem bảng 54 trang 105 ) Giá trị thực OC0 chỉđược nhìn thấy chân cổng định hướng liệu cho chân cổng cài đặt cổng Dạng sóng PWM phát việc cài đặt (xóa ) ghi OC0 ghép so sánh OCR0 TCNT0 , việc xóa (hoặc cài đặt ) ghi OC0 thời gian chu kì xung nhịp đếm xóa ( thay đổi từ MAX đến BOTTOM )
Tần số PWM cho đầu tính công thức sau đây: Biến N đưa theo tỉ lệ xích (1 , , 32 , 64 , 128, 256, 1024 )
(107)Duykhanh8x1311@gmail.com 107 cài đặt giá trị BOTTOM , đầu đỉnh nhọn hẹp cho chu kì xung nhịp MAX+1 Việc cài đặt OCR0 MAX hiệu đầu có giá trị cao thấp số ( phụ thuộc vào độ phân cực đầu cài đặt bit COM01:0 )
Một tần số (với 50% tải làm việc ) dạng sóng đầu chếđộ PWM có thểđạt việc cài đặtOC0 di chuyển mức logic ghép so sánh (COM01:0 =1) Dạng sóng phát có giá trị cực đại fOC0 = fclk_I/O/2 mà OCR0 cài đặt Đặc điểm tương tự di chuyển OC0 chếđộ CTC , ngoại trừđặc điểm bộđệm kép phận so sánh đầu kích hoạt chế độ fast PWM
Chếđộ PWM đúng pha
Chếđộ PWM pha (WGM1:0 =1) cung cấp lựa chọn phát dạng sóng PWM pha có độ xác cao Chế độđúng pha PWM trình điều khiển xung đơn Bộđếm đếm lặp lại từ BOTTOM đến MAX sau từ MAX đến BOTTOM Trong chếđộđầu so sánh không đảo , so sánh đầu (OC0) xóa ghép so sánh TCNT0 OCR0 trình đếm lên , cài đặt ghép so sánh đếm xuống Trong chếđộ so sánh đầu đảo , trình điều khiển đảo Q trình điều khiển sườn có tần số hoạt động lớn thấp trình điều khiển sườn đơn Tuy nhiên , so đặc tính đối xúng chế độ PWM sườn , chế độ ưa thích ứng dụng điều khiển động
(108)Duykhanh8x1311@gmail.com 108 Cờ báo tràn Timer/Counter đặt lần bộđếm tiến tới BOTTOM Cờ ngắt có thểđược sử dụng để sinh ngắt lần bộđếm tiến tới giá trị BOTTOM
Trong chế độ PWM pha , phận so sánh cho phép phát sinh dạng sóng PWM chân OC0 Việc cài đặt bit COM01:0 lên gây xung PWM không đảo Một đầu PWM đảo có thểđược sinh việc cài đăt
COM01:0 lên ( xem bảng 55 trang 106 ) Giá trị thực OC0 chỉđược nhìn thấy chân cổng định hướng liệu cho chân cổng cài đặt đầu Dạng sóng PWM sinh cách xóa (hoặc cài đặt ) ghi OC0 ghép so sánh OCR0 TCNT0 mà bộđếm tăng việc cài đặt ( xóa ) ghi OC0 ghép so sánh OCR0 TCNT0 mà bộđếm giảm Tần số PWM cho đầu việc sử dụng chế độ PWM pha tính tốn công thức :
Biến N đưa theo tỉ lệ xích (1 , , 32, 64 , 128 , 256, 1024 )
Giá trị cực biên ghi OCR0 đưa trường hợp đặc biệt mà sinh đầu dạng sóng PWM chếđộ PWM pha Nếu OCR0 cài đặt BOTTOM , đầu tiếp tục mức thấp cài đặt MAX đầu tiếp tục mức cao cho chếđộ PWM không đảo Về chếđộ PWM đảo đẩu có giá trị logic đối lập
Ở điểm bắt đầu chu kì hình 40 Ocn có chuyển đổi từ cao xuống thấp khơng có ghép so sánh Điểm đánh dấu thay đổi đảm bảo đối xứng xung quanh BOTTOM Có hai trường hợp đưa chuyển đổi mà không ghép so sánh :
(109)Duykhanh8x1311@gmail.com 109 ghép so sánh Để đảm bảo tính đối xứng xung quanh BOTTOM , giá trị Ocn tạiMAX phải tương ứng với kết việc đếm lên ghép so sánh
- Timer bắt đầu đếm từ giá trị cao giá trị thấp OCR0 , lí lỗi ghép so sánh OCn thay đổi mà xảy chiều lên
Giản đồ thời gian của Timer/Counter
Hình 41 hình 42 bao gồm liệu thời gian cho trình điều khiển Timer/Counter Timer/Counter thiết kếđồng xung nhịp timer (clkT0) xung nhịp kích hoạt tín hiệu Hình chuỗi đếm lên giá trị MAX Hình 43 44 liệu thời gian giống , với bộđếm gộp trước kích hoạt Các hình minh họa cờ ngắt cài đặt
Các hình bên Timer/Counter chế độđồng , xung nhịp timer (clkT0) xung kích hoạt tín hiệu Trong chếđộ dị , clkI/O nên thay xung nhịp tạo dao động Timer/Counter Các hình bao gồm thơng tin cờ báo ngắt cài đặt Hình 44 bao gồm liệu thời gian cho trình điều khiển Timer/Counter Hình chuỗi đếm đóng lên giá trị MAX tất chếđộ khác chếđộ PWM pha
(110)
Duykhanh8x1311@gmail.com 110 Hình 43 cách cài đặt OCF0 tất chếđộ trừ chếđộ CTC
(111)Duykhanh8x1311@gmail.com 111 Sự miêu tả ghi của Timer/Counter bit – 8bit Timer/Counter Register Description
Thanh ghi điều khiển Timer/Counter – TCCR0
Bit – FOC0 : Force Output Compare ( so sánh đầu cưỡng )
Bit FOC0 chỉđược hoạt động mà bit WGM xác định1 chếđộ PWM Tuy nhiên , đểđảm bảo tính tương thích với thiết bị tương lai , bit phải cài mà TCCR0 viết hoạt động chế độ PWM Khi việc viết mức logic lên bit FOC0 , ghép so sánh trung gian bị cưỡng phận phát dạng sóng Đầu OC0 bị thay đổi theo việc cài đặt bit
COM01:0 Chú ý bit FOC0 cài đựt strobe Do giá trịđưa bit COM01:0 mà xác định rõ hiệu lực việc so sánh cưỡng
1 phân tích FOC0 không sinh ngắt , xóa timer chế độ CTC sử dụng OCR0 TOP
Bit FOC0 ln đọc
Bit 6, – WGM01:0 : chếđộ phát sinh dạng sóng
(112)Duykhanh8x1311@gmail.com 112 Bit ,4 - COM01:0 : chếđộđầu ghép so sánh
Các bit điều khiển việc xử lí chân so sánh đầu (OC0) Nếu hai bit COM01:0 cài đặt , đầu OC0 ghi đè lên cổng chức thông thường chân I/O kết nối với Tuy nhiên , ý bit ghi định hướng liệu (DDR ) tương ứng với chân OC0 phải cài đặt kích hoạt điều khiển đầu
Khi mà OC0 kết nối tới chân , chức bit COM01:0 phụ thuộc vào việc cài đặt bit WGM01:0 Bảng 53 bit chức COM01:0 mà bit WGM01:0 cài đặt lên chếđộ normal chế độ CTC mode ( PWM)
Bảng 54 bit chức COM01:0 mà bit WGM01:0 cài đặt chế độ fast PWM
(113)Duykhanh8x1311@gmail.com 113 Bit 2:0 : lựa chọn chếđộ khóa
Các bit lựa chọn chế độ khóa nguồn khóa sử dụng Timer/Counter xem bảng 56
Thanh ghi Timer/Counter - TCNT0
Thanh ghi Timer/Counter đưa truy nhập trực tiếp , hai trình điều khiển đọc ghi , lên bộđếm 8bit Timer/Counter Việc viết lên khóa ghi (gỡ bỏ ) ghép so sánh xung nhịp timer Sự thay đổi bộđếm (TCNT0) bộđếm chạy , đưa nguy việc lỗi ghép so sánh TCNT0 ghi OCR0
Thanh ghi so sánh đầu - OCR0
(114)Duykhanh8x1311@gmail.com 114 Sự hoạt động không đồng bộ của Timer/Counter
Thanh ghi trạng thái không đồng bộ - ASSR
Bit – AS0 : Timer/Counter0 dị
Khi AS0 viết , Timer/Counter bị khóa khỏi xung nhịp I/O , clkI/O Khi AS0 viết , Timer/Counter bị khóa khỏi tạo dao động thạch anh kết nối với chân tạo dao động timer (TOSC1 ) Khi mà giá trị AS0 bị thay đổi , thành phần TCNT0 , OCR0 TCCR0 bị hư hỏng
Bit – TCN0UB : Timer/Counter cập nhật trạng thái bận (Timer/Counter0 Update Busy )
Khi Timer/Counter0 hoạt động cách dị TCNT0 ghi , bít cài đặt Khi TCNT0 cập nhật từ ghi lưu trữ tạm thời , bit xóa phần cứng mức logic bit hiển thị mà TCNT0 sẵn sàng cập nhật với giá trị
Bit – OCR0UB : ghi cập nhật trạng thái bận so sánh đầu
Khi Timer/Counter hoạt động cách dị bit OCR0 ghi , bit cài đặt Khi OCR0 cập nhật từ ghi lưu trữ tạm thời , bit xóa phần cứng mức logic bit hiển thị mà OCR0 sẵn sàng cập nhật với giá trị
Bit – TCR0UB Thanh ghi0 điều khiển Timer/Counter cập nhật trạng thái bận Khi Timer/Counter hoạt động cách dị bit TCCR0 ghi , bit cài đặt Khi TCCR0 cập nhật từ ghi lưu trữ tạm thời , bit xóa phần cứng mức logic bit hiển thị màTCCR0 sẵn sàng cập nhật với giá trị
Nếu trình ghi tiến hành lên ghi Timer/Counter0 cờ cập nhật chếđộ bận cài đặt , giá trị cập nhật có hư hỏng gây việc ngắt vơ tình xuất
Bộ phận cho việc đọc TCNT0 , OCR0 TCCR0 khác Khi việc đọc TCNT0, giá trị timer thực đọc Khi đọc OCR0 TCCR0 , giá trị ghi lưu trữ tạm thời đọc
Quá trình điều khiển dị bộ của Timer/Counter0
Khi Timer/Counter hoạt động dị , vài đến phải xem xét - Cảnh báo : chuyển mạch bộđịnh thời đồng không đồng
(115)Duykhanh8x1311@gmail.com 115 lựa chọn nguồn phát xung nhịp việc cài đặt AS0 nhưđược phê chuẩn viết giá trị lên TCNT0 , OCR0 , TCCR0
4 để chuyển mạch sang trình điều khiển dị : đợi TCN0UB , OCR0UB , TCR0UB
5 xóa cờ ngắt Timer/Counter0 Kích hoạt ngắt thấy cần thiết
- Bộ tạo dao động tối ưu cho việc sử dụng với đồng hồ thạch anh 32.768 kHz Việc áp dụng xung nhịp ngồi lên chân TOSC1 có kết sai trình điều khiển Timer/Counter Tần số Xung nhịp CPU phải lớn lần tần số tạo dao động
- Khi viết tới số ghi TCNT0 , OCR0 TCCR0 , giá trịđược chuyển vào ghi tạm thời , chốt sau sườn dương TOSC1 Người sử dụng không nên viết giá trị trước dung lượng ghi tạm thời chuyển đến đích đến Mỗi ghi ghi nói đến có ghi riêng biệt chúng , điều có nghĩa ví dụ : việc viết lên TCNT0 không gây nhiễu trình ghi OCR0 tiến hành Để dị chuyển đến ghi đích xảy hay chưa , ghi trạng thái dị - ASSR phải cài đặt - Khi truy nhập vào chế độ Power-save chế độ Extended Standby sau
đang viết lên TCNT0 , OCR0 TCCR0 ,người sử dụng phải đợi ghi viết cập nhật Timer/Counter0 sử dụng đểđánh thức thiết bị Nói cách khác MCU truy nhập vào chế độ ngủ trước thay đổi có hiệu lực Điều đặc biệt quan trọng ngắt so sánh đầu sử dụng đểđánh thức thiết bị , từ chức so sánh đầu vơ hiệu hóa suốt q trình viết lên OCR0 TCNT0 Nếu chu kì viết khơng hồn thành , MCU truy nhập vào chếđộ ngủ trước bit OCR0UB trả lại , thiết bị không nhận ngắt ghép so sánh , MCU không đánh thức
- Nếu Timer/Counter0 sử dụng đểđánh thức thiết bị từ chế độ Power-save chếđộ Extended Standby , phòng ngừa phải thực người sử dụng muốn truy nhập lại vào chế độ : Mức logic ngắt cần thiết1 chu kì xung TOSC1 để Reset Nếu thời gian trình đánh thức truy nhập lại chếđộ ngủ nhỏ chu kì TOSC1 , ngắt không xuất thiết bị bị lỗi khởi động Nếu người sử dụng nghi ngờ khoảng thời gian trước đăng nhập lại vào chếđộ Power-save chế độ Extended Standby chế độổn định hay khơng, thuật tốn sử dụng đểđảm bảo chu kì TOSC1 có kết thúc
1 Viết giá trị lên TCCR0 , TCNT0 OCR0
2 đợi cờ cập nhật trạng thái bận tương ứng ghi ASSR
(116)Duykhanh8x1311@gmail.com 116 - Khi mà trình điều khiển dị bộđược lựa chọn , tạo dao động 32.768
kHz cho Timer/Counter0 chạy , ngoại trừ chế độ Power-downhoặc chếđộ Standby Sau Reset bật nguồn đánh thức từ chếđộ Power-down chế độ Standby , người sử dụng nên nhận biết cách xác tạo dao động lấy cần 1s đểổn định Người sử dụng khuyên đợi khoảng thời gian nhỏ 1s trước sử dụng Timer/Counter sau bật nguồn đánh thức từ chếđộ ngắt nguồn chếđộ chờ Dung lượng tất ghi phải xét đến tổn thất trước sau đánh thức từ chế độ ngắt nguồn chếđộ chờ xứng với tín hiệu xung nhịp không ổn định start –up Thực chất thứ tạo dao động sử dụng tín hiệu xung nhịp đồng hồđược áp dụng cho chân TOSC1
- Sự miêu tả việc đánh thức từ chế độ Power-save chế độ Extended Standby khóa dị : điều kiện ngắt phù hợp , tiến trình đánh thức khởi động chu kì xung nhịp timer bên , mà Timer ln hồn thiện 1s trước xử lí có thểđọc giá trị bộđếm Sau đánh thức , MCU bị dừng chu kì xung nhịp , thực thi chương trình phục vụ ngắt , nối tiếp thực thi từ lệnh lệnh SLEEP
- Quá trình đọc ghi TCNT0 ngắn sau đánh thức từ chếđộ tiết kiệm nguồn có thểđưa kết khơng xác Từ TCNT0 bị khóa khóa khơng đồng TOSC , việc đọc TCNT0 phải thực thông qua ghi đồng hóa tới vùng xung nhịp I/O bên
Quá trình đồng phải xảy cho sườn lên TOSC1 Khi mà đánh thức khỏi chếđộ Power-save , xung nhịp I/O hoạt động trở lại , TCNT0 sẽđược đọc giá trị trước( trước truy nhập vào chếđộ ngủ ) có sườn lên TOSC1 Pha xung nhịp TOSC sau trình đánh thức từ chế độ tiết kiệm nguồn khơng thể tiên đốn trước cách , phụ thuộc vào thời gian đánh thức Quy trình đề nghị cho việc đọc TCNT0 :
1 Viết giá trị tới ghi OCR0 TCCR0 đợi cho cờ cập nhật trạng thái bận tương ứng xóa
3 Đọc TCNT0
- suốt qúa trình điều khiển dị bộ, đồng hoá cờ ngắt khoảng thời gian dị tạo ba chu kì xung nhịp vi sử lý nhiều chu kì Bộđịnh thời nâng cao phận trước vi sử lý có thểđọc giá trị thời gian việc cài đặt cờ ngắt Các chân so sánh cổng thay đổi bộđịnh thời không đồng hóa tới xung nhịp vi sử lý
(117)-Duykhanh8x1311@gmail.com 117 ghi che ngắt của Timer/Counter – TIMSK
Bit – OCIE0 : kích hoạt ngắt ghép so sánh đầu Timer/Counter0
Khi mà bit OCIE0 viết , bit I ghi trạng thái đặt , ngắt ghép so sánh Timer/Counter kích hoạt Ngắt tương ứng thực thi ghép so sánh Timer/Couter0 xuất ví dụ bit OCF0 cài đặt ghi cờ báo ngắt Timer/Counter – TIFR
Bit – TOIE0 : kích hoạt ngắt tràn Timer/Couter0
Khi mà bit TOIE0 viết , bit I ghi trạng thái cài đặt , ngắt dòng tràn Timer/Couter0 kích hoạt ví dụ bit TOV0 cài đặt ghi cờ báo ngắt – TIFR
Thanh ghi cờ báo ngắt Timer/Counter –TIFR
Bit – OCF0 : cờ báo so sánh đầu
Bit OCF0 cài đặt ghép so sánh xuất Timer/Counter liệu OCR0 – Output Compare Register OCF0 bị xóa phần cứng mà thực thi vec to điều khiển ngắt tương ứng Như lựa chọn , OCF0 bị xóa việc viết mức logic lên cờ Khi mà bit I SREG, OCIE0 (kích hoạt ngắt ghép so sánh Timer/Counter ) , OCF0 cài đặt , ngắt ghép so sánh Timer/Counter thực thi
Bit – TOV0 : cờ báo tràn Timer/Counter0
(118)Duykhanh8x1311@gmail.com 118 Bộđếm gộp trước Timer/Counter – Timer/Counter Prescaler
Nguồn phát xung nhịp cho Timer/Counter0 đặt tên clkT0 clkT0 mặc định kết nối tới xung nhịp hệ thống clkI/O Bằng việc cài đặt bit AS0 ASSR , Timer/Counter0 khóa cách dị từ chân TOSC1 Điều kích hoạt sử dụng Timer/Counter0 bộđếm thời gian thực (Real Time
Counter – RTC ) Khi bit AS0 cài đặt , chân TOSC1 TOSC2 ngắt kết nối khỏi cổng C Một tạo dao động thạch anh sau kết nối chân TOSC1 TOSC2 để phục vụ nguồn phát xung nhịp độc lập cho Timer/Counter0 Bộ tạo dao động tối ưu hóa để sử dụng với tạo dao động thạch anh 32.768 kHz Việc áp dụng nguồn phát xung nhịp lên TOSC1 khơng khuyến khích
Về Timer/Counter0 , lựa chọn tỉ lệ : clkTOS/8 , clkTOS/32 , clkTOS/64 , clkTOS/128 , clkTOS/256 , clkTOS/1024 Thêm , clkTOS (stop) lựa chọn Việc cài đặt bit PSR0 SFIOR khởi động lại bộđếm gộp trước Điều cho phép người sử dụng đểđiều khiển với bộđếm gộp trước tiên đốn trước
Thanh ghi I/O chức năng đặc biệt - Special Function I/O Register – SFIOR
(119)Duykhanh8x1311@gmail.com 119 Việc viết bit TSM lên kích hoạt chếđộ đồng hóa Timer/Counter Trong chế độ , giá trị mà viết lên PSR0 PSR321 giữ , việc giữ đếm gộp trước tương ứng reset tín hiệu xác nhận Điều đảm bảo Timer/Counter tương ứng dừng cấu hình tới giá trị giống mà khơng có nguy hỏng số chúng suốt trình cấu hình Khi bit TSM viết , bit PSR0 PSR321 bị xóa phần cứng , Timer/Counter bắt đầu trình đếm cách liên tục
Bit – PSR0 : bộđếm gộp trước reset Timer/Counter0
Khi bit , bộđếm gộp trước Timer/Counter sẽđược reset Bit thường xóa phần cứng Nếu bit viết
(120)Duykhanh8x1311@gmail.com 120
XII Timer/Counter 16 bit (Timer/Counter Timer/Counter 3)
Bộ phận Timer/Counter 16 bit cho phép định thời gian trình thực thi chương trình cách xác (quản lí kiện ) , phát sinh sóng , đo thời gian tín hiệu Các đặc điểm
- Thiết kế 16 bit thật (ví dụ ,cho phép 16bit PWM ) - phận so sánh đầu độc lập
- Các ghi so sánh đầu ghi vào bộđệm kép - Bộ phận bắt đầu vào
- Khóa cắt nhiễu đầu vào
- Xóa timer ghép so sánh (tựđộng tải lại )
- Khơng có nhiễu sọc ngang , điều chế độ rộng xung pha ( PWM ) - Chu kì PWM thay đổi
- Máy phát tần số
- Bộđếm kiện bên
- 10 nguồn ngắt độc lập (TOV1 , OCF1A , OCF1B , OCF1C , ICF1 , TOV3 , OCF3A , OCF3B , OCF3C , ICF3 )
Sự hạn chế chếđộ tương thích với Atmega 103
Chú ý chế độ tương thích với Atmega 103 , có Timer/Counter 16 bit khả dụng(Timer/Counter 1) Cũng ý thêm chế độ tương thích với Atmega 103 , Timer/Counter có hai ghi so sánh( compare A compare B ) Tổng quan
Tất ghi bit tham khảo phần viết theo dạng chung trường hợp thấp “n” thay cho thứ tự Timer/Counter , trường hợp thấp “x” thay cho kênh phận so sánh đầu Tuy nhiên , sử dụng ghi bit xác định chương trình , mẫu xác phải sử dụng ví dụ TCNT1 cho việc truy nhập vàogiá trị bộđếm Timer/Counter
(121)Duykhanh8x1311@gmail.com 121 Các ghi
Timer/Counter (TCNTn), ghi so sánh đầu (OCRnA/B/C), ghi bắt tín hiệu đầu vào (ICRn) tất ghi 16 bit Các quy trình đặc biệt phải tuân theo truy nhập vào ghi 16bit Các quy trình miêu tả phần “Accessing 16bit Register” trang 115 Các ghi điều khiển
Timer/Counter (TCCRnA/B/C)là ghi bit khơng có hạn chếđối với quyền truy nhập CPU Các tín hiệu yêu cầu ngắt (viết tắt Int.Req.) nhìn thấy ghi cờ báo ngắt Timer (TIFR)và ghi cờ báo ngắt Timer mở rộng (ETIFR) Tất ngắt che riêng biệt với ghi che ngắt Timer
(TIMSK) ghi che ngắt Timer mở rộng (ETIMSK) (E)TIFR (E)TIMSK không hình vẽ từ ghi chia sẻ phận Timer khác
(122)Duykhanh8x1311@gmail.com 122 giá trị Timer/Counter khơng hoạt động khơng có nguồn phát xung nhịp lựa chọn Đầu từ logic lựa chọn xung nhịp tham khảo xung nhịp Timer (clkTn)
Các ghi so sánh đầu ghi vào bộđệm kép (OCRnA/B/C) so sánh với giá trị Timer/Counter tất thời điểm Kết việc so sánh có thểđược sử dụng máy phát dạng sóng để phát PWM đầu tần số thay đổi chân so sánh đầu (OcnA/B/C)
Xem thêm phần “Output Compare Units “ trang 121 kiện ghép so sánh đặt cờ ghép so sánh (OCFnA/B/C ) mà sử dụng để sinh yêu cầu ngắt so sánh đầu
Thanh ghi bắt đầu vào bắt giá trị Timer/Counter vị trí đưa bên ngồi (sườn khởi động ) kiện chân bắt tín hiệu cổng (ICPn) chân so sánh tương tự (xem “Analog Comparator”trên trang 227 Bộ phận bắt tín hiệu đầu vào bao gồm lọc số ( cắt nhiễu ) cho việc giảm thay đổi việc bắt đỉnh nhiễu
Giá trị TOP , giá trị cực đại Timer/Counter , vài chếđộ trình điều khiển xác định ghi OCRnA ,hoặc ICRn , việc cài đặt giá trịổn định Khi việc sử dụng OCRnA giá trị TOP chế độ PWM , ghi OCRnA sử dụng cho việc phát sinh đầu PWM Tuy nhiên , giá trị TOP trường hợp ghi vào bộđệm kép cho phép giá trị TOP thay đổi thời gian chạy Nếu giá trị TOP ổn định cần thiết , ghi ICRn có thểđược sử dụng luân phiên , tự thanhnh OCRnA sử dụng đầu PWM
Các định nghĩa
Các định nghĩa sử dụng cách rộng rãi xuyên suốt tài liệu
Sự tương thích
(123)Duykhanh8x1311@gmail.com 123 - Tất Timer/Counter 16bit liên quan đến vị trí địa ghi
I/O , bao gồm ghi ngắt timer
- Các vị trí bit bên tất ghi Timer/Counter 16bit , bao gồm ghi ngắt Timer
- Các véc tơ ngắt
Các bit điều khiển thay đổi tên , có chức vị trí ghi
- PWMn0 chuyển thành WGMn0 - PWMn1 chuyển thành WGMn1 - CTCn chuyển thành WGMn2
Các ghi thêm vào Timer/Counter 16bit : - Thanh ghi điều khiển Timer/Counter C (TCCRnC)
- Thanh ghi so sánh đầu C , OCRnCH OCRnCL , nối với OCRnC Các bít thêm vào ghi điều khiển Timer/Counter 16bit - COM1C1:0 thêm vào TCCR1A
- FOCnA , FOCnB FOCnC thêm vào ghi TCCRnC - WGMn3 thêm vào TCCRnB
Cờ ngắt bit che cho phận so sánh đầu C thêm vào
Timer/Counter 16bit có hồn thiện mà có hiệu lực tương thích vài trường hợp đặc biệt
Các ghi 16 bit truy nhập – Accessing 16bit Registers
TCNTn , OCRnA/B/C , ICRn ghi 16bit mà truy nhập CPU AVR thông qua bus liệu 8bit Thanh ghi 16bit phải đánh địa byte sử dụng trình đọc ghi Mỗi Timer 16bit có ghi đơn 8bit cho việc lưu trữ tạm thời byte cao việc truy nhập 16bit Thanh ghi tạm thời giống chia sẻ tất ghi 16bit timer 16bit Sự truy nhập byte thấp khởi động trình đọc ghi 16bit Khi byte thấp ghi 16bit viết CPU , byte cao lưu trữ ghi tạm thời , byte thấp viết hai chép vào ghi 16 bit chu kì xung nhịp giống Khi byte thấp ghi 16bit đọc CPU , byte cao ghi 16bit chép vào ghi tạm thời chu kì xung nhịp giống lfa byte thấp đọc
Không phải tất truy nhập 16bit sử dụng ghi tạm thời cho byte cao Việc đọc ghi OCRnA/B/C khơng bao hàm việc sử dụng ghi tạm thời (Temporary Register)
Để làm việc viết 16bit , byte cao phải viết trước byte thấp Về trình đọc 16bit , byte thấp phải đọc trước byte cao
(124)Duykhanh8x1311@gmail.com 124 OCRnA/B/C ghi ICRn Chú ý sử dụng “C” , trình biên dịch điều khiển truy nhập 16bit
Nó quan trọng để nhận biết việc truy nhập ghi 16bit trình hoạt động nguyên tử Nếu ngắt xuất lệnh truy nhập ghi 16bit , mã ngắt cập nhật ghi tạm thời việc truy nhập ghi Timer giống ghi timer khác , sau kết việc truy nhập bên ngắt bị hư hỏng Vì , hai đoạn mã cập nhật ngắt vào ghi tạm thời, đoạn mã phải vơ hiệu hóa ngắt suốt truy nhập 16bit
(125)Duykhanh8x1311@gmail.com 125 Ví dụđoạn mã Assembly trả lại giá trị TCNTn cặp ghi r17:r16
(126)Duykhanh8x1311@gmail.com 126 Khả năng dùng lại của ghi byte cao tạm thời
Nếu việc viết vào nhiều ghi 16bit nơi mà byte cao giống cho tất ghi viết , sau byte cao cần viết lần Tuy nhiên , ý nguyên tắc giống trình điều khiển nguyên tửđược miêu tả trước áp dụng trường hợp
Các nguồn phát xung nhịp Timer/Counter
Timer/Counter bị khóa nguồn phát xung nhịp bên bên Nguồn phát xung nhịp lựa chọn mức logic lựa chọn xung nhịp mà điều khiển bit lựa chọn xung nhịp(CSn2:0 ) đặt ghi điều khiển Timer/CounterB (TCCRnB) Để biết thêm chi tiết nguồn phát xung nhịp bộđếm gộp trước xem thêm “ bộđếm gộp trước Timer/Counter3 ,Timer/Counter2, Timer/Counter1” trang 144
Thành phần bộđếm – Counter Unit
Các phần Timer/Counter16bit lập trình thành phần bộđếm 16 bit hướng Hình 47 sơđồ khối bộđếm thành phần xung quanh
(127)Duykhanh8x1311@gmail.com 127 Khi mà CPU thực truy nhập đến địa I/O TCNTnH , CPU truy nhập byte cao ghi tạm thời (TEMP) Thanh ghi tạm thời cập nhật với giá trị TCNTnH mà TCNTnL đọc , TNCTnH cập nhật với giá trị ghi tạm thời mà TCNTnL ghi Điều cho phép CPU đểđọc ghi giá trị trọn vẹn bộđếm 16 bit vịng chu kì xung nhịp thơng qua bus liệu bit Nó thực quan trọng để nhận biết có trường hợp đặc biệt việc viết lên ghi TCNTn mà bộđếm đếm mà sẽđưa kết khơng thể tiên đốn trước Những trường hợp đặc biệt miêu tả phần quan trọng phía sau
Phụ thuộc vào kiểu điều khiển sử dụng , bộđếm bị xóa , làm tăng , giảm xung nhịp Timer (clkTn ) clkTn sinh từ nguồn phát xung nhịp bên , lựa chọn bit lựa chọn xung nhịp (CSn2:0) Khi khơng có nguồn phát xung nhịp lựa chọn (CSn2:0 = 0) timer dừng lại Tuy nhiên, giá trị TCNTn truy nhập CPU, sựđộc lập clkTn đưa khơng CPU ghi đè (có quyền ưu tiên ) lên tất bộđếm xóa q trình đếm
Các chuỗi đếm xác định việc cài đặt bit chế độ phát sinh dạng sóng (WGMn3:0) đặt ghi điều khiển Timer/Counter A B (TCCRnA TCCRnB) Có kết nối đóng cách bộđếm xử lí (đếm ) cách mà dạng sóng phát đầu so sánh đầu Ocnx để biết thêm chi tiết chuỗi đếm hồn thiện máy phát dạng sóng , xem thêm bảng “các chế độđiều khiển “ trang 124
Cờ báo dịng tràn Timer/Counter (TOVn) cài đặt theo chế độđiều khiển lựa chọn bit WGM3:0 TOVn có thểđược sử dụng để phát sinh ngắt CPU
Bộ phận bắt tín hiệu đầu – Input Capture Unit
Timer/Counter khơng xác phận bắt tín hiệu đầu vào mà bắt kiện bên ngồi đưa chúng vào khn thời gian hiển thị thời gian cố Tín hiệu bên ngồi hiển thị kiện , nhiều kiện , áp dụng thông qua chân ICPn cách luân phiên , Timer/Counter , thông qua phận so sánh tương tự Khn thời gian sau sử dụng để tính tốn tần số , chu kì vịng tải duty-cycle , tính khác tín hiệu áp dụng Như lựa chọn , khn thời gian sử dụng cho việc tạo biểu đồ kiện
(128)Duykhanh8x1311@gmail.com 128 Khi thay đổi mức logic (1 biến cố ) xuất chân bắt tín hiệu đầu (ICPn), lựa chọn đầu so sánh tương tự (ACO) , thay đổi chứng thực tới việc cài đặt dò sườn xung , capture khởi động Khi bắt tín hiệu khởi động , giá trị 16 bit bộđếm (TCNTn) viết tới ghi bắt tín hiệu đầu vào (ICRn) Các cờ bắt tín hiệu đầu vào (ICFn) cài đặt xung nhịp hệ thống giống giá trị TCNTn chép vào ghi ICRn Nếu kích hoạt(TICIEn = ) cờ báo bắt tín hiệu đầu vào sinh ngắt bắt tín hiệu đầu vào (Input Capture interrupt ) Cờ ICFn xóa cách tựđộng mà ngắt thực thi Như lựa chọn cờ ICFn bị xóa phần mềm việc viết mức logic lên vị trí bit I/O
Việc đọc giá trị 16 bit ghi bắt tín hiệu đầu vào (ICRn) thực trước hết việc đọc byte thấp (ICRnL) sau byte cao (ICRnH ) Khi byte thấp đọc , byte cao chép vào ghi liệu tạm thời byte cao (TEMP) Khi mà CPU đọc vùng I/O ICRnH truy nhập ghi TEMP
Thanh ghi ICRn chỉđược viết sử dụng chếđộ phát dạng sóng mà dùng ghi ICRn cho việc xác định giá trị TOP bộđếm Trong trường hợp này, bit chếđộ phát dạng sóng (Wareform Generation mode ) (WGMn3:0) phải cài đặt trước giá trị TOP có thểđược viết tới ghi ICRn Khi việc viết ghi ICRn byte cao phải viết lên vùng I/O ICRnH trước byte thấp viết tới ICRnL
(129)Duykhanh8x1311@gmail.com 129 Nguồn chân bắt tín hiệu đầu vào
Nguồn khởi động cho phận bắt tín hiệu đầu vào chân bắt tín hiệu đầu vào (ICPn ) Timer/Counter1 sử dụng luân phiên đầu so sánh tương tự nguồn khởi động cho phận bắt tín hiêu đầu vào Bộ so sánh tương tự lựa chọn nguồn khởi động cách cài đặt bit bắt tín hiệu so sánh tương tự (ACIC) ghi trạng thái điều khiển so sánh tương tự (ACSR) Để nhận biết nguồn khởi động thay đổi khởi động1 capture Cờ báo bắt tín hiệu đầu phải xóa sau thay đổi
Cả hai chân bắt tín hiệu đầu vào (ICPn) đầu vào đầu so sánh tương tự (ACO) lấy mẫu sử dụng công nghệ giống chân Tn (hình 59 trang 144) Bộ dị sườn giống Tuy nhiên , mà khóa cắt nhiễu kích hoạt , thêm vào mức logic chèn vào trước dò sườn xung (edge detector ) , mà tăng độ trễ chu kì xung nhịp hệ thống Chú ý đầu vào khóa cắt nhiễu dị sườn ln kích hoạt Timer/Counter cài đặt chếđộ phát dạng sóng mà sử dụng ICRn để xác định giá trị TOP
Một bắt tín hiệu đầu có thểđược khởi động phần mềm việc điều khiển cổng chân ICPn
Khóa cắt nhiễu – Noise Canceler
Một khóa cắt nhiễu nâng cao việc giảm nhiễu việc sử dụng sơđồ lọc sốđơn giản Đầu vào khóa cắt nhiễu điều chỉnh qua trình lấy mẫu , tất lần phải việc thay đổi đầu mà sử dụng dò sườn xung
Bộ khóa cắt nhiễu kích hoạt việc cài đặt bit khóa cắt nhiễu bắt tín hiệu đầu vào (ICNCn) ghi điều khiển Timer/Counter B (TCCRnB ) Khi kích hoạt khóa cắt nhiễu đưa vào chu kì xung nhịp hệ thống thêm vào độ trễ từ thay đổi áp dụng lên đầu vào , để cập nhật ghi ICRn Khóa cắt nhiễu sử dụng xung nhịp hệ thống khơng bịảnh hưởng đến bộđếm gộp trước Việc sử dụng bộ phận bắt tín hiệu đầu vào
Sự thử thách việc sử dụng phận bắt tín hiệu đầu vào để gán đủ dung lượng nhớ cho việc điều khiển biến cốđến Khoảng thời gian biến cố có tính định Nếu vi xử lí khơng phải đọc giá trị bắt ghi ICRn trước biến cố xuất , ICRn sẽđược ghi đè với giá trị Trong trường hợp kết việc truy bắt bị sai
(130)Duykhanh8x1311@gmail.com 130 cực đại phụ thuộc vào số lớn chu kì xung nhịp lấy đểđiều khiển yêu cầu ngắt khác
Việc sử dụng phận bắt tín hiệu đầu chếđộđiều khiển mà giá trị TOP thay đổi cách chủđộng suốt q trình hoạt động , khơng khuyên nghị
Việc đo chu kì tải của1 tín hiệu bên ngồi mà cần thiết để khởi động sườn thay đổi sau lần truy bắt Việc thay đổi lấy mẫu sườn (Edge
sensing) phải thực sớm sau ghi ICRn vừa đọc Sau thay đổi sườn xung , cờ báo bắt tín hiệu đầu vào (ICFn) phải xóa phần mềm (viết mức logic lên vùng địa bit I/O) Về việc chỉđo tần số , q trình xóa cờ ICFn khơng cần thiết (nếu điều khiển ngắt sử dụng ) Các bộ phận so sánh đầu – Output Compare Units
Bộ so sánh 16 bit tiếp tục so sánh TCNTn với ghi so sánh đầu (OCRnx ) Nếu TCNT OCRnx , tín hiệu so sánh có tương ứng Một match sẽđược cài đặt cờ so sánh đầu (OCFnx) chu kì xung nhịp Nếu kích hoạt (OCIEnx = ) cờ báo so sánh đầu sinh ngắt so sánh đầu Cờ OCFnx tựđộng xóa ngắt thực thi Như lựa chọn , cờ OCFnx bị xóa phần mềm việc viết mức logic lên vùng địa bit I/O Máy phát dạng sóng sử dụng tín hiệu ghép để phát tín hiệu đầu theo chế độ điều khiển cài đặt bằngcác bit chếđộ phát dạng sóng (vWGMn3:0) bit chế độ đầu so sánh (COMnx1:0) Tín hiệu TOP BOTTOM sử dụng máy phát dạng sóng đểđiều khiển trường hợp đặc biệt giá trị cực biên vài chếđộ điều khiển ( Xem bảng “chếđộđiều khiển “ trang 124 )
Một tính đặc biệt phận đầu so sánh cho phép xác định giá trị TOP Timer/Counter (ví dụđộ xác bộđếm ) Thêm vào độ xác bộđếm , giá trị TOP xác định chu kì thời gian cho dạng sóng phát máy phát dạng sóng
(131)Duykhanh8x1311@gmail.com 131 Thanh ghi OCRnx ghi vào bộđệm kép sử dụng 12 chế độđiều chếđộ rộng xung (PWM) Về chếđộ điều khiển bình thường chếđộ so sánh xóa timer- Clear Timer on Compare mode (CTC ) , ghi vào bộđệm kép bị vơ hiệu hóa Sự ghi vào bộđệm kép đồng hóa việc cập nhật ghi so sánh OCRnx đến giá trị chuỗi đếm TOP BOTTOM Sựđồng hóa ngăn cản xuất odd-length , xung PWM không đối xứng , tạo đầu khơng có nhiễu sọc ngang
(132)Duykhanh8x1311@gmail.com 132 Để thêm thông tin cách truy nhập vào ghi 16bit tham khảo thêm “Accessing 16bit Registers “ trang 115
So sánh đầu cưỡng bức
Trong chếđộ chế độ phát dạng sóng PWM , đầu ghép
(match output) so sánh bị cưỡng việc viết mức logic lên bit so sánh đầu cưỡng (FOCnx ) Việc ghép so sánh cưỡng không cài đặt cờ OCFnx reload/clear Timer , chân Ocnx sẽđược cập nhật ghép so sánh xuất hiện( bit COMnx1:0 cài đặt xác định chân Ocnx cài đặt , bị xóa di chuyển )
Q trình khóa ghép so sánh việc viết TCNTn
Tất trình viết CPU lên ghi TCNTn khóa ghép so sánh mà xuất chu kì xung nhịp , Timer dừng lại Đặc điểm cho phép OCRnx khởi tạo lại đến giá trị giống TCNTn mà khơng khởi động ngắt mà khóa Timer/Counter kích hoạt
Việc sử dụng bộ phận so sánh đầu
Từ việc viết TCNTn chếđộđiều khiển khóa tất ghép so sánh chu kì xung nhịp timer , có nguy kéo theo thay đổi TCNTn sử dụng kênh so sánh đầu , phụ thuộc việc lựa chọn Timer/Counter chạy hay không Nếu giá trịđược viết lên TCNTn giá trị OCRnx , ghép so sánh bị không , kết việc phát dạng sóng khơng Không viết TCNTn giá trị TOP chếđộ PWM với giá trị TOP thay đổi Ghép so sánh cho TOP bỏ qua bộđếm tiếp tục lên 0xFFFF Một cách tương tự , không viết giá trị TCNTn giá trị BOTTOM mà bộđếm đếm xuống
Sự cài đặt Ocnx nên tiến hành trước việc cài đặt ghi định hướng liệu cho chân cổng lên cổng Cách dễ để cài đặt giá trị Ocnx sử dụng bit phân tích so sánh đầu (FOCnx) chế độ bình thường (normal) Thanh ghi Ocnx giữ giá trị dù thay đổi chế độ phát dạng sóng Để nhận bit COMnx1:0 khơng ghi vào bộđệm kép với giá trị so sánh Sự thay đổi bit COMnx tạo hiệu lực Bộ phận ghép đầu so sánh
(133)Duykhanh8x1311@gmail.com 133 OCMnx 1:0 Các ghi I/O , bit I/O chân I/O hình bơi đậm Chỉ phần ghi điều khiển cổng I/O chung (DDR PORT) mà bị hỏng bit COMnx1:0 Khi tham khảo đến trạng thái OCnx , tham chiếu cho ghi OCnx bên , cho chân OCnx Nếu tín hiệu Reset xuất , ghi OCnx reset
Chức cổng I/O chung ghi đè bit so sánh đầu (OCnx ) từ máy phát dạng sóng bit COMnx1:0 cài đặt Tuy nhiên , định hướng chân OCnx ( đầu vào đầu ) điều khiển ghi định hướng liệu (DDR) cho chân cổng Bit ghi định hướng liệu cho chân OCnx (DDR_OCnx) phải cài đặt cổng trước giá trị OCnx nhìn thấy chân Chức ghi đè cổng nguyên tắc độc lập chế độ phát dạng sóng , có vài ngoại lệ Tham khảo bảng 58 bảng 59 60 để biết thêm chi tiết
Thiết kế chân logic so sánh cổng cho phép việc khởi tạo trạng thái OCnx trước cổng kích hoạt Chú ý cài đặt bit COMnx1:0 dự trữ cho chế độđã biết q trình điều khiển Xem “mơ tả ghi
Timer/Counter 16bit trang 133
Các bit COMnx1:0 khơng có hiệu lực phận bắt tín hiệu đầu vào Chếđộ đầu so sánh sự phát sinh dạng sóng
(134)Duykhanh8x1311@gmail.com 134 Một thay đổi trạng thái bit COMnx1:0 có hiệu lực ghép so sánh sau bit ghi Về chếđộ PWM , hoạt động bị cưỡng ép có hiệu lực việc sử dụng bit phân tích FOCnx
Các chế độ của trình điều khiển
Chếđộ q trình điều khiển ví dụ xử lí Timer/Counter chân so sánh đầu , xác định việc kết hợp chế dộ phát dạng sóng (WGMn3:0) bit đầu so sánh (COMnx1:0) Các bit chếđộđầu so sánh khơng ảnh hưởng đến chuỗi đếm , bit chế độ phát dạng sóng ảnh hưởng Các bit COMnx1;0 điều khiển lựa chọn đầu PWM phát nên đảo hay không ( xung PWM đảo không đảo ) Cho chếđộ PWM bit COMx1:0 điều khiển đầu lựa chọn nên cài đặt , bị xóa hay di chuyển ghép so sánh ( xem “compare match output unit trang 123 )
Để biết thêm chi tiết thông tin định thời tham khảo “Timer/Counter Timing Diagrams” trang 131
Chếđộ bình thường – Normal mode
Chếđộ bình thường
Chếđộđơn giản trình điều khiển chếđộ bình thường (WGMn3:0) = Trong chếđộ việc định hướng đếm ln ln lên (tăng dần), khơng có xóa bộđếm tiến hành Bộđếm đơn giản bị tràn mà vượt qua giá trị cực đại 16 (MAX = 0xFFFF ) sau khởi động lại từ chế độ
BOTTOM (0x0000) Trong chếđộ điều khiển bình thường cờ báo tràn Timer/Counter (TOVn) cài đặt chu kì xung nhịp TCNTn trở thành Cờ báo TOVn trường hợp xử lí bit thứ 17 , ngoại lệ chỉđược cài đặt , khơng bị xóa Tuy nhiên , kết hợp với ngắt báo tràn timer mà tự động xóa cờ TOVn , độ xác timer có thểđược tăng lên phần mềm Khơng có trường hợp đặc biệt xét đến chế độ bình thường , giá trị bộđếm có thểđược ghi thời gian
Bộ phận truy bắt tín hiệu đầu ra, dểđược sử dụng chế độ bình thường Tuy nhiên việc quan sát giá trị cực đại bên biến cố bên phải khơng vượt q độ xác bộđếm Nếu giá trị bên biến cố dài, cờ báo ngắt tràn tham mơ bộđếm gộp trước timer phải sử dụng để mở rộng độ xác phận truy bắt tín hiệu đầu vào
(135)Duykhanh8x1311@gmail.com 135 Chếđộ CTC – Clear Timer on Compare Match
Trong chế độ CTC (WGMn3:0=4 12), ghi OCRnA ICRn sử dụng đểđiều khiển độ xác bộđếm Trong chếđộ CTC bộđếm bị xóa vể mà giá trị bộđếm (TCNTn) tương ứng với hai bit OCRnA
(WGMn3:0=4)hoặc ICRn (WGMn3:0=12) Thanh ghi OCRnA ICRn xác định giá trị TOP cho bộđếm ,và độ xác Chếđộ cho phép việc điều khiển tần sốđầu ghép so sánh tốt Nó q trình điều khiển đơn giản việc đếm kiện bên
Biểu đồ thời gian cho chếđộ CTC hình 51 Giá trị bộđếm (TCNTn) làm tăng ghép so sánh xuất với hai ghi OCRnA ICRn , sau bộđếm bị xóa
Một ngắt sinh lần mà giá trị bộđếm đạt đến giá trị TOP việc sử dụng cờ OCFnA ICFn theo ghi sử dụng để xác định giá trị TOP Nếu ngắt kích hoạt , chương trình điều khiển ngắt sử dụng cho việc cập nhật giá trị TOP Tuy nhiên , việc thay đổi giá trị TOP đến giá trị đóng lên BOTTOM mà bộđếm chạy với mức thấp bộđếm gộp trước phải thực với cẩn thận chế độ CTC không cótính bộđệm kép Nếu giá trị ghi lên ghi OCRnA ghi ICRn thấp giá trị hành TCNTn , bộđếm bị lỗi ghép so sánh Bộđếm sau phải đếm từ giá trị cực đại (0xFFFF) vùng xung quanh giá trị khởi động
0x0000 trước ghép so sánh xuất Trong nhiều trường hợp tính khơng xét đến đảo ngược sau sử dụng chế độ fast PWM sử dụng OCRnA cho việc xác định giá trị TOP (WGMn3:0=15) OCRnA sau ghi vào bộđệm kép
(136)Duykhanh8x1311@gmail.com 136 fclk_I/O/2 mà OCRnA cài đặt (0x0000) Tần số dạng sóng xác định công thức :
Biến N đưa theo tỉ lệ (1 , 8, 64 , 256 , 1024 )
Như chếđộ điều khiển bình thường , cờ TOVn cài đặt chu kì xung nhịp mà bộđếm đếm từ giá trị Max 0x0000
Chếđộ fast PWM
Chếđộđiều chếđộ rộng xung nhanh hay fast PWM (WGMn3:0 = 5,6,7,14 15 ) cung cấp sự phát dạng sóng tần số cao tùy chọn Chế độ fast PWM khác với chếđộ PWM khác q trình điều khiển sườn đơn Bộđếm đếm từ BOTTOM đến TOP sau khởi động lại từ BOTTOM Trong chếđộđầu so sánh không đảo , đầu so sánh (OCnx) bị xóa ghép so sánh TCNTn OCRnx , cài đặt BOTTOM Trong chế độđầu so sánh ảo cài đặt ghép so sánh bị xóa BOTTOM Tương xứng với trình điều khiển sườn đơn , tần số hoạt động chếđộ fast PWM cao gấp đơi chếđộ PWM pha tần số chế độ PWM pha mà sử dụng trình điều khiển sườn Tần số cao làm cho chế độ fast PWM thích hợp tốt với nguồn thơng thường , nguồn chỉnh lưu ứng dụng DAC Tần số cao cho phép thành phần vật lí cỡ nhỏ bên (cuộn dây , tụđiện ) , từ giảm giá thành hệ thống
Độ xác xung PWM cho chếđộ fast PWM ổn định 8,9 10bit , xác định ghi ICRn OCRnA Độ xác cực tiểu cho phép bit (ICRn OCRnA đặt 0x0003) , độ xác cực đại 16bit (ICRn OCRnA đặt MAX) Độ xác PWM bit có thểđược tính tốn việc sử dụng cơng thức :
(137)Duykhanh8x1311@gmail.com 137 Cờ báo tràn Timer/Counter (TOVn) cài đặt lần bộđếm đạt đến
BOTTOM Khi hai ghi OCRnA ICRn sử dụng cho việc xác định giá trị TOP , cờ ICFn OCnA cài đặt chu kì xung nhịp ghi cập nhật với giá trị bộđệm kép (TOP) Các cờ báo ngắt sử dụng để sinh ngắt lần bộđếm đạt đến giá trị TOP BOTTOM
giữa Khi thay đổi giá trị TOP chương trình phải đảm bảo giá trị TOP cao giá trị TOP tất ghi so sánh Nếu giá trị TOP thấp ghi so sánh , ghép so sánh không xuất TCNTn OCRnx Chú ý sử dụng giá trị TOP ổn định , bit không sử dụng bị che ghi OCRnx ghi Như chu kì thứ hình 53 , việc thay đổi giá trị TOP tích cực Timer/Counter chạy chế độđúng pha gây đầu không đối xứng Kết việc có thểđược tìm thấy thời gian việc cập nhật cho ghi OCRnx Do cập nhật ghi OCRnx giá trị TOP , chu kì PWM bắt đầu kết thúc giá trị TOP Điều đưa đến chiều dài sườn xuống xác định già trị TOP trước , độ dài sườn lên xác định giá trị TOP Khi hai giá trị khác sườn khác chu kì khác độ dài Sự khác nhàu độ dài đưa kết không đối xứng đầu
Nó khuyến cáo đê sử dụng chếđộđúng pha tần sốđể thay cho chếđộđúng pha thay đổi giá trị TOP Timer/Counter chạy Khi sử dụng giá trị TOP cốđịnh thực tế khơng có khác hai chếđộ trình điều khiển
(138)Duykhanh8x1311@gmail.com 138 OCMnx1:0 lên (xem bảng 60 trang 134 ) Giá trị thật OCnx chỉđược nhìn thấy chân cổng định hướng liệu cho chân cổng cài đặt đầu (DDR_OCnx) Dạng xung PWM sinh việc cài đặt (hoặc xóa ) ghi OCnx ghép so sánh OCRnx TCNTn bộđếm tăng , bị xóa (hoặc cài đặt ) ghi OCnx ghép so sánh OCRnx TCNTn bộđếm giảm dần Tần số xung PWM cho đầu cài sử dụng chế độ PWM pha có thểđược tính cơng thức :
Biến N đưa theo tỉ lệ (1 , , 64 , 256 , 1024)
Giá trị cực biên ghi OCRnx đưa trường hợp đặc biệt mà phát đầu xung PWM chế độ PWM pha Nếu ghi OCRnx cài đặt giá trị BOTTOM , đầu tiếp tục mức thấp cài đặt giá trị TOP đầu tiếp tục mức cao cho chếđộ PWM không đảo Cho chế độ PWM đảo , đầu có giá trị logic đối lập
Nếu OCnA sử dụng để xác định giá trị TOP (WMGn3:0 = 11) OCMnA1:0=1 ,đầu OCnA di chuyển với chu kì tải 50%
Chếđộ PWM đúng pha đúng tần số
Điều chếđộ rộng xung pha tần số ,(WGM3:0 =8 )cung cấp dạng xung PWM lựa chọn pha tần số Chếđộ PWM pha tần số giống chế độ PWM pha , dựa trình điều khiển sườn Bộđếm đếm lập lại từ BOTTO (0x0000) đến TOP sau đếm từ TOP BOTTOM Trong chếđộ đầu so sánh không đảo , đầu so sánh (OCnx) bị xóa ghép so sánh TCNTn OCRnx đếm lên , đặt ghép so sánh đếm xuống Trong chế độđầu so sánh đảo , trình điều khiển bịđảo ngược Quá trình điều khiển sườn đưa đặc tính đối xứng chế độ PWM hai sườn , chếđộ ưa thích dùng cho ứng dụng điều khiển động
Sự khác chế độđúng pha chế độđúng pha, tần số thời gian mà ghi OCRnx cập nhật ghi bộđệm OCRnx (xem hình 53 hình 54 )
Độ xác chếđộđúng pha , tần số xác định ICRn OCRnA Độ xác cực tiểu cho phép 2-bit (ICRn
(139)Duykhanh8x1311@gmail.com 139 Trong chế độđúng pha, tần số , bộđếm đếm tăng dần giá trị bộđếm tương ứng với giá trị ICRn (WGMn3:0 =8 ) giá trị OCRnA (WGMn3:0 = ) Bộđếm sau vừa đạt đến giá trị TOP chuyển hướng đếm Giá trị TCNTn với TOP chu kì xung nhịp Biểu đồ thời gian cho chếđộ PWM pha tần sốđược hình 54 Hình vẽ chế độđúng pha , tần số mà OCRnA ICRn sử dụng để xác định giá trị TOP Giá trị TCNTn giản đồ thời gian biểu đồ minh họa cho trình điều khiển sườn Giản đồ bao gồm đầu PWM đảo không đảo Đường nằm ngang nhỏđánh dấu sườn TCNTn đưa ghép so sánh OCRnx TCNTn Cờ báo ngắt OCnx sẽđược cài đặt mà ghép so sánh xuất
Cờ báo tràn Timer/Counter (TOVn) cài đặt chu kì xung nhịp thời gian ghi cập nhật với giá trị bộđệm kép ( BOTTOM ) Khi bit OCRnA ICRnx sử dụng cho việc xác định giá trị TOP , cờ OCnA ICFn cài đặt TCNTn đạt đến giá trị TOP Các cờ báo ngắt sau sử dụng để sỉnh ngắt lần mà timer đạt đến giá trị TOP BOTTOM
Khi thay đổi giá trị TOP chương trình phải đảm bảo giá trị TOP cao giá trị tất ghi so sánh Nếu giá trị TOP thấp giá trị so sánh ghi , ghép so sánh không xuất TCNTn OCRnx
Như hình 54 đầu sinh , tương phản với chế độ PWM pha , sựđối xứng tất chu kì Do ghi OCRnx cập nhật BOTTOM , độ dài sườn lên xuống luôn Điều đưa xung đầu đối xứng tần sốđúng
(140)Duykhanh8x1311@gmail.com 140 thay đổi việc thay đổi giá trị TOP , việc sử dụng OCRnA nhu giá trị TOP ro ràng lựa chọn tốt đặc tính bộđệm kép
Trong chế độđúng pha tần số , phận so sánh cho phép việc phát xung PWM chân OCnx Việc cài đặt bit OCMnx1:0 lên gây 1 xung PWM khơng đảo đảo sinh việc cài đặt COMnx1:0 lên (xem bảng 60 trang 134) Giá trị thật OCnx chỉđược nhìn thấy chân cổng định hướng liệu cho chân cổng cài đặt cổng
(DDR_OCnx ) Dạng sóng PWM sinh việc cài (hoặc xóa) ghi OCnx ghép so sánh OCRnx TCNTn bộđếm tăng dần , việc xóa (hoặc cài đặt ) ghi OCnx ghép so sánh OCRnx TCNTn bộđếm giảm dần Tần số PWM cho đầu sử dụng chế độđúng pha , tần số tính cơng thức :
Giá trị cực biên ghi OCRnx đưa trường hợp đặc biệt mà phát đầu xung PWM chế độ PWM pha Nếu ghi OCRnx cài đặt giá trị BOTTOM , đầu tiếp tục mức thấp cài đặt giá trị TOP đầu tiếp tục mức cao cho chếđộ PWM không đảo Cho chế độ PWM đảo , đầu có giá trị logic đối lập
Nếu OCnA sử dụng để xác định giá trị TOP (WMGn3:0 = 11) OCMnA1:0=1 ,đầu OCnA di chuyển với chu kì tải
Giản đồ thời gian của Timer/Counter
(141)Duykhanh8x1311@gmail.com 141
(142)Duykhanh8x1311@gmail.com 142
Sự miêu tả ghi của Timer/Counter 16 bit Thanh ghi A điều khiển Timer/Counter – TCCR1A
Thanh ghi A điều khiển Timer/Counter – TCCR3A
Bit 7:6 – COMnA1:0 : chế độđầu so sánh cho kênh A Bit 5:4 – COMnB1:0 : chế độđầu so sánh cho kênh B Bit 3:2 – ComnC 1:0 : chế độđầu so sánh cho kênh C
COMnA1:0 , COMnB 1:0 , COMnC1:0 điều khiển chân so sánh đầu (OcnA , OcnB , OcnC tương ứng ) Nếu hai sô bit COMnA1:0 ghi , đầu OcnA ghi đè lên cổng chức chân I/O mà kết nối đến Nếu hai sô bit COMnB1:0 ghi , đầu OCnB ghi đè lên cổng chức chân I/O mà kết nối đến Nếu hai sô bit COMnC1:0 ghi , đầu OCnC ghi đè lên cổng chức chân I/O mà kết nối đến Tuy nhiên , ý bit ghi định hướng liệu
(143)Duykhanh8x1311@gmail.com 143 Khi OCnA , OCnB , OCnC nối với chân chức bit
COMnx1:0 phụ thuộc vào việc cài đặt bit WGMn3:0 Bảng 58 bit chức COMnx1:0 bit WGMn3:0 cài đặt tới chế độ bình thường chếđộ CTC (khơng phải PWM)
Bảng 59 bit chức COMnx1:0 bit WGMn3:0 cài đặt chế độ fast PWM
(144)Duykhanh8x1311@gmail.com 144 Bit 1:0 - WGMn1:0 : chếđộ phát dạng sóng
(145)Duykhanh8x1311@gmail.com 145 Thanh ghi B điều khiển Timer/Counter – TCCR1B
Thanh ghi B điều khiển Timer/Counter – TCCR3B
Bit – ICNCn : khóa cắt nhiễu bắt tín hiệu đầu vào
Việc cài đặt bit (là ) kích hoạt khóa cắt nhiễu bắt tín hiệu đầu vào Khi khóa cắt nhiễu (Noise Canceler) kích hoạt , đầu vào từ chân bắt tín hiệu đầu vào (ICPn) lọc Chức lọc cần thiết trình lấy mẫu liên tiếp chân ICPn cho việc thay đổi đầu Bộ bắt tín hiệu đầu vào bị trễ chu kì xung nhịp tạo dao động mà khóa cắt nhiễu kích hoạt
Bit6 – ICESn : lựa chọn sườn bắt tín hiệu đầu vào
Bit lựa chọn sườn chân cổng bắt tín hiệu đầu vào (ICPn ) mà sử dụng để khởi động kiện truy bắt tín hiệu Khi bit ICESn ghi , sườn xuống (âm ) sử dụng để khởi động , bit ICESn viết , sườn lên (dương) khởi động bắt tín hiệu
Khi bắt tín hiệu khởi động theo việc cài đặt bit ICESn , giá trị đếm chép vào ghi truy bắt tín hiệu đầu vào (ICRn) Biến cố cài đặt cờ báo truy bắt tín hiệu đầu vào(ICFn), điều sử dụng để gây ngắt truy bắt tín hiệu đầu vào , ngắt kích hoạt
Khi ICRn sử dụng giá trị TOP ( xem mô tả bit WGMn3:0 đặt ghi TCCRnA TCCRnB ) , ICPn ngắt kết nối chức truy bắt tín hiệu đầu bị vơ hiệu hóa
Bit – bit dự trữ
Bit dự trữ cho việc sử dụng tương lai Đểđảm bảo tương thích với thiết bị tương lai, bit phải viết mà ghi TCCRnB ghi
Bit 4:3 - WGMn3:2 : chế độ phát dạng sóng Xem phần mơ tả ghi TCCRnA
Bit2:0 – CSn2:0 : lựa chọn xung nhịp
(146)Duykhanh8x1311@gmail.com 146 Nếu chế độ chân bên sử dụng cho Timer/Counter , chuyển tiếp chân Tn khóa bộđếm chân cấu đầu Đặc điểm cho phép phần mềm điều khiển việc đếm
Thanh ghi C điều khiển Timer/Counter – TCCR1C
Thanh ghi C điều khiển Timer/Counter – TCCR3C
Bit – FOCnA : so sánh đầu cưỡng cho kênh A Bit – FOCnB : so sánh đầu cưỡng cho kênh B Bit – FOCnC : so sánh đầu cưỡng cho kênh C
Các bit FOCnA , FOCnB , FOCnC hoạt động bit WGMn3:0 xác định chếđộ PWM Khi việc viết mức logic lên bit FOCnA ,
FOCnB , FOCnC , ghép so sánh trung gian bị cưỡng ép phận phát dạng sóng Đầu FOCnA , FOCnB , FOCnC bị thay đổi theo việc cài đặt bit WGMn1:0 Chú ý bit FOCnA , FOCnB , FOCnC cài đặt đầu đo (strobe) Vì giá trịđưa bit OCMnx1:0 mà xác định ảnh hưởng so sánh cưỡng
1 đầu dị FOCnA , FOCnB , FOCnC khơng sinh ngắt xóa Timer chế độ CTC mode việc sử dụng OCRnA giá trị TOP
Các bit FOCnA , FOCnB , FOCnC ln đọc Bit 4:0 – bit dự trữ
(147)Duykhanh8x1311@gmail.com 147 Timer/Counter1 – TCNT1H TCNT1L
Timer/Counter – TCNT3H TCNT3L
Hai vùng địa I/O Timer/Counter (TCNTnH TCNTnL , kết hợp
TCNTn) đưa truy nhập trực tiếp , hai phục vụ cho trình đọc ghi , tới phận Timer/Counter bộđếm 16bit Để đảm bảo byte cao thấp đọc ghi cách đồng thời CPU truy cập vào ghi , truy nhập tiến hành sử dụng ghi byte cao tạm thời 8bit (TEMP) Thanh ghi tạm thời chia sẻ tất ghi 16bit Xem “Accessing 16bit Register” trang 115
Sự sửa đổi bộđếm (TCNTn) bộđếm chạy đưa nguy việc lỗi ghép so sánh TCNTn ghi OCRnx
Việc viết ghi TCNTn khóa (gỡ bỏ ) ghép so sánh xung nhịp timer cho tất phận so sánh
Thanh ghi so sánh đầu 1A – OCR1AH OCR1AL
Thanh ghi so sánh đầu 1B – OCR1BH OCR1BL
(148)Duykhanh8x1311@gmail.com 148 Thanh ghi so sánh đầu A – OCR3AH OCR3AL
Thanh ghi so sánh đầu 3B – OCR3BH OCR3BL
Thanh ghi so sánh đầu 3C – OCR3CH OCR3CL
Các ghi so sánh đầu bao gồm giá trị 16bit mà so sánh liên tiếp với giá trị đếm (TCNTn) Một ghép có thểđược sử dụng để phát ngắt so sánh đầu , phát đầu dạng sóng chân Ocnx
Các ghi so sánh đầu cỡ 16 bit Để đảm bảo byte cao thấp đọc ghi cách đồng thời CPU truy cập vào ghi , truy nhập tiến hành sử dụng ghi byte cao tạm thời 8bit (TEMP) Thanh ghi tạm thời chia sẻ tất ghi 16bit Xem “Accessing 16bit Register” trang 115
Thanh ghi1 truy bắt tín hiệu đầu vào – ICR1H ICR1L
(149)Duykhanh8x1311@gmail.com 149 Bộ truy bắt tín hiệu đầu vào cập nhật với giá trị bộđếm (TCNTn) lần mà biến cố xuất chân ICPn ( lựa chọn đầu so sánh tương tự cho Timer/Counter1) Bộ truy bắt tín hiệu đầu vào có thểđược sử dụng để xác định giá trị TOP bộđếm
Thanh ghi truy bắt tín hiệu đầu vào cỡ 16bit Để đảm bảo byte cao thấp đọc ghi cách đồng thời CPU truy cập vào ghi , truy nhập tiến hành sử dụng ghi byte cao tạm thời 8bit (TEMP) Thanh ghi tạm thời chia sẻ tất ghi 16bit Xem “Accessing 16bit Register” trang 115
Thanh ghi che ngắt Timer/Counter – TIMSK
Bit – TICIE1 : Timer/Counter , kích hoạt ngắt truy bắt tín hiệu vào Khi bit viết , cờ I ghi trạng thái cài đặt ( ngắt kích hoạt chung ) , Timer/Counter ngắt truy bắt tín hiệu đầu vào kích hoạt Các vecto ngắt tương ứng (xem Interrupt trang 60 ) thực thi cờ báo ICF1 ,đặt ghi TIFR cài đặt
Bit – OCIE1A : Timer/Counter , kích hoạt ngắt ghép so sánh đầu A Khi bit ghi , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt ) , Ngắt ghép so sánh đầu A Timer/Counter1 kích hoạt Các vec tơ ngắt tương ứng ( xem trang 60 ) thực thi cờ báo OCF1A , đặt ghi TIFR cài đặt
Bit – OCIE1B : kích hoạt ghép so sánh đầu B , Timer/Counter1
Khi bit viết , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt ) ngắt ghép so sánh đầu B Timer/Counter1 kích hoạt Các vecto ngắt tương ứng thực thi mà cờ báo OCF1A , đặt TIFR cài đặt
Bit – TOIE1 : kích hoạt ngắt tràn , Timer/Counter1
(150)Duykhanh8x1311@gmail.com 150 Thanh ghi che ngắt Timer/Counter mở rộng – ETIMSK
Bit 7:6 – bit dự trữ
Các bit dự trữ cho việc sử dụng tương lai Để đảm bảo tương thích với thiết bị tương lai, bit phải viết mà ghi ETIMSK ghi
Bit – TICIE3 : kích hoạt ngắt truy bắt tín hiệu đầu vào
Khi bit viết , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt) , ngắt truy bắt tín hiệu đầu Timer/Counter3 kích hoạt Các vecto ngắt tương ứng (xem trang 60 ) thực thi cờ báo ICF3, đặt ghi ETIFR cài đặt
Bit4 – OCIE3A : Timer/Counter3 , kích hoạt ngắt ghép đầu so sánh A Khi bit ghi , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt ) , Ngắt ghép so sánh đầu A Timer/Counter3 kích hoạt Các vec tơ ngắt tương ứng ( xem trang 60 ) thực thi cờ báo OCF3A , đặt ghi ETIFR cài đặt
Bit – OCIE3B : Timer/Counter3 , kích hoạt ngắt ghép đầu so sánh B Khi bit ghi , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt ) , Ngắt ghép so sánh đầu B Timer/Counter3 kích hoạt Các vec tơ ngắt tương ứng ( xem trang 60 ) thực thi cờ báo OCF3B , đặt ghi ETIFR cài đặt
Bit – TOIE3 , Timer /Counter3 , kích hoạt ngắt tràn
Khi bit viết , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt) , ngắt tràn Timer/Counter3 kích hoạt Các vecto ngắt tương ứng (xem trang 60 ) thực thi cờ báo TOV3 , đặt ghi ETIFR cài đặt
Bit – OCIE3C : Timer /Counter3 , kích hoạt ngắt ghép so sánh đầu C Khi bit viết , cờ I ghi trạng thái cài đặt ( ngắt chung kích hoạt) , ngắt ghép so sánh đầu C Timer/Counter3 kích hoạt Các vecto ngắt tương ứng (xem trang 60 ) thực thi cờ báo OCF3C , đặt ghi ETIFR cài đặt
(151)Duykhanh8x1311@gmail.com 151 Thanh ghi cờ báo ngắt Timer/Counter – TIFR
Bit – ICF1 : Timer/Counter , cờ báo truy bắt tín hiệu đầu
Cờ cài đặt truy bắt biến cố xuất chân ICP1 Khi mà ghi truy bắt tín hiệu đầu vào (ICR1) cài đặt bit WGMn3:0 sử dụng giá trị TOP , cờ ICF1 cài đặt bộđếm tiến tới giá trị TOP
ICF1 bị xóa cách tự động vécto ngắt truy bắt đầu vào thực thi Như lựa chọn , ICF1 bị xóa việc viết mức logic lên vùng nhớ bit
Bit – OCF1A : Timer/Counter1 , cờ ghép so sánh đầu A
Cờ cài đặt chu kì xung nhịp timer sau giá trị bộđếm tương xứng với ghi so sánh đầu A (OCR1A )
Chú ý đầu dò so sánh đầu cưỡng (FOC1A) khơng cài đặt cờ OCF1A
OCF1A bị xóa cách tự động mà vecto ngắt ghép đầu so sánh A thực thi Như lựa chọn, OCF1A bị xóa việc viết mức logic lên vùng nhớ bit
Bit – OCF1B : Timer/Counter1 , cờ báo ghép so sánh đầu B
Cờ cài đặt chu kì xung nhịp timer sau giá trị bộđếm (TCNT1) tương ứng với ghi so sánh đầu B (OCR1B)
Chú ý đầu dò so sánh đầu cưỡng (FOC1B ) không cài đặt cờ OCF1B
OCF1B bị xóa cách tự động mà vecto ngắt ghép đầu so sánh B thực thi Như lựa chọn, OCF1B bị xóa việc viết mức logic lên vùng nhớ bit
Bit – TOV1 : Timer/Counter1 , cờ tràn
Việc cài đặt cờ phụ thuộc vào việc cài đặt bit WGMn3:0 Trong chếđộ thông thường chếđộ CTC , cờ TOV1 cài đặt timer bị tràn Tham khảo thêm bảng 61 trang 135 xử lý cờ tràn TOV1 việc sử dụng cài đặt bit WGMn3:0 khác
(152)Duykhanh8x1311@gmail.com 152 Thanh ghi cờ ngắt Timer/Counter mở rộng – ETIFR
Bit 7:6 – bit dự trữ
Các bit dự trữ cho việc sử dụng tương lai Để đảm bảo tương thích với thiết bị tương lai, bit phải viết mà ghi ETIFR ghi
Bit – ICF3 : Timer/Counter3 , cờ báo truy bắt tín hiệu đầu vào
Cờ cài đặt truy bắt biến cố xuất chân ICP3 Khi mà ghi truy bắt tín hiệu đầu vào (ICR3) cài đặt bit WGMn3:0 sử dụng giá trị TOP , cờ ICF3 cài đặt bộđếm tiến tới giá trị TOP
ICF3 bị xóa cách tự động vécto ngắt truy bắt đầu vào3 thực thi Như lựa chọn , ICF3 bị xóa việc viết mức logic lên vùng nhớ bit
Bit – OCF3A : Timer/Counter , cờ ghép so sánh đầu A
Cờ cài đặt chu kì xung nhịp timer sau giá trị bộđếm tương xứng với ghi so sánh đầu A (OCR3A )
Chú ý đầu dò so sánh đầu cưỡng (FOC3A) không cài đặt cờ OCF3A
OCF1A bị xóa cách tự động mà vecto ngắt ghép đầu so sánh3 A thực thi Như lựa chọn, OCF3A bị xóa việc viết mức logic lên vùng nhớ bit
Bit – OCF3B : Timer/Counter3 , cờ báo ghép so sánh đầu B
Cờ cài đặt chu kì xung nhịp timer sau giá trị bộđếm (TCNT3) tương ứng với ghi so sánh đầu B (OCR3B)
Chú ý đầu dò so sánh đầu cưỡng (FOC3B ) không cài đặt cờ OCF3B
OCF3B bị xóa cách tự động mà vecto ngắt ghép đầu so sánh3 B thực thi Như lựa chọn, OCF3B bị xóa việc viết mức logic lên vùng nhớ bit
Bit – TOV3 : Timer/Counter3 , cờ tràn
Việc cài đặt cờ phụ thuộc vào việc cài đặt bit WGMn3:0 Trong chếđộ thông thường chếđộ CTC , cờ TOV3 cài đặt timer bị tràn Tham khảo thêm bảng 52 trang 105 xử lý cờ tràn TOV3 việc sử dụng cài đặt bit WGMn3:0 khác
TOV3 tự động bị xóa mà vec tơ ngắt báo tràn Timer/Counter3 thực thi Như lựa chọn , TOV3 có thểđược xóa việc viết mức logic lên vùng nhớ bit
(153)Duykhanh8x1311@gmail.com 153 Cờ cài đặt chu kì xung nhịp timer sau giá trị bộđếm (TCNT3) tương ứng với ghi so sánh đầu C(OCR3C)
Chú ý đầu dò so sánh đầu cưỡng (FOC3C) khơng cài đặt OCF3C OCF3C tự động xóa vecto ngắt ghép so sánh đầu C thực thi Như lựa chọn, OCF3C bị xóa việc viết mức logic lên vùng nhớ bit
Bit – OCF1C : Timer/Counter1 , cờ ghép so sánh đầu C
Cờ cài đặt chu kì xung nhịp sau giá trị bộđếm (TCNT1) tương ứng với ghi so sánh đầu C (OCR1C)
(154)Duykhanh8x1311@gmail.com 154
XIII Các bộ đếm gộp trước của Timer/Counter ,Timer/Counter Timer/Counter
Các Timer/Counter ,Timer/Counter Timer/Counter chia sẻ module đếm gộp trước giống , Timer/Counter có cài đặt bộđếm gộp trước khác Sự miêu tả phía áp dụng cho tất Timer/Counter nói đến
Nguồn xung nhịp bên
Timer/Counter bị khóa trực tiếp xung nhịp hệ thống( việc cài đặt CSn2:0 =1) Điều cung cấp sựđiều khiển nhanh , với tần số xung nhịp Timer/Counter cực đại với tần số xung nhịp hệ thống(fCLK_I/O) Như lựa chọn, đầu từ bộđếm gộp trước có thểđược sử dụng nguồn phát xung nhịp Bộđếm gộp Xung nhịp bộđếm gộp trước có tần số số fCLK_I/O/8 , fCLK_I/O/64 , fCLK_I/O / 256 , fCLK_I/O /1024
Reset bộđếm gộp trước
Bộđếm gộp trước chạy tự , ví dụ q trình hoạt động độc lập biến logic lựa chọn xung nhịp Timer/Counter , bị chia sẻ Timer/Counter ,Timer/Counter Timer/Counter Từ bộđếm gộp trước không bị hư hỏng việc lựa chọn xung nhịp Timer/Counter , trạng thái bộđếm gộp trước phụ thuộc vào tình nơi mà xung nhịp bộđếm gộp trước sử dụng Một ví dụ việc đếm gộp trước giả tạo xuất mà timer kích hoạt khóa bộđếm gộp trước( 6>CSn2:0>1 ) Hệ số chu kì xung nhịp hệ thống từ timer kích hoạt đến kết đếm xuất từ đến N + chu kì xung nhịp hệ thống, N chia tỉ lệ ( 8, 64,256 ,1024 )
Nếu sử dụng reset bộđếm gộp trước cho việc đồng hóa Timer/Counter đến q trình thực thi chương trình Tuy nhiên , cẩn thận phải tiến hành Timer/Counter khác mà chia sẻ bộđếm gộp trước sử dụng tỉ lệ Reset bộđếm gộp trước sẽảnh hưởng đến chu kì đếm gộp trước cho tất
Timer/Counter kết nối với Nguồn xung nhịp bên ngồi
(155)Duykhanh8x1311@gmail.com 155 ghi bị khóa sườn dương xung nhịp hệ thống bên (clkI/O) Then cài chuyển vào chu kì cao xung nhịp hệ thống bên
Bộ dò sườn phát xung clkT1 , clkT2 , clkT3 cho sườn dương (CSn2:0 = 7) âm (CSn2:0 = ) dị thấy
Bộđồng hóa máy dò sườn logic đưa độ trễ 2.5 đến 3.5 lần chu kì xung nhịp hệ thống từ sườn áp đặt lên chân Tn bộđếm cập nhật
Việc kích hoạt vơ hiệu hóa xung nhịp bên phải thực mà Tn có trạng thái ổn định khoảng thời gian nhỏ chu kì xung nhịp hệ thống , nói cách khác nguy mà xung nhịp Timer/Counter hỏng sinh
Mỗi nửa chu kì xung nhịp bên áp dụng phải dài hơn1 chu kì xung nhịp hệ thống đểđảm bảo việc lấy mẫu xác Xung nhịp bên ngồi phải đảm bảo để nhỏ tần số nửa chu kì xung nhịp hệ thống (fExtClk < fclk_I/O/2) đưa 50/50 chu kì tải Vì dị sườn xung sử dụng việc lấy mẫu , tần số cực đại xung bên ngồi có thểđược dị thấy nửa tần số lấy mẫu (nguyên lí Nyquist ) Tuy nhiên , thay đổi tần số xung nhịp hệ thống chu kì tải gây nguồn tạo dao động(thạch anh , cộng hưởng , tụđiện ) , khuyến cáo tần số lớn nguồn phát xung nhịp bên ngồi nhỏ fclk_I/O/2.5
(156)Duykhanh8x1311@gmail.com 156 Thanh ghi IO chức năng đặc biệt
Bit – TSM : chếđộ đồng hóa Timer/Counter
Việc viết bit TSM kích hoạt chế độđồng hóa Timer/Counter Trong chế độ này, giá trị mà viết lên bit PSR0 PSR321 giữ , việc giữ tín hiệu reset bộđếm tương ứng gán Điều đảm bảo
Timer/Counter tương ứng dừng có thểđược cấu hình lên giá trị giống mà khơng có nguy số chúng suốt trình cấu hình Khi mà bit TSM viết , bit PSR0 PSR321 bị xóa phần cứng ,
Timer/Counter bắt đầu việc đếm cách đồng thời
Bit – PSR321 : bộđếm gộp trước Reset Timer/Counter ,Timer/Counter Timer/Counter
Khi mà bit , bộđếm gộp trước Timer/Counter ,Timer/Counter Timer/Counter reset Bit thông thường xóa phần cứng , ngoại trừ bit TSM cài đặt Chú ý Timer/Counter
(157)Duykhanh8x1311@gmail.com 157
XIV Timer/Counter 8bit với chếđộ PWM
Timer/Counter module Timer/Counter đa dùng chung , kênh đơn Các đặc điểm :
- Bộđếm kênh đơn
- Clear Timer on Compare Match (Auto reload )
- Không nhiễu sọc ngang , điều chế độ rộng xung pha ( PWM) - Máy phát tần số
- Bộđếm biến cố bên
- Bộđếm gộp trước xung nhịp 10bit
- Các nguồn ngắt ghép so sánh ngắt tràn (TOV2 OCF2 ) Tổng quan
Một sơđồ khối rút gọn Timer/Counter 8bit hình 61 Về cài đặt chân I/O , tham khảo “pin Configurations “ trang CPU truy cập vào ghi I/O bao gồm bit I/O chân I/O , in đậm Thanh ghi xác định thiết bị vùng bit liệt kê phần mô tả
Timer/Counter 8bit trang 157
Các ghi
(158)Duykhanh8x1311@gmail.com 158 ghi cờ báo ngắt Timer (TIFR) Tất ngắt che riêng biệt với ghi che ngắt Timer (TIMSK) TIFR TIMSK khơng hình vẽ ghi chia sẻ phận timer khác
Timer/Counter bị khóa bên , thơng qua bộđếm gộp trước , nguồn xung nhịp bên chân T2 Khối logic lựa chọn xung nhịp điều khiển nguồn xung nhịp sườn Timer/Counter sử dụng để tăng (hoặc giảm ) giá trị Timer/Counter khơng kích hoạt mà khơng có nguồn xung nhịp lựa chọn Đầu từ khối logic lựa chọn xung nhịp tham khảo xung nhịp timer (clkT2 )
Thanh ghi so sánh đầu ghi vào bộđệm kép (OCR2) so sánh với giá trị Timer/Counter tất thời điểm Kết việc so sánh sử dụng máy phát dạng sóng để phát PWM đầu tần số thay đổi chân so sánh đầu (OC2) Xem “Output Compare Unit” trang 148 để biết thêm chi tiết Biến cố ghép so sánh cài đặt cờ so sánh (OCF2) mà sử dụng để phát yêu cầu ngắt so sánh đầu
Các định nghĩa
Nhiều ghi bit tham chiếu tài liệu viết theo mẫu chung Một trường hợp thấp “n” thay cho số thứ tự Timer/Counter , trường hợp Tuy nhiên sử dụng ghi bit xác định chương trình , mẫu xác phải sử dụng (ví dụ TCNT2 cho việc truy nhập vào giá trị đếm Timer/Counter )
Các định nghĩa bảng 63 sử dụng cách rộng rãi xuyên suốt tài liệu
Các nguồn phát xung nhịp Timer/Counter
Timer/Counter bị khóa bên nguồn xung nhịp Nguồn xung nhịp lựa chọn khối logic lựa chọn xung nhịp mà điều khiển bit lựa chọn xung nhịp(CS22:0) đặt ghi điều khiển
(159)Duykhanh8x1311@gmail.com 159 Thành phần bộđếm
Thành phần bộđếm 8bit phận đếm hướng lập trình Hình 62 sơđồ khối bộđếm thứ xung quanh
Miêu tả tín hiệu (các tín hiệu bên )
Count tăng giảm TCNT2 Direction lựa chọn tăng giảm
Clear xóa TCNT2 ( cài đặt tất bit 0)
ClkTn xung nhịp Timer/Counter , tham khảo clkT0ở Top tín hiệu TCNT2 vừa đạt giá trị cực đại
Bottom tín hiệu TCNT2 vừa đạt giá trị cực tiểu (0)
Sự phụ thuộc chế độđiều khiển sử dụng, bộđếm xóa , làm tăng , làm giảm chu kì xung nhịp timer (clkT2) clkT2 có thểđược sinh từ nguồn xung nhịp bên , lựa chọn bit lựa chọn xung nhịp (CS22:0) Khi khơng có nguồn xung nhịp lựa chọn (CS22:0 = ) Timer bị dừng lại Tuy nhiên , giá trị TCNT2 truy nhập CPU , bất chấp việc clkT2được đưa hay không Một CPU ghi đè lên (có quyền ưu tiên cao ) tất bộđếm xóa điều khiển q trình đếm
Chuỗi đếm xác định việc cài đặt bit WGM01:0 đặt ghi điều khiển Timer/Counter (TCCR2) Có nhiều kết nối đóng cách mà đếm xử lí cách mà dạng sóng sinh đầu so sánh đầu OC2 để biết thêm chi tiết cách hoàn thiện chuỗi đếm phát dạng sóng , xem “các chế độđiều khiển ‘ trang 150
Cờ báo tràn Timer/Counter (TOV2) cài đặt lên chếđộ điều khiển lựa chọn bit WGM2:0 TOV2 sử dụng cho việc phát ngắt CPU Bộ phận so sánh đầu
(160)Duykhanh8x1311@gmail.com 160 Nếu kích hoạt (OCIE2=1 cờ ngắt chung ghi SREG cài đặt ) , cờ báo so sánh đầu phát ngắt so sánh đầu Cờ báo OCF2 tựđộng bị xóa mà ngắt thực thi Như lựa chọn , cờ OCF2 bị xóa phần mềm việc viết mức logic lên vùng bit I/O chúng Máy phát dạng sóng sử dụng tín hiệu tương ứng để phát đầu theo chế độđiều khiển cài bit WGM2:1 bit chếđộ đầu so sánh (COM21:0) Các tín hiệu max bottom sử dụng máy phát dạng sóng cho việc điều khiển trường hợp đặc biệt giá trị cực biên vài chế độ tình điều khiển (xem bảng Các chếđộ điều khiển trang 150) Hình 63 sơđồ khối phận so sánh đầu
Thanh ghi OCR2 ghi vào bộđệm kép sử dụng chế độđiều chế độ rộng xung (PWM) Về chế độ bình thường chếđộđiều khiển CTC , bộđệm kép vơ hiệu hóa Bộđệm kép đồng hóa việc cập nhật ghi so sánh OCR2 lên chuỗi đếm TOP BOTTOM Sự đồng hóa ngăn cản xuất odd-length , xung PWM không đối xứng , làm cho đầu nhiễu sọc ngang
Sự truy nhập ghi OCR2 dường phức tạp , trường hợp Khi mà bộđệm kép kích hoạt , CPU vừa truy nhập vào đệm ghi OCR2 , bộđệm kép bị vơ hiệu hóa CPU truy nhập OCR2 cách trực tiếp
So sánh đầu cưỡng bức
(161)Duykhanh8x1311@gmail.com 161 reload/clear timer , chân OC2 cập nhật ghép so sánh xuất ( việc cài đặt bit COM21:0 xác định trạng thái chân OC2 cài đặt , bị xóa di chuyển )
Sự khóa ghép so sánh bằng việc viết TCNT2
Tất q trình viết lên ghi TCNT2 khóa ghép so sánh mà xuất chu kì xung nhịp tới , dù timer bị dừng lại Đặc điểm cho phép OCR2 khởi tạo giá trị giống TCNT2 mà không khởi động ngắt xung nhịp Timer/Counter kích hoạt
Việc sử dụng bộ phận so sánh đầu
Do việc viết TCNT2 chếđộ điều khiển khóa tất ghép so sánh cho chu kì xung nhịp , có nhiều nguy cơđược kéo theo thay đổi TCNT2 sử dụng kênh so sánh đầu ra, phụ thuộc trạng thái Timer/Counter chạy không Nếu giá trịđược viết lên TCNT2 giá trị OCR2 , ghép so sánh bị lỗi , kết q trình phát dạng sóng khơng xác Một cách tương tự , không viết giá trị TCNT2 giá trị BOTTOM mà bộđếm đếm xuống
Việc cài đặtOC2 nên tiến hành trước việc cài đặt ghi định hướng liệu cho chân cổng lên cổng Cách dễ để cài đặt giá trị OC2 sử dụng bit đầu dò so sánh đầu cưỡng chếđộ bình thường Thanh ghi OC2 giữ giá trị dù thay đổi chế độ phát dạng sóng
Để nhận thấy bit COM21:0 khơng ghi vào bộđệm với giá trị so sánh Việc thay đổi bit COM21:0 tạo ảnh hưởng Bộ phận đầu ghép so sánh
(162)Duykhanh8x1311@gmail.com 162 Các cổng I/O chức chung ghi đè so sánh đầu (OC2) từ máy phát dạng sóng số bit COM21:0 cài đặt Tuy nhiên , chân định hướng OC2 ( đầu đầu vào ) điều khiển ghi định hướng liệu (DDR) cho chân cổng Bit ghi định hướng cho liệu cho chân OC2 (DDR_OC2) phải cài đặt đầu trước giá trị OC2 nhìn thấy cổng Chức cổng ghi đè độc lập chếđộ phát dạng sóng
Thiết kế chân logic so sánh đầu cho phép việc khởi tạo trạng thái OC2 trước đầu kích hoạt Chú ý vài việc cài đặt bit COM21:0 dự trữ cho chếđộđiều khiển Xem bảng miêu tả ghi Timer/Counter 8bit trang 157
Sự phát dạng sóng chếđộ đầu so sánh
Máy phát dạng sóng sử dụng bit CON21:0 theo cách khác chế độ bình thường , CTC , chế độ PWM Cho tất chế độ , việc cài đặt
COM21:0 nói cho máy phát dạng sóng khơng có hành động ghi OC2 tiến hành ghép so sánh Về đầu so sánh hoạt động chế độ PWM tham khảo bảng 65 trang 158 Về chếđộ PWM , tham khảo bảng 66 trang 158, chếđộ PWM pha tham khảo bảng 67 trang 158
(163)Duykhanh8x1311@gmail.com 163 Các chế độ của trình điều khiển
Các chếđộ điều khiển , ví dụ q trình xử lí Timer/Counter chân so sánh đầu , xác định việc kết hợp chếđộ Phát dạng sóng
(WGM21:0) bit chếđộ so sánh đầu (COM21:0) Các bit Chếđộ đầu so sánh khơng ảnh hưởng đến chuỗi đếm bít chế độ phát dạng sóng có ảnh hưởng Các bit COM21:0 điều khiển đầu PWM đảo hay không đảo (PWM đảo không đảo ) Về chếđộ PWM bit COM21:0 điều khiển đầu nên cài đặt , xóa , di chuyển ghép so sánh (xem phần “Compare Match Output Unit “ trang 149
Để biết thêm chi tiết thông tin bộđịnh thời tham khảo hình 68 , hình 69 , hình 70 , hình 71 “các sơđồ bộđịnh thời Timer/Counter” trang 155
Chếđộ bình thường
Chếđộđơn giản trình điều khiển chếđộ normal (WGM21:0=0) Trong chế độ việc định hướng đếm ln ln lên (tăng dần) , khơng có xóa bộđếm tiến hành Bộđểm đơn giản tràn vượt qua giá trị 8bit max (TOP=0xFF) sau khởi động lại từ giá trị bottom (0x00) Trong q trình điều khiển thơng thường,cờ báo tràn Timer/Counter (TOV2) sẽđược cài đặt chu kì xung nhịp timer TCNT2 trở Cờ báo TOV2 trường hợp hành động bit thứ , ngoại trừ việc chỉđược cài đặt , khơng bị xóa Tuy nhiên , kết nối với ngắt tràn Timer mà tự động xóa cờ TOV2 , độ xác Timer tăng lên phần mềm Khơng có trường hợp đặc biệt xét đến chếđộ bình thường , giá trị bộđếm viết thời gian
Clear Timer on Compare Match (CTC) Mode
Trong chế độ CTC (WGM21:0=2) , ghi OCR2 sử dụng đểđiều khiển độ xác bộđếm Trong chếđộ CTC bộđếm bị xóa mà giá trị bộđếm (TCNT2) tương ứng với chân OC2 Chân OC2 xác định giá trị TOP cho bộđếm , thay đổi độ xác Chếđộ cho phép điều khiển tốt tần sốđầu ghép so sánh Nó làm đơn giản trình điều khiển việc đếm biến cố bên
(164)Duykhanh8x1311@gmail.com 164 Một ngắt sinh lần mà giá trị bộđếm tiến đến giá trị TOP việc sử dụng cờ OCF2 Nếu ngắt kích hoạt , chương trình điều khiển ngắt có thểđược sử dụng cho việc cập nhật giá trị TOP Tuy nhiên , việc thay đổi TOP tới giá trịẩn lên BOTTOM mà bộđếm chạy với giá trị bộđếm gộp trước thấp phải thực cách thận trọng từ mà chếđộ CTC khơng có đặc tính bộđệm kép Nếu giá trị ghi lên OCR2 thấp giá trị TCNT2 thời , bộđếm bị lỗi ghép so sánh Bộđếm sau phải đếm đến giá trị cực đại (0xFF) bao quanh giá trị bắt đầu 0x00 trước ghép so sánh xuất
việc phát đầu dạng sóng chế độ CTC , đầu OC2 cài đặt để di chuyển mức logic ghép so sánh việc cài đặt bit chếđộ đầu so sánh lên chế độ di chuyển (COM21:0=1) Giá trị OC2 khơng thể nhìn thấy chân cổng trừ sựđịnh hướng liệu cho chân cài đặt lên đầu Dạng sóng phát có giá trị tần số lớn fOC2=fclk_I/O/2 mà OCR2 cài đặt 0(0x00) Tần số sóng phát xác định cơng thức
Biến N đưa theo tỉ lệ (1 , , 64, 256 , 1024)
Như chế độ normal , cờ báo TOV2 cài đặt chu kì xung nhịp timer mà bộđếm đếm từ giá trị MAX 0x00
Chếđộ fast PWM
Chếđộđiều chếđộ rộng xung nhanh hay fast PWM (WGM21:0=3) cung cấp lựa chọn phát dạng sóng PWM tần số cao Chếđộ fast PWM khác với chế độ
(165)Duykhanh8x1311@gmail.com 165 chế độ fast PWM cao gấp đôi chếđộ PWM pha sử dụng chế độđiều khiển sườn Tần số cao làm cho chếđộ fast PWM phù hợp với sựđiều chỉnh nguồn điện , chỉnh lưu ứng dụng DAC Tần số cao cho phép thành phần vật lí cỡ nhỏ bên ngồi (dây , tụđiện ) , giảm giá thành hệ thống
Trong chế độ fast PWM , bộđếm làm tăng giá trị bộđếm tương ứng với giá trị max Bộđếm sau xóa chu kì xung nhịp Giản đồ thời gian cho chếđộ fast PWM hình 66 Giá trị TCNT2 giản đồ thời gian biểu đồ minh họa cho trình điều khiển sườn đơn Giản đồ bao gồm đầu PWM đảo không đảo Đường thẳng đứng nhỏđánh dấu sườn TCNT2 đưa ghép so sánh OCR2 TCNT2
Cờ báo tràn Timer/Counter (TOV2) cài đặt lần mà bộđếm đạt tới giá trị Max ngắt kích hoạt , chương trình điều khiển ngắt có thểđược sử dụng cho việc cập nhật giá trị
Trong chế độ fast PWM , phận so sánh cho phép trình phát dạng sóng PWM chân OC2 Việc cài đặt bit COM21:0 lên gây đầu PWM không đảo đầu PWM đảo sinh việc cài đặt bit COM21:0 lên (xem bảng 66 trang 158) Giá trị thật OC2 chỉđược nhìn thấy chân cổng sựđịnh hướng liệu cho chân cổng cài đặt đầu Dạng sóng PWM sinh việc cài đặt (hoặc xóa ) ghi OC2 chu kì xung nhịp mà bộđếm bị xóa (thay đổi từ MAX đến BOTTOM)
Tần số PWM cho đầu tính tốn cơng thức : Giá trị biến N theo tỉ lệ xích sau (1, 8, 64 , 256 , 1024)
(166)Duykhanh8x1311@gmail.com 166 Việc cài đặt OCR2 giá trị MAX cho kết giá trị cao không đổi đầu thấp (phụ thuộc vào độ phân cực đầu cài đặt bit COM21:0)
Một tần số (với 50% chu kì tải ) dạng sóng đầu chếđộ fast PWM đạt việc cài đặt OC2 lên cấp logic di chuyển cấp so sánh (COM21:0 = ) Dạng sóng sinh có tần số max fOC2 = fclk_I/O/2 mà OCR2 cài đặt Đặc điểm tương tự di chuyển OC2 chếđộ CTC mode , ngoại trừ đặc điểm bộđệm kép phận đầu so sánh kích hoạt chế độ fast PWM
Chếđộ PWM đúng pha
Chếđộ PWM pha (WGM21:0 = ) cung cấp độ xác cao lựa chọn phát dạng sóng PWM pha Chếđộ PWM pha dựa trình điều khiển sườn Bộđếm đếm lặp lại từ BOTTOM đến MAX sau từ MAX đến BOTTOM Trong chế độđầu so sánh không đảo , đầu so sánh (OC2) bị xóa ghép so sánh TCNT2 OCR2 đếm lên cài đặt ghép so sánh đếm xuống Trong chếđộ so sánh đầu đảo , trình điều khiển bịđảo ngược Chếđộđiều khiển sườn có tần số cực đại q trình điều khiển thấp chếđộđiều khiển sườn đơn Tuy nhiên , đặc tính đối xúng chế độ PWM sườn , chế độ ưa thích cho ứng dụng điều khiển động
(167)Duykhanh8x1311@gmail.com 167 Cờ báo tràn Timer/Counter (TOV2) cài đặt lần bộđếm vươn tới giá trị BOTTOM Cờ ngắt có thê sử dụng để phát ngắt lần bộđếm đạt tới giá trị BOTTOM
Trong chế độ PWM pha , phận so sánh cho phép q trình phát dạng sóng PWM chân OC2 Việc cài đặt bit COM21:0 lên gây đầu PWM không đảo đầu PWM đảo sinh việc cài đặt bit COM21:0 lên (xem bảng 66 trang 158) Giá trị thật OC2 chỉđược nhìn thấy chân cổng sựđịnh hướng liệu cho chân cổng cài đặt đầu Dạng sóng PWM sinh việc cài đặt (hoặc xóa ghi OC2 ghép so sánh OCR2 TCNT2 mà bộđếm tănng lên , việc cài đặt (hoặc xóa )thanh ghi OC2 ghép so sánh OCR2 TCNT2 mà bộđếm giảm Tần số PWM cho đầu sử dụng chếđộ PWM pha tính tốn cơng thức
Giá trị biến N theo tỉ lệ xích sau (1, 8, 64 , 256 , 1024)
Giá trị cực biên ghi OCR2 đưa trường hợp đặc biệt mà việc phát đầu dạng sóng chế độ PWM pha Nếu OCR2 cài đặt BOTTOM, đầu liên tiếp mức thấp cài đặt MAX , đầu tiếp tục mức cao chế độ PWM không đảo Về chế độ PWM đảo đẩu có giá trịđối lập lại
(168)Duykhanh8x1311@gmail.com 168 để đảm bảo tính đối xứng xung quanh BOTTOM Có trường hợp có chuyển đổi mà khơng có ghép so sánh :
- OCR2A chuyển giá trị từ MAX , giống hình 67 Khi giá trị OCR2A MAX , giá trị chân OCn giống kết ghép so sánh đếm xuống Đểđảm bảo tính đối xứng xung quanh BOTTOM , giá trị OCn MAX phải tương ứng với kết ghép so sánh đếm lên - Timer bắt đầu đếm từ giá trị cao OCR2A , lí mà
các lỗi ghép sánh OCn thay đổi cách mà xuất đường lên
Giản đồ thời gian của Timer/Counter
(169)(170)Duykhanh8x1311@gmail.com 170 Sự miêu tả ghi Timer/Counter 8bit
Thanh ghi điều khiển Timer/Counter – TCCR2
Bit – FOC2 : so sánh đầu cưỡng
Bit FOC2 hoạt động bit WGM20 xác định chếđộ PWM Tuy nhiên , đểđảm bảo tính tương thích với thiết bị tương lai , bit phải cài đặt mà TCCR2 ghi hoạt động chế độ PWM Khi viết mức logic lên bit FOC2 , ghép so sánh trung gian bị cưỡng phận phát dạng sóng Đầu OC2 bị thay đổi theo việc cài đặt bit COM21;0 Chú ý bit FOC2 thực đầu dị(strobe) Vì giá trịđược đưa bit COM21:0 mà xác định ảnh hưởng so sánh cưỡng
Một đầu dị FOC2 khơng phát ngắt , khơng xóa Timer chế độ CTC sử dụng OCR2 già trị TOP
Bit FOC2 ln đọc Bit 6,3 – WGM21:0 : chế độ phát dạng sóng
Các bit điều khiển chuỗi đếm bộđếm , nguồn cho giá trịđếm cực đại TOP , loại mà phát dạng sóng sử dụng Các chếđộđiều khiển hỗ trợ phận Timer/Counter : Chế độ Normal , chếđộ CTC , loại chế độđiều chếđộ rộng xung PWM , xem bảng 64 “các chếđộ điều khiển “ trang 150
Bit 5:4 – COM21:0 : chế độđầu ghép so sánh
Các bit điều khiển chân xử lí so sánh đầu (OC2) Nếu bit
COM21:0 cài đặt , đầu OC2 ghi đè lên cổng chức thông thường chân I/O mà nối đến Tuy nhiên , ý bit ghi định hướng liệu (DDR) tương ứng đến chân OC2 phải cài đặt theo thứ tự kích hoạt bộđiều khiển đầu
Khi OC2 nối với chân , chức bit COM21:0 phụ thuộc vào việc cài đặt bit WGM21:0 Bảng 65 chức bit COM21:0 bit
(171)Duykhanh8x1311@gmail.com 171 Bảng 66 bit chức COM21:0 mà bit WGM21:0 cài đặt chế độ fast PWM
Bảng 67 chức bit COM21:0 mà bit WGM21:0 cài đặt chế độ PWM pha
Bit 2:0 – CS22 : lựa chọn xung nhịp
(172)Duykhanh8x1311@gmail.com 172 Nếu chế độ chân ngồi sử dụng cho Timer/Counter việc chuyển đổi chân T2 khóa bộđếm dù chân cấu đầu Đặc điểm cho phép phần mềm điều khiển việc đếm
Thanh ghi Timer/Counter – TCNT2
Thanh ghi Timer/Counter đưa truy cập trực tiếp , hai trình đọc ghi lên bộđếm Timer/Counter bit Việc viết ghi TCNT2 khóa (gỡ bỏ ) ghép so sánh xung nhịp Quá trình sửa đổi bộđếm (TCNT2) bộđếm chạy , đưa nguy lỗi ghép so sánh ghi TCNT2 OCR2
Thanh ghi so sánh đầu – OCR2
Thanh ghi so sánh đầu bao gồm giá trị 8bit mà so sánh cách liên tục với giá trị bộđếm (TCNT2) Một ghép sử dụng để sinh ngắt so sánh đầu , phát đầu dạng sóng chân OC2
Thanh ghi che ngắt Timer/Counter - TIMSK
Bit – OCIE2 : kích hoạt ngắt ghép so sánh đầu Timer/Counter
Khi bit OCIE2 ghi , bit I ghi trạng thái đặt , ngắt ghép so sánh Timer/Counter kích hoạt Ngắt tương ứng thực thi ghép so sánh Timer/Counter xuất ví dụ bit OCF2 cài đặt ghi cờ báo ngắt Timer/Counter – TIFR
Bit – TOIE2 : kích hoạt ngắt tràn Timer/Counter2
(173)Duykhanh8x1311@gmail.com 173 Thanh ghi cờ báo ngắt Timer/Counter – TIFR
Bit – OCF2 : cờ ghép so sánh
Bit OCF2 cài đặt ghép so sánh xuất Timer/Counter liệu OCR2 – ghi so sánh đầu OCF2 bị xóa phần cứng trình thực thi vecto điều khiển ngắt tương ứng Như lựa chọn , OCF2 bị xóa việc viết mức logic lên cờ Khi mà bit I SREG , OCIE2 ( kích hoạt ngắt ghép so sánh Timer/Counter2) OCF2 đặt , ngắt ghép so sánh
Timer/Counter thực thi
Bit – TOV2 : cờ báo tràn Timer/Counter
(174)Duykhanh8x1311@gmail.com 174 XV Khối module so sánh đầu (OCM1C2) – Output Compare Modulator
Tổng quát
Module so sánh đầu (OCM) cho phép q trình phát sinh sóng điều chế với tần số mang Bộđiều chế sử dụng đầu từ phận so sánh đầu C Timer/Counter1 -16bit phận so sánh đầu Timer/Counter2- 8bit Để biết thêm chi tiết Timer/Counter xem “16bit Timer/Counter (Timer/Counter Timer/Counter )” trang 112 Timer/Counter2 – 8bit với chếđộ PWM “ trang 146 Chú ý đặc điểm khơng khả dụng chếđộ tương thích với Atmega 103
Khi bộđiều chế kích hoạt , kênh so sánh đầu điều chế sơđồ khối (hình 72)
Miêu tả
(175)Duykhanh8x1311@gmail.com 175 Khi mà bộđiều chế kích hoạt loại điều chế (các biến logic And Or ) có thểđược lựa chọn ghi PORTB7 Chú ý ghi DDRB7 điều khiển hướng cổng phụ thuộc vào việc cài đặt bít COMnx1 :0
Ví dụ về giản đồ thời gian : Timing Example
Hình 74 minh họa bộđiều chế đăng hoạt động Trong ví dụ Timer/Counter cài đặt đểđiều khiển chế độ Fast PWM ( không đảo) Timer/Counter sử dụng chế độ phát xung CTC với chế độđầu so sánh di chuyển (Bít COMnx1 :0 = )
Trong ví dụ , Timer/Counter cung cấp sóng mang , tín hiệu điều chếđược sinh phận so sánh đầu C Timer/Counter
(176)Duykhanh8x1311@gmail.com 176 chu kì xung nhịp dài thời gian cao chu kì thứ , kết thu cổng PB7 chu kì đầu
(177)Duykhanh8x1311@gmail.com 177 XVI Giao diện ngoại vi nối tiếp Serial peripheral interface – SPI
Giao diện ngoại vi nối tiếp (SPI) cho phép chuyển liệu đồng tốc độ cao giao Atmega128 thiết bị ngoại vi nhiều thiết bị AVR với Giao diện ngoại vi nối tiếp (SPI) bao gồm đặc điểm
- Full duplex (Truyển song công ) , chuyển liệu đồng dây (Three wire)
- Chếđộđiều khiển Master / Slave
- Chuyển liệu MSB First LSB First - bít rate lập trình
- Cờ ngắt cuối chế độ truyền tải - Write Collision Flag Protection - Đánh thức khỏi chếđộ chờ Idle
- Chếđộ SPI Master (CK/2 ) Tốc độ kép
(178)Duykhanh8x1311@gmail.com 178 chu kì giao tiếp mà có sườn xung xuống Slave lựa chọn chân SS Derised Slave Master Slave chuẩn bị liệu để gửi vào ghi Shift tương ứng chúng , master sinh xung nhịp cần thiết nhánh SCK chuyển tiếp liệu Dữ liệu chuyển từ Master sang Slave đầu Master Out -> đầu vào Slave In , MOSI , nhánh , từ Slave đến Master chân Master In -> Slave Out , MISO , line Sau gói liệu , Master đồng hóa với Slave xung cao lựa chọn Slave , Bít SS , Line
Khi cấu Master , giao diện SPI khơng có tự động điều khiển đường SS Việc phải điều khiển phần mềm người sử dụng trước trình giao tiếp bắt đầu Khi thực việc viết Byte lên ghi liệu SPI khởi động tạo xung nhịp SPI phần cứng di chuyển bít liệu vào Slave Sau di chuyển Byte , tạo xung nhịp SPI dừng lại , việc cài đặt cờ báo kết thúc trình chuyển liệu (SPIF) Nếu ngắt SPI kích hoạt bít (SPIE ) ghi SPCR cài đặt , ngắt truy vấn Master tiếp tục chuyển byte liệu việc viết vào SPDR tín hiệu kết thúc gói liệu xung cao Slave lựa chọn , nhánh SS Byte đến cuối giữở bộđệm ghi cho lần sử dụng cuối
Khi cấu Slave , giao diện SPI remain sleeping với trạng thái MISO cần chân SS điều khiển mức cao Trong trạng thái , phần mềm cập nhật ghi liệu SPI – SPDR , liệu không dy chuyển xung nhịp đến chân SCK chân SS điều khiển mức thấp byte vừa hoàn thành di chuyển cờ báo kết thúc di chuyển SPIF cài đặt
Nếu ngắt SPI kích hoạt bít SPIE ghi SPCR cài đặt , ngắt yêu cầu Slave tiếp tục đặt liệu để gửi vào ghi SPDR trước trình đọc liệu đến tiếp tục Byte đến cuối đệm ghi sau lần sử dụng
(179)Duykhanh8x1311@gmail.com 179 tựđã đến phải đọc từ ghi liệu SPI trước kí tự di
chuyển vào hồn tồn Nói cách khác bít bị
Trong chế độ SPI Slave trình điều khiển logic lấy mẫu tín hiệu đến chân SCK đểđảm bảo việc lấy mẫu xác tín hiệu xung nhịp mức thấp cực tiểu mức cao chu kì nên :
- Chu kì thấp : ngắn lần chu kì xung nhịp CPU - Chu kì cao : dài lần chu kì xung nhịp CPU
Khi mà SPI kích hoạt , hướng liệu chân MOSI , MISO ,SCK , SS ghi đè theo bảng 69 để biết thêm chi tiết cổng tự động ghi đè tham khảo phần Alternate Port Function trang 71
(180)(181)
Duykhanh8x1311@gmail.com 181 Chức năng của chân SS
Chếđộ Slave
Khi SPI cấu Slave , chân lựa chọn Slave (SS) ln ln đầu vào Khi SS mức thấp SPI kích hoạt MISO trở thành đầu cấu hình người sử dụng Tất chân khác đầu vào Khi SS điều khiển mức cao , tất đầu vào chấp nhận MISO mà người sử dụng cấu đầu SPI bịđộng , điều nghĩa khơng nhận tín hiệu đến Chú ý SPI reset lần chân SS mức cao
Chân SS hữu dụng cho việc đồng hóa gói bít để giữ bít Slave bộđến dị với tạo xung nhịp Master Khi mà chân SS mức cao , SPI Slave Reset để gửi nhận giá trị Logic , thả phần liệu đến vào ghi Shift
(182)Duykhanh8x1311@gmail.com 182 Chếđộ Master
Khi SPI cấu Master (Bit MSTR ghi STCR cài đặt = ) người sử dụng xác định hướng cổng SS
Nếu chân SS cấu đầu chân đầu chung mà không gây ảnh hưởng đến hệ thống SPI Thông thường chân sẽđược điều khiển chế độ SPI Slave
Nếu SS cấu đầu vào , phải giữở mức cao để đảm bảo cho trình điều khiển SPI Master Nếu SS điều khiển mức thấp mạch ngoại vi mà SPI cấu Master với chân SS xác định , hệ thống SPI biên dịch điều Master khác lựa chọn SPI Slave khởi động để gửi liệu vào Để tránh việc tranh giành bus , hệ thống SPI tạo hành động
- Bit MSTR ghi STCR bị xóa hệ thống SPI trở thành Slave Như kết việc SPI trở thành Slave chân MOSI SCK trở thành đầu vào
- Cờ SPIF ghi SPSR cài đặt , ngắt SPI kích hoạt , bít I SREG cài đặt chương trình phục vụ ngắt thực thi
Vì , ngắt điều khiển trình chuyển liệu SPI sử dụng chế độ Master , ởđó khả tồn chân SS mức thấp , ngắt nên luôn kiểm tra xem bít MSTR cài đặt hay khơng Nếu bít MSTR vừa bị xóa chân lựa chọn chế độ Slave (Slave Select ) , phải cài đặt người sử dụng để kích hoạt lại chếđộ SPI Master
Thanh ghi điều khiển SPI_SPCR
Bít 7_SPIE : kích hoạt ngắt SPI
Bít gây gây ngắt SPI để thực thi bít SPIF ghi SPSR đặt bít kích hoạt chung ghi SREG đặt
Bít 6_SPE : kích hoạt SPI
Khi bít SPE SPI kích hoạt Bít phải cài đặt để kích hoạt trình điều khiển SPI
Bít 5_DODR : thứ tự liệu
Khi bít DODR ghi LSB (bít thấp nhất) từ liệu (data word ) di chuyển
Khi bít DODR MSB (bít cao nhất) từ liệu (data word ) di chuyển
(183)Duykhanh8x1311@gmail.com 183 Bít lựa chọn chế độ Master SPI ghi chế độ Slave SPI ghi Nếu chân SS cấu đầu vào điều khiển mức thấp bít MSTR cài đặt MSTR bị xóa bít SPIF ghi SPSR cài đặt Người sử dụng sau phải cài đặt bít MSTR để kích hoạt lại chế độ SPI Master
Bít 3_CPOL : Clock polarity
Khi bít viết , SCK mức cao chếđộ Idle Khi CPOL viết SCK mức thấp bận Tham khảo hình 77 78 ví dụ Chức CPOL liệt kê chi tiết bên
Bít 2_CPHA : Pha xung nhịp
Việc cài đặt bít CPHA xác định liệu lấy mấu sườn sườn cuối SCK Tham khảo hình 77 , 78 Chức CPHA liệt kê bên
Bít 1,0_SPR1,SPR0 : lựa chọn tốc độ xung nhịp SPI
Hai bít điều khiển tốc độ SCK thiết bịđược cấu Master SPR1 SPR0 khơng có hiệu lực chế độ Slave Sự liên quan SCK tần số xung nhịp tạo giao động fOCS bảng đầy
(184)Duykhanh8x1311@gmail.com 184 Thanh ghi trạng thái SPI
Bít 7_SPIF : Cờ ngắt SPI
Khi chuyển dịch nối tiếp hoàn thành, cờ SPIF cài đặt Một ngắt sinh SPIE ghi SPCR cài đặt ngắt chung kích hoạt Nếu SS đầu vào điều khiển mức thấp mà SPI chế độ Master , điều cài đặt cờ SPIF SPIF bị xóa phần cứng mà thực thi Vector điều khiển ngắt tương ứng Như lựa chọn , bít SPIF bị xóa q trình đọc ghi trạng thái SPI với SPIF cài đặt , sau việc truy nhập vào ghi SPI (SPDR )
Bít 6_WCOL : Viết cờ Collision
Bít WCOL cài đặt ghi liệu SPI (SPDR) viết suốt q trình chuyển đổi liệu Bít WCOL (và bít SPIF ) bị xóa q trình đọc ghi trạng thái SPI với WCOL cài đặt sau truy nhập vào ghi trạng thái SPI
Bít 5…1_RES : bít dự trữ
Các bít bít dự trữ Atmega128 luôn đọc
Bít 0_SPI2X : Bít tốc độ SPI kép
Khi bít ghi , tốc độ SPI (tần số SCK) sẽđược gộp lại mà SPI chế độ Master (xem bảng 72) Điều có nghĩa chu kì SCK cực tiểu lần chu kì xung nhịp CPU Khi SPI cấu Slave , SPI chỉđảm bảo để làm việc tần số fOSC /4 thấp
Giao điện SPI Atmega 128 sử dụng cho nhớ chương trình việc download upload liệu EEPROM Xem bảng 300 để them chi tiết phần lập trình nối tiếp SPI xác minh (Verification )
Thanh ghi dữ liệu SPI_SPDR
Thanh ghi liệu SPI ghi Read Write sử dụng cho việc chuyển liệu file đăng kí ghi Shift SPI việc ghi lên ghi bắt đầu trình chuyển liệu Việc đọc ghi gây lên việc bộđệm liệu đếm ghi Shift đọc
Các chế độ dữ liệu
(185)(186)Duykhanh8x1311@gmail.com 186
XVII USART
Bộ chuyển phát thu nhận nối tiếp đồng dị vạn ( Uinversal
Synchronous and Asychronous serial Receiver and Transmitter – USART thiết bị truyền thơng nối tiếp có độ linh hoạt cao Các đặc điểm :
- Hoạt động song công (full duplex) ( phụ thuộc vào ghi chuyển phát thu nhận nối tiếp )
- Hoạt động đồng dị
- Hoạt động đồng hóa khóa Master Slave - Máy phát tốc độ Baud độ xác cao
- Hỗ trợ truyền khung nối tiếp với ,6 ,7, bit liệu bit stop
- Sự tạo bậc chẵn lẻ hỗ trợ kiểm tra tính chẵn lẻ phần cứng - Sự dò tràn liệu
- Dò lỗi khung truyền
- Bộ lọc dải thấp kĩ thuật số dò bit khởi động lỗi bao gồm lọc nhiễu - ngắt riêng biệt trọn TX , trống ghi liệu TX , trọn RX - Chếđộ truyền thông nhiều sử lý
- Chếđộ truyền thông dị tốc độ kép
USART kép – Dual USART
Atmega 128 có USART , USART0 USART1 Chức hai USART miêu tả bên USART0 USART1 có ghi I/O khác phần “Register Summary “ trang 362 Chú ý chếđộ tương thích với Atmega 103 , USART1 khơng khả dụng , có ghi UBRR0H UCRS0C Điều có nghĩa chế độ tương thích với Atmega 103 , Atmega 128 hỗ trợ trình điều khiển dị USART0 Tổng quan
(187)(188)Duykhanh8x1311@gmail.com 188 AVR USART AVR UART – chếđộ tương thích
USART tương thích đầy đủ với AVR UART bất chấp : - Địa bit bên ghi USART
- Sự phát Baud Rate
- Chức bộđệm chuyển phát - Quá trình thu nhận tín hiệu
Tuy nhiên , bộđệm thu nhận có cải tiến ảnh hưởng đến tương thích vài trường hợp đặc biệt :
- ghi bộđệm thứ vừa thêm vào ghi bộđệm hoạt động bộđệm FIFO vòng tròn Vì UDR phải đọc lần cho liệu đến Quan trọng cờ báo lỗi (FE DOR) bit liệu thứ (RXB8) ghi vào bộđệm vói liệu bộđệm thu tín hiệu Vì bit trạng thái phải ln đọc trước ghi UDR đọc Nói cách khác trạng thái lỗi trạng thái bộđệm bị
- ghi Shift thu có thểđóng vai trị mức đệm thứ Điều thực việc cho phép liệu đến tới vị trí cịn lại ghi Shift nối tiếp (xem hình 79 ) Nếu ghi bộđệm bịđầy , bit khởi động tìm USART điều kiện chống tràn liệu (DOR) bền vững
Các bit điều khiển thay đổi tên , có chức giống địa ghi :
- CHR9 đổi thành UCSZ2 - OR đổi thành DOR Quá trình phát xung nhịp
(189)Duykhanh8x1311@gmail.com 189 Sự miêu tả tín hiệu :
- txclk : xung nhịp chuyển phát (tín hiệu bên )
- rxclk : xung nhịp thu nhận tín hiệu (tín hiệu bên ) - xcki : đầu vào từ chân XCK (tín hiệu bên ) Được sử dụng cho
trình điều khiển slave đồng
- xcko : xung nhịp đầu tới chân XCK (tín hiệu bên ) Được sử dụng cho trình điều khiển đồng
- fosc : tần số chân XTAL ( xung nhịp hệ thống ) Sự phát xung nhịp bên – máy phát Baud rate
Sự phát xung nhịp bên sử dụng cho chế độ master đồng hóa dị q trình điều khiển Sự miêu tả phần tham khảo hình 80
Thanh ghi Baud rate USART (UBRR) bộđếm xuống kết nối với tới cổng chức bộđếm gộp trước lập trình máy phát baud rate Bộđếm xuống (down – counter), chạy tần số xung nhịp hệ thống (fOCS) , tải với giá trị UBRR lần mà bộđếm vừa đếm xuống đến ghi UBRRL ghi xung nhịp phát lần mà bộđếm đạt đến giá trị Xung nhịp đầu máy phát baud rate (=fOSC/UBRR+1) Bộ chuyển phát chia đầu xung nhịp máy phát baud rate thành 2, , 16 phụ thuộc vào chếđộ Đầu máy phát Baud rate sử dụng cách trực tiếp xung nhịp thu nhận phận khôi phục liệu Tuy nhiên , phận khôi phục liệu sử dụng state machine mà sử dụng , 8, 16 trạng thái phụ thuộc vào chếđộđược cài đặt trạng thái bit UMSEL , U2X DDR_XCK
(190)Duykhanh8x1311@gmail.com 190 Vài ví dụ giá trị UBRR cho vài tần số xung nhịp hệ thống tìm bảng 82 (Xem bảng 194)
Quá trình điều khiển tốc độ kép (U2X)
Tốc độ chuyển liệu nhân đôi việc cài đặt bit U2X ghi UCSRA Việc cài đặt bit gây ảnh hưởng cho trình điều khiển dị Cài đặt bit sử dụng chế độđiều khiển đồng
Việc cài đặt bit giảm ước chia chia baud rate từ 16 xuống , nhân đôi cách hiệu tốc độ truyền liệu cho chếđộ truyền thông không đồng Tuy nhiên ý thu tín hiệu trường hợp sử dụng nửa lấy mẫu (giảm từ 16 xuống ) cho việc lấy mẫu liệu khơi phục xung nhịp , việc cài đặt baud rate xác xung nhịp hệ thống cần thiết mà chếđộ chế độ sử dụng Về chuyển đổi , khơng có downside Xung nhịp bên ngồi
Xung nhịp bên sử dụng trình điều khiển slave đồng Sự miêu tả phần tham khảo hình 80 để biết thêm chi tiết
(191)Duykhanh8x1311@gmail.com 191 Chú ý fOSC phụ thuộc vào độ ổn định nguồn phát xung nhịp hệ thống Vì khuyến cáo để thêm vào vài biên để tránh mát biến thiên tần số liệu
Diều khiển xung nhịp một cách đồng bộ
Khi chếđộđồng bộđược sử dụng (UMSEL =1) , chân XCK sẽđược sử dụng đầu vào xung nhịp (slave ) đầu xung nhịp (Master) Sự phụ thuộc sườn xung lấy mẫu liệu thay đổi liệu giống Nguyên tắc mà liệu đầu vào (on RxD ) lấy mẫu vị trí đối diện sườn xung XCK sườn đầu vào liệu(TxD) bị thay đổi
Các bit UCPOL Bit UCRSC lựa chọn mà sườn xung XCK sử dụng cho việc lấy mẫu liệu mà sử dụng để thay đổi liệu Như hình 81 , UCPOL liệu bị thay đổi sườn lên xung XCK lấy mẫu sườn xuống xung XCK Nếu UCPOL cài đặt , liệu bị thay đổi sườn xuống xung XCK lấy mẫu sườn lên xung XCK Các dạng khung dữ liệu – Frame Formats
Một loạt khung xác định kí tự bit liệu với bit bộđồng hóa (các bit start stop ) , lựa chọn bit chẵn lẻ cho việc kiểm tra lỗi USART chấp nhận tất 30 kết hợp dạng khung có hiệu lực
- bit start
- ,6 ,7 ,8 bit liệu
- Khơng có , có bit chẵn lẻ - bit stop
(192)Duykhanh8x1311@gmail.com 192 bit stop Khi khung hoàn thành chuyển , có thểđược dẫn theo khung , đường giao tiếp có thểđược cài đặt trạng thái Idle (high )
Hình 82 minh họa kết hợp dạng khung truyền Các bit ngoặc để lựa chọn
St bít start , ln ln mức thấp (n) bit liệu (từ đến )
P bit chẵn lẻ lẻ chẵn Sp bit Stop , mức cao
IDLE : khơng có q trình chuyển phát đường giao tiếp liệu (RxD TxD) Một đường IDLE phải mức cao
Dạng khung truyền sử dụng USART cài đặt bit UCSZ2:0, UPM1:0 bit USBS ghi UCSRB UCSRC Bộ thu nhận chuyển phát sử dụng cài đặt giống Chú ý việc thay đổi cài đặt bit số bit làm hỏng tất giao tiếp tiến hành thu nhận chuyển phát
Các bit kích cỡ kí tự USART lựa chọn số lượng bit liệu khung Các bit Chếđộ USART tương đương (UPM1:0) kích hoạt cài đặt loại bit chẵn lẻ Sự lựa chọn bit Stop thực bit lựa chọn bit Stop (USBS) Bộ thu nhận bỏ qua bit stop thứ hai Một lỗi khung truyền (FE) chỉđược tìm khung nơi mà bit stop
Sự tính tốn bit chẵn lẻ - Parity Bit Calculation
Bit chẵn lẻ tính tốn việc exclusive-or tất bit liệu Nếu bit lẻđược sử dụng, kết trình exclusive-or bịđảo ngược Sự liên quan bit chẵn lẻ bit liệu bên :
Peven bit chẵn lẻ sử dụng bậc chẵn Podd bit chẵn lẻ sử dụng bậc lẻ dn bit liệu n chuỗi kí tự
(193)Duykhanh8x1311@gmail.com 193 Sự khởi tạo USART
USART phải khởi tạo trước giao tiếp xảy Quá trình khởi tạo thơng thường bao gồm việc cài đặt baud rate , việc cài đặt dạng khung kích hoạt thu nhận chuyển phát phụ thuộc vào yêu cầu sử dụng Về hoạt động ngắt điều khiển USART , cờ báo ngắt chung nên bị xóa (và ngắt chung bị vơ hiệu hóa ) q trình khởi tạo
Trước thực khởi tạo lại với baud rate thay đổi dạng khung truyền khác , phải đảm bảo khơng có q trình truyền phát tiến hành suốt giai đoạn mà ghi bị thay đổi Cờ TXC sử dụng để kiểm tra chuyển phát vừa hoàn thành tất di chuyển , cờ RXC có thểđược sử dụng để kiểm tra khơng có liệu chưa đọc đệm thu nhận Chú ý cờ TXC phải xóa trước trình truyền liệu(trước UDR ghi ) sử dụng cho chức
(194)Duykhanh8x1311@gmail.com 194 Sự truyền dữ liệu – bộ chuyển phát USART
Một chuyển phát USART kích hoạt việc cài đặt bit kích hoạt di chuyển (TXEN) ghi UCSRB Khi chuyển phát kích hoạt , chế độ điều khiển cổng bình thường chân TxD bị ghi đè USART đưa chức cổng nối tiếp chuyển phát Baud rate , chế độđiều khiển dạng khung truyền phải cài đặt lên lần trước thực trình truyền liệu Nếu chế độđiều khiển đồng bộđược sử dụng , xung nhịp chân XCK bị ghi đè sử dụng xung nhịp trình truyền liệu Việc gửi khung với dến bit dữ liệu
Một trình truyền liệu khởi tạo việc tải bộđệm phát với liệu phát CPU tải bộđệm liệu việc viết lên vùng I/O UDR Dữ liệu ghi vào bộđệm bộđệm phát bị di chuyển vào ghi Shift mà ghi Shift sẵn sàng để gửi khung Thanh ghi Shift tải với liệu trạng thái Idle(khơng có chuyển phát liệu tiến hành ) sau bit stop cuối khung trước phát Khi ghi Shift tải với liệu mới, phát khung truyền hoàn chỉnh tốc độ đưa ghi baud , bit U2X XCK phụ thuộc vào chếđộ điều khiển sử dụng
(195)Duykhanh8x1311@gmail.com 195 Chức đơn giản đợi bộđệm phát trở nên trống việc kiểm tra cờ UDRE , trước tải với liệu phát Nếu ngắt báo trống ghi liệu sử dụng , chương trình phục vụ ngắt viết liệu lên bộđệm
Việc gửi khung với bit dữ liệu
(196)Duykhanh8x1311@gmail.com 196 Bit thứ sử dụng cho việc hiển thị khung địa sử dụng chế độ giao tiếp nhiều vi xử lí cho giao thức điều khiển khác trình đồng hóa
Cờ báo ngắt của bộ chuyển phát
Các chuyển phát USART có cờđể hiển thị trạng thái : báo trống ghi liệu USART (UDRE) hoàn thành trình chuyển phát (TXC) Cả hai cờ sử dụng cho việc sinh ngắt
(197)Duykhanh8x1311@gmail.com 197 Khi cờ báo ngắt trống ghi liệu kích hoạt (UDRIE) UCSRB ghi , ngắt trống ghi liệu USART thực thi cần UDRE cài đặt( cung cấp ngắt chung cài đặt ) UDRE bị xóa việc viết UDR Khi ngắt điều khiển chế độ chuyển phát sử dụng, chương trình phục vụ ngắt báo trống ghi liệu phải viết giá trị lên UDR để xóa UDRE vơ hiệu hóa ngắt báo trống ghi liệu , nói cách khác ngắt xuất lần mà ngắt kết thúc
Bit cờ báo hoàn thành chuyển phát (TXC) đặt mà khung truyền trọn vẹn ghi chuyển phát Shift vừa di chuyển ngồi khơng có ngắt hành đưa bộđệm chuyển phát bit Cờ TXC tựđộng xóa mà ngắt hồn thành chuyển phát thực thi , bị xóa việc viết lên bit địa Cờ TXC có ích giao diện truyền thông bán song công (giông chuẩn RS485) , ởđó ứng dụng chuyển phát phải đăng nhập vào chế độ nhận giải phóng bus truyền thơng sau hồn thành q trình chuyển phát
Khi bit kích hoạt ngắt hoàn thành chuyển phát (TXCIE) ghi UCSRB cài đặt , ngắt hoàn thành chuyển phát USART sẽđược thực thi mà cờ TXC trở thành cài đặt , (được cung cấp mà ngắt chung kích hoạt ) Khi ngắt hồn thành trình chuyển phát sử dụng , chương trình điều khiển ngắt khơng phải xóa cờ TXC , điều thực cách tự động
Parity Generator (Máy phát chẵn lẻ )
Máy phát chẵn lẻ tính tốn bit chẵn lẻ cho khung truyền liệu nối tiếp Khi mà bit chẵn lẻ kích hoạt (UPM1=1) , logic điều khiển chuyển phát chèn bit chẵn lẻ bit liệu cuối bit stop khung truyền mà gửi
Sự vơ hiệu hóa chuyển phát
Sự vơ hiệu hóa q trình chuyển phát (cài đặt TXEN ) khơng có hiệu lực trình chuyển phát chạy chờđược hồn thành ví dụ : mà ghi shift chuyển phát ghi bộđệm chuyển phát không bao gồm liệu chuyển phát Khi vơ hiệu hóa , chuyển phát khơng ghi đè lên chân TxD
Sự thu nhận dữ liệu – bộ thu USART
(198)Duykhanh8x1311@gmail.com 198 phải cài đặt lần trước thu nhận nối tiếp thực Nếu chế độđồng hóa sử dụng , xung nhịp chân XCk sẽđược sử dụng xung chuyển phát
Sự thu nhận khung truyền với đến bit dữ liệu
Bộ thu phát bắt đầu trình nhận liệu mà dị thấy bit khởi động có hiệu lực Mỗi bit mà theo sau bit khởi động sẽđược lấy mẫu baud rate xung nhịp XCK , chuyển vào ghi di chuyển nhận bit stop khung nhận bít stop thứ bị bỏ qua thu nhận Khi bit stop nhận ví dụ : khung nối tiếp hồn chỉnh đưa ghi di chuyển nhận , phần ghi shift bị di chuyển vào bộđệm nhận Bộđệm nhận đọc sau việc đọc vùng nhớ vào UDR
Đoạn code mẫu thu nhận USART đơn giản chức xây dựng sở việc hỏi vòng (Polling) cờ báo hoàn thành chuyển phát (RXC) Khi sử dụng khung truyền với bít , bit có trọng số cao liệu đọc từ UDR che lên USART khởi tạo trước chức sử dụng
Sự thu nhận khung với bit dữ liệu
(199)Duykhanh8x1311@gmail.com 199 áp dụng lên cờ báo trạng thái FE, DOR ,và UPE tốt Đọc trạng thái từ UCSRA , sau liệu từ UDR Việc đọc vùng địa nhớ UDR thay đổi trạng thái đệm nhận FIFO làcác bit TXB8 , FE , DOR , UPE , tất cảđược lưu trữ FIFO bị thay đổi
(200)Duykhanh8x1311@gmail.com 200 Ngắt cờ báo hoàn thành nhận
Bộ nhận USART có cờ mà hiển thị trạng thái nhận tín hiệu
Cờ báo hồn thành việc nhận tín hiệu ( RXC) hiển thị có liệu không đọc đưa bộđệm nhận Cờ liệu không đọc xuất bộđệm nhận , bộđệm nhận trống (ví dụ khơng chứa liệu không đọc ) Nếu thu nhận bị vơ hiệu hóa (RXEN = ) bộđệm thu nhận bị xóa bit RXC trở thành
Khi mà bit kích hoạt ngắt hoàn thành nhận(RXCIE) ghi UCSRB cài đặt , ngắt hoàn thành nhận USART thực thi cân cờ RXC cài đặt (được cung cấp ngắt chung kích hoạt ) Khi ngắt điều khiển nhận liệu sử dụng , chương trình hồn thành nhận phải đọc liệu đến từ UDR để xóa cờ RXC , nói cách khác ngắt xuất lần mà chương trình phục vụ ngắt hồn thành
Cờ báo lỗi nhận tín hiệu
Bộ nhận USART có cờ báo lỗi : lỗi khung truyền (FE) , báo tràn liệu (DOR) báo lỗi chẵn lẻ (UPE) Tất truy cập cach đọc ghi UCSRA Thông thường cờ báo mà chúng đặt bộđệm nhận với khung truyền cho trạng thái lỗi chúng hiển thị Dù cho bộđệm cờ báo lỗi , UCSRA phải đọc trước bộđệm nhận (UDR), việc đọc vùng địa I/O UDR thay đổi bộđệm đọc vùng liệu Sự tương đương khác cho cờ báo lỗi mà chúng bị thay đổi phần mềm thực trình viết lên vùng địa cờ báo Tuy nhiên , tất cờ phải cài đặt mà UCSRA viết cho tương thích phía sau cài đặt USART tương lai Khơng có cờ báo lỗi sinh ngắt
Cờ báo lỗi khung truyền (FE) hiển thị trạng thái bit STOP khung truyền đọc lưu trữ bộđệm nhận Cờ FE bit Stop không đọc (như ) , cờ báo FE bit stop không (0) Cờ sử dụng cho việc dị điều kiện out-of-sync , dò điều kiện break , giao thức điều khiển Cờ FE không bịảnh hưởng việc cài đặt bit USBS ghi UCSRC thu nhận bỏ qua tất , ngoại trừ bit bit Stop Để tương thích với thiết bị tương lai , cài đặt bit đọc UCSRA