CÁC ĐẶC TÍNH:Hiệu năng cao, tiêu thụ năng lượng ít Kiến trúc RISC 130 lệnh, hầu hết các lênh thực hiện trong một chu kỳ 32 Thanh ghi 8-bit đa năng Tốc độc thực hiện lên tới 16 triệu lệnh
Trang 1CHƯƠNG 1: VI ĐIỀU KHIỂN AVR_ATMEGA16
Loại vi điều khiển họ AVR RISC là do công ty Atmel sản suất, với kiến trúc RISC(Reduce Instruction Set Computer)
Hoạt động với chu kỳ xung nhịp cao, có thể lên đến 20 MHz tuỳ thuộc từngloại chip cụ thể
Bộ nhớ chương trình và bộ nhớ dữ liệu được tích hợp ngay trên chip
Khả năng lập trình được trong hệ thống, có thể lập trình được ngay khi đangđược cấp nguồn trên bản mạch không cần phải nhấc chip ra khỏi bản mạch
Hỗ trợ cho việc lập trình bằng ngôn ngữ bậc cao – ngôn ngữ C
Trang 21.2 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN ATMEGA16
Trang 3
1.3 CÁC ĐẶC TÍNH:
Hiệu năng cao, tiêu thụ năng lượng ít
Kiến trúc RISC
130 lệnh, hầu hết các lênh thực hiện trong một chu kỳ
32 Thanh ghi 8-bit đa năng
Tốc độc thực hiện lên tới 16 triệu lệnh trong 1 giây với tần số 16 MHz
Có 2 bộ nhân, mỗi bộ thực hiện trong thời gian 2 chu kỳ
Các bộ nhớ chương trình và dữ liệu cố định
16 Kb bộ nhớ flash có khả năng tự lập trình trong hệ thống
Có thể thực hiện được 1.000 lần ghi/xoá
512 bytes EEFROM
Có thể thực hiện 100.000 lần ghi /xoá
1Kb SRAM bên trong
Lập trình khoá an ninh phần mềm
Ghép nối ngoại vi
2 bộ định thời/ bộ đếm 8 bit với các chế độ tỷ lệ định trước và chế độ so sánh
1 bộ định thời/ bộ đếm 16 bit với các chế độ tỷ lệ định trước riêng biệt, chế độ
so sánh và chế độ bắt giữ
Bộ thời gian thực với bộ tạo dao động riêng biệt
6 kênh PWM
8 kênh, ADC 10 bit
Giao diện nối tiếp 2 dây hướng tới byte
Bộ truyền tin nối tiếp USART khả trình
Giao diện SPI chủ / tớ
Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt
Các đặc điểm đặc biệt khác
Power-on Reset và dò Brown-out khả trình
Bộ tạo dao động được định cỡ bên trong
Các nguồn ngắt bên trong và bên ngoài
5 chế độ ngủ: Nhàn rỗi, giảm ồn ADC, tiết kiệm năng lượng, giảm năng lượngtiêu thụ, chờ
I/O và các loại: 32 đường I/O khả trình
Điện áp hoạt động: 4.5- 5.5 V
Trang 41.4 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN ATMEG16
Hình 1.4 Sơ đồ khối vi điều khiển Atmega16
Trang 5ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC Với khả năng thực hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt được tốc
độ 1MIPS trên mỗi MHz(1 triệu lệnh /s/MHz)
Atmega16 có các đặc điểm sau:
16 KB bộ nhớ Flash với khả năng đọc trong khi ghi, 512 byte bộ nhớ
EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung, 32 đường vào ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại USART, giao tiếp nối tiếp 2 dây, 8 kênh ADC 10 bit,…
Atmega16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mô phỏng, sửa lỗi, kit thử nghiệm…
Mô tả các chân
VCC: Điện áp cung cấp số
GND: Chân nối đất
PORT B: (PB7:0) Port B là cổng I/O 8-bit hai chiều với các điện trở pull-up
bên trong (được lựa chọn cho mỗi bit) Bộ đệm đầu ra của Port B có đặc tính điềukhiển cân đối với cả tín hiệu source và sink Khi là tín hiệu đầu vào, các chân củacổng B sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kích hoạt Cácchân của Port B là 3 trạng thái khi có tín hiệu reset được kích hoạt, thậm chí đồng
hồ không chạy
PORT C: (PC7:0) Port C là cổng I/O 8-bit hai chiều với các điện trở pull-up
bên trong (được lựa chọn cho mỗi bit) Bộ nhớ đệm đầu ra của Port C có đặc tínhđiều khiển cân đối với cả tín hiệu source và sink Khi là các tín hiệu đầu vào, cácchân của cổng C sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kíchhoạt Các chân của Port C là 3 trạng thái khi có tín hiệu reset được kích hoạt, thậmchí đồng hồ không chạy
PORT D: (PD7:0) Port D là cổng I/O 8-bit hai chiều với các điện trở pull-up
bên trong (được lựa chọn cho mỗi bit) Bộ đệm đầu ra của Port D có đặc tính điềukhiển cân đối với cả tín hiệu source và sink Khi là các tín hiệu đầu vào, các châncủa cổng D sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kích hoạt.Các chân của Port D là 3 trạng thái khi có tín hiệu reset được kích hoạt, thậm chíđồng hồ không chạy
Trang 6AVCC : AVCC là chân cấp điện cho cổng A và bộ biến đổi A/D Nó được nối nội
bộ đến VCC ngay cả trong trường hợp ADC không được sử dụng Nếu ADC được
sử dụng, nó phải được nối với VCC qua bộ lọc thông thấp
AREF:AREF là chân tín hiệu tham chiếu analog nối vào bộ biến đổi A/D.
XTAL1, XTAL2 là 2 chân tạo bộ dao động ngoài cho vi điều khiển , các chân này được nối với thạch anh
RESET : Đây là chân reset cứng khởi động lại mọi hoạt động của hệ thống
1.5 KIẾN TRÚC CỦA VI ĐIỀU KHIỂN AVR
1.5.1 Cấu trúc tổng quát
Hình 1.5.1 Sơ đồ cấu trúc CPU của ATmega16
Để tối đa hoá hiệu năng tính năng và song song, AVR sử dụng kiến trúcHarvard với bộ nhớ riêng biệt và các BUS cho chương trình và dữ liệu Các câulệnh trong bộ nhớ chương trình được hoạt với một đường ống lệnh mức đơn.Trong khi một lênh đang thực hiện, lệnh tiếp theo sẽ được nạp trước vào từ bộ nhớchương trình Điều này làm cho các lệnh được thực hiện trong mọi chu kỳ đồng
Trang 7hồ Bộ nhớ chương trình là bộ nhớ In-System Reprogrammable Flash Tập thanhghi truy cập nhanh bao gồm 32 thanh ghi đang năng 8 bit với thời gian ttruy cập là
1 chu kỳ đơn Điều này cho phép ALU hoạt động trong một chu kỳ đơn Một thaotác điển hình với 2 toán hạng được của ALU, 2 toán hạng được lấy ra từ tệp thanhghi để thực hiện, và và kết quả được lưu trữ lại trong tệp thanh ghi trong một chu
kỳ đồng hồ 6 trong số 32 thanh ghi có thể sử dụng như là 3 thanh ghi con trỏ địachỉ gián tiếp 16 bit để chỉ vào vùng dữ liệu phục vụ cho tính toán địa chỉ hiệudụng Một trong các con trỏ địa chỉ này cũng có thể được sử dụng làm con trỏ địachỉ trỏ vào bảng dữ liệu trong bộ nhớ chương trình Flash Các thanh ghi này là X,
Y và Z
ALU thực hiện các phép toán logíc và số học giữa các thanh ghi hoặc giữathanh ghi với một hằng số Cũng có thể thao tác với các thanh thanh ghi đơn trongALU Sau khi thực hiện phép toán số học, các thanh ghi trạng thái được cập nhậtcác thông tin về kết quả thực hiện
Dòng chương trình được điều khiển bởi các phép nhảy có điều kiện hoặckhông điều kiện đến các lệnh được gọi, và chỉ đến các địa chỉ trực tiếp trongkhông gian địa chỉ Hầu hết các lệnh AVR đều thực hiện với dữ liệu 16 bit Mỗiđịa chỉ bộ nhớ chương trình đều chứa 1 lệnh 32 bit hoặc 16 bit
Không gian bộ nhớ chương trình Flash được chia thành 2 vùng, vùng chươngtrình boot và vùng chương trình ứng dụng, cả hai vùng này đều có bit khoá chuyêndụng để bảo vệ cho việc ghi và đọc/ghi Lệnh SPM dùng để ghi vào vùng bộ nhớứng dụng phải có trong vùng chương trình boot Trong khi thực hiện các ngắt vàcác thường trình, địa chỉ trở về của bộ đếm chương trình (PC) được lưu trữ trongstack Nhìn chung stack được định vị trong SRAM, và do vậy kích cỡ stack đượcgiới hạn bởi kích cỡ toàn bộ của SRAM, và cách sử dụng của SRAM Tất cả cácchương trình của người sử dụng phải khởi tạo SP trong thường trình reset (trướckhi thường trình hoặc ngắt được thược hiện) SP có thể trỏ được vào không gianI/O SRAM có thể được truy cập một cách dễ dàng thông qua 5 chế độ địa chỉkhác nhau hỗ trợ bởi kiến trúc AVR
Không gian bộ nhớ trong kiến trúc AVR là bản đồ bộ nhớ thông thường vàtuyến tính
Một module ngắt linh động có các thanh ghi điều khiển của nó trong khônggian I/O cùng với thêm vào bit khởi tạo ngắt toàn cục trong thanh ghi trạng thái.Tất cả các ngắt có vector ngắt riêng biệt trong bảng vector ngắt Các ngắt này cómức độ ưu tiên theo vị trí của vector ngắt tương ứng Mức có địa chỉ càng thấp thì
có quyền ưu tiên càng cao
Không gian bộ nhớ I/O có 64 địa chỉ cho các chức năng ngoại vi của CPU như
là các thanh ghi điều khiển, SPI, và các chức năng I/O khác Bộ nhớ I/O có thểtruy cập trực tiếp, hoặc như là vị trí không gian dữ liệu theo chúng của tệp thanhghi, $20-$5F Thêm vào đó, nó có không gian I/O mở rộng từ $60 đến $FF trongSRAM, các không gian này chỉ có các lệnh ST/STS/STD và LD/LDS/LĐ có thể
sử dụng
Trang 81.5.2 ALU– Arithmetic Logic Unit - Đơn vị xử lý số học và logic
ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toánđược thực hiện trong một chu kỳ xung clock Hoạt động của ALU được chia lam 3loại:đại số, logic và theo bit Một số phép xử lý của kiến trúc này cũng cung cấp
bộ nhân số có dấu và không có dấu và dạng phân số
1.5.3 Thanh ghi trạng thái (SREG - Status Register)
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic Các thông tin này có thể được sử dụng để điều khiển chương trình Trong nhiều trường hợp, điều này sẽ bỏ đi những cần thiết khi sử dụng câu lệnh so sánh chuyên dụng, kết quả nhanh hơn và đoạn chương trình ngắn gọn hơn.Thanh ghi trạng thái không tự động lưu trữ khi đang nhập vào môt chường trình ngắt và lưu trữ khi trở về từ một ngắt Điều này phải được quản lý bằng phần mềm
Thanh ghi trạng thái AVR – SREG - được định nghĩa như sau:
Hình 1.5.2Thanh ghi trạng thái SREG
C: Carry Flag, cờ nhớ (nếu phép toán có nhớ cờ sẽ được thiết lập )
Z: Zero Flag, cờ zero(nếu kết quả phép toán bằng 0)
N: Nagative Flag(nếu kết quả của phép toán là âm)
V: Two’s complement overflow indicator(cờ này được thiết lập khi tràn số bù2)
H: Half carry Flag ( chỉ báo cho thấy sự mang sang (nhớ) một nửa trong một
số lệnh số học)
T: Bit copy Storage (được sử dụng với lệnh nạp bit BLD (bit load) và lưu trữbit BST (bit store) để nạp và lưu trữ các bit từ một thanh ghi vào một thanh ghikhác
I: Global Interrupt Enable (cho phép ngắt toàn cục Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ)
Bit cho phép ngắt toàn cục phải được đặt để cho các ngắt có thể hoạt động Điều khiển hoạt động của các ngắt riêng biệt được thực hiện trong các thanh ghi điều khiển riêng biệt Nếu thanh ghi cho phép ngắt toàn cục được xóa, không có một ngắt riêng biệt nào được hoạt động Bit I được xóa bởi phần cứng sau khi một ngắtxảy ra và được đặt bởi lệnh RETI để cho các phép các ngắt tiếp theo hoạt động Bit I cũng có thể được đặt và xóa bởi câu lệnh SEI và CLI trong các ứng dụng
Trang 91.5.4 Các thanh ghi chức năng chung (General Purpose Register File)
Hình 1.5.3 Thanh ghi chức năng chung.
Hầu hết các lệnh thực hiện với tệp thanh ghi có truy cập trực tiếp tới tất cả cácthanh ghi, và hầu hết chúng là lệnh đơn chu kỳ Mỗi một thanh ghi được chỉ địnhbởi một địa chỉ bộ nhớ dữ liệu, bố trí chúng trực tiếp vào 32 vị trí đầu tiên củakhông gian dữ liệu người sử dụng
Mặc dù không phải là thực hiện theo luật như các vị trí của SRAM, tổ chức bộnhớ này cho phép linh động cao khi truy cập các thanh ghi, như là thanh ghi contrỏ X,Y,Z có thể được đặt vào danh mục của mọi thanh ghi trong tệp.The X-register, Y-register and Z-register
Các thanh ghi R26 R31 có thêm các chức năng ngoài, việc sử dụng như là một thanh ghi đa năng Các thanh ghi này là các con trỏ địa chỉ 16 bit cho chế độ địa chỉ gián tiếp của không gian dữ liệu 3 thanh ghi địa chỉ gián tiếp X, Y, Z được
mô tả như như hình:
Trang 10Hình 1.5.4 Các thanh ghi X, Y và Z
Trong các chế độ địa chỉ khác, các thanh ghi địa chỉ này có các chức năng như là
độ lệch cố định, tự động tăng và tự động giảm
1.5.5 Con trỏ ngăn xếp(SP- Stack Pointer).
Là một thanh ghi 16 bit nhưng cũng có thể xem như 2 thanh ghi chức năngđặc biệt 8 bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (trong bộnhớ RAM là $5E) có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp
Hình 1.5.5 Thanh ghi con trỏ ngăn xếp
Khi chương trinh phục vụ ngắt hoặc chương trình con thì con trỏ PC được lưuvào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí Và con trỏ ngăn xếp sẽgảm một khi thực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏngăn xếp sẽ tăng một và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp
sẽ tăng 2.Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởitạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho
Trang 11phép phục vụ Và giá trị ngăn xếp ít nhất cũng phải lớn hơn hoặc bằng 60H (0x60)
vì 5Fh trở lại là vùng các thanh ghi
1.5.6 Điều khiển ngắt và reset- Reset and Interrupt Handling
AVR cung cấp 1 vài nguồn ngắt khác nhau Các ngắt này và vector reset riêng biệt có vector chương trình riêng biệt nằm trong không gian nhớ chương trình Tất
cả các ngắt được chỉ định bởi các bit cho phép riêng biệt mà các bit này phải được ghi mức logic 1 cùng với bit cho phép ngắt toàn cục trong thanh ghi trạng thái để cho phép ngắt Phụ thuộc vào giá trị PC, các ngắt này phải được tự động loại bỏ khi các bit Boot Lock - BLB02 or BLB12 - được lập trình Yếu tố này cải thiện độ
an toàn phần mềm Địa chỉ thấp nhất trong không gian bộ nhớ chương trình được mặc định là Reset và Interrupt Vectors Bảng vector ngắt –bảng 1:
Trang 12Bảng 1-vecter ngắt và reset
Khi địa chỉ càng nhỏ thì thứ tự ưu tiên càng cao.Các vector ngắt có thể đượcchuyển sang đầu của vùng Boot Flash bằng cách đặt bit IVSEL trong thanh ghiđiều khiển ngắt (MCUCR) Reset Vector có thể được chuyển sang đầu của vùngBoot Flash bằng cách lập trình BOOTRST fuse
Khi một ngắt xảy ra, bit I (bit cho phép ngắt toàn cục) được xóa và tất cả cácngắt được loại bỏ Phần mềm sử dụng có thể ghi mức logic 1 vào bit I để cho phép
Trang 13các ngắt tiếp theo Tất cả các ngắt được kích hoạt có thể ngắt những chường trìnhngắt hiện tại.
Bit I được đặt tự động khi trở về từ lệnh RETI của ngắt
Có 2 loại ngắt cơ bản:
+ Loại thứ nhất được gây ra bởi sự kiện mà đặt cờ ngắt Đối với loại ngắt này,
PC được hướng tới Interrupt Vector tương ứng để thực hiện chương trình phục vụngắt và phần cứng xoá cờ ngắt tương ứng Các cờ ngắt cũng có thể được ghi mứclogic 1 vào vị trí bit cờ để được xoá Nếu một điều kiện ngắt xảy ra trong khi bitcho phép ngắt tương ứng bị xoá, thì cờ ngắt sẽ được đặt và được nhớ cho đến khingắt được thực hiện, hoặc là cờ ngắt được xoá bởi phần mềm Tương tự nếu 1hoặc nhiều điều kiện ngắt xảy ra trong khi cờ cho phép ngắt toàn cục bị xoá thì các
cờ ngắt tương ứng sẽ được đặt và nhớ cho đến khi cờ cho phép ngắt toàn cục đượcđặt và nó sẽ được thực hiện theo thứ tự ưu tiên
+ Loại ngắt thứ 2 sẽ kích hoạt kéo dài trong thời gian điều kiện ngắt tồn tại Các ngắt này không cần thiết phải có cờ ngắt Nếu điều kiện ngắt mất đi trước khi ngắt được cho phép, thì ngắt sẽ không xảy ra.Khi AVR thoát khỏi từ một ngắt, nó
sẽ luôn trở về chương trình chính và thực hiện một hoặc nhiều lệnh trước khi một ngắt nào đó còn đợi đó được phục vụ Chú ý rằng các thanh ghi trạng thái không
tự động lưu trữ khi nhập vào một thường trình ngắt, và cũng không lưu trữ lại khi trở về từ một thường trình ngắt Điều này phải được thực hiện bởi phần mềm.Khi sử dụng câu lệnh CLI để cấm ngắt, các ngắt sẽ không được tác động ngay lập tức Không có ngắt nào được thực hiện sau khi thực hiện lệnh CLI, thậm chí nó xảy ra cùng lúc với lệnh CLI
Thời gian đáp ứng của 1 ngắt :Việc thực hiện ngắt trong ít nhất 4 chu kỳ đồng hồ với tất cả các ngắt Sau 4 chu kỳ đồng hồ, địa chỉ vector chương trình tương ứng với chương trình điều khiển ngắt thực sự được khởi tạo Trong thời gian 4 chu kỳ này, PC được cất vào trong ngăn xếp Vector thường là lệnh nhảy đến chương trìnhngắt và lệnh nhảy này mất 3 chu kỳ đồng hồ Nếu một ngắt xảy ra trong khi thực hiện một lệnh nhiều chu kỳ thì lệnh được hoàn thành trước khi ngắt được phục vụ Nếu một ngắt xảy ra khi MCU đang trong chế độ ngủ thì thời gian đáp ứng ngắt sẽtăng thêm 4 chu kỳ Thời gian tăng thêm này là thời gian để khởi động lại từ chế
độ ngủ
Sự trở về từ một chương trình điều khiển ngắt mất 4 chu kỳ xung nhịp.Trong thời
Trang 14gian 4 chu kỳ này, PC (2 bytes) được lấy ra từ ngăn xếp, SP được tăng lên 2, và bit
I trong SREG được đặt
1.6 CẤU TRÚC BỘ NHỚ
AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu và bộ nhớ chương trình.
Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu
1.6.1 Bộ nhớ chương trình (bộ nhớ Flash) :
Bộ nhớ Flash 16 KB dùng để lưu trữ chương trình Do các lệnh của AVR có
độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8K x 16 Bộ nhớFlash được chia làm 2 phần, phần dành cho chương trình boot và phần dành chochương trình ứng dụng
Hình 1.6.1 Bản đồ bộ nhớ chương trình
Trang 151.6.2 Bộ nhớ dữ liệu SRAM
1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho tệp thanh ghi, bộ nhớ I/O và
bộ nhớ dữ liệu SRAM nội Trong đó 69 ô nhớ đầu tiên định địa chỉ cho tệp thanhghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho ô nhớ SRAM nội
Hinh 2.4.2 Bản đồ bộ nhớ SRAM
1.6.3 EEPROM Data Memory – bộ nhớ dữ liệu EEPROM
Trang 16ATmega16 chứa 512 byte bộ nhớ dữ liệu EEPROM Nó được tổ chức thànhkhông gian dữ liệu riêng biệt, trong chúng các byte đơn có thể được đọc và ghi.EEPROM có thể đọc ghi được ít nhất 100.000 lần.
1.6.4 EEPROM Read/Write Access – đọc/ghi vào EEPROMass
Các thanh ghi truy nhập EEPROM có thể được thực hiện trong không gianI/O
1.6.5 Thanh ghi địa chỉ EEPROM – EEARH và EEARL
Bits 15 9 – Res: Các bit dự phòng Các bit này được đặt dự phòng trong
Trang 17
Hình 1.7.1 Sơ đồ chân I/O
Các cổng là cổng I/O 2 chiều với sự lựa chọn các pull-ups bên trong.Hình1.7.2 chỉ ra 1 mô tả các khối chức năng của 1 chân cổng I/O, ta gọi chung làPxn
Trang 18Hình 1.7.2 Sơ đồ các khối chức năng của 1 chân I/O
Đặt cấu hình cho mỗi chân cổng bao gồm 3 bit thanh ghi: DDxn, PORTxn, và PINxn Các bit DDxn trong thanh ghi DDRx lựa chọn hướng của chân Nếu các bit DDRx là 1 thì Pxn là chân ra, ngược lại là 0 thì là chân vào Nếu các bit
PORTxn là 1 khi chân được cầu hình là chân vào thì các điệc trở pull-up được kíchhoạt Để tắt các điện trở này các bit PORTxn phải đặt lại là 0 hoặc chân ra phải được đặt là chân ra Khi có reset các chân cổng trở về dạng 3 trạng thái ngay cả khi không có xung nhịp
Nếu các bit PORTxn là 1 khi chân được đặt là chân ra thì chân cổng được đặt ở mức cao
Trang 19Nếu các bit PORTxn là 0 khi chân cổng được đặt là chân ra thì chân cổng được đặt
ở mức 0 Đặt cấu hình cho chân cổng theo bảng 2:
Bảng 2: Đặt cấu hình cho chân cổng
Trang 20Hình 1.8.1 Sơ đồ cấu trúc bộ đinh thời
1.8.1 Đơn vị đếm
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình được.Cấu trúc của nó như hình dưới đây:
Trang 21
Hình 1.8.2 Đơn vị đếm
Count:tăng hay giảm TCTNT0 1
Direction: lựa chọn giữa đếm lên và đếm xuống
Clear: xóa thanh ghi TCNT0ClkT0 : xung clock của bộ định thời
Top: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất
Bottom: báo hiệu bộ định thơi đã giảm đến giá trị nhỏ nhất(0)
1.8.2 Đơn vị so sánh ngõ ra
Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ ra (OCR0) Khi giá trị TCNT0 bằng với ORC0, bộ so sánh sẽ tạo một báo hiệu Báo hiệu này sẽ đặt một cờ so sánh ngõ ra (OCF0) lên 1 vào chu kì xungclock tiếp theo Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh và sẽ tự động được xóa khi ngắt được thực thi Cờ OCRF0 cũng có thể được xóa bằng phần mềm Cấu trúc của nó như hình dưới đây:
Hình 1.8.3 Đơn vị so sánh ngõ ra
Trang 221.8.3 Thanh ghi điều khiển timer/counter TCCR0
hình 1.8.4 Thanh ghi điều khiển timer/counter
Bit 7-FOC0 : So sánh ngõ ra bắt buộc
Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc không có PWM Khiđặt bit này lên 1, một báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng.Bit 3;6-WGM01:0: Chế độ tạo dạng sóng
Các bit này điều khiển đếm thứ tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ đếm (TOP) và kiểu tạo dạng sóng sẽ được sử dụng
Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra
Các bit này điều khiển hoạt động của chân OC0 Nếu một hoặc cả 2 bit COM01:0 được đặt lên 1, ngõ ra OC0 sẽ hoạt động
Trang 231.8.7 thanh ghi so sánh ngõ ra-OCR0
Hình 1.8.6 thanh ghi so sánh ngõ ra
Thanh ghi này chứa một giá trị 8 bit và liên tục được so sánh với giá trị của bộ đếm
1.8.8 Thanh ghi mặt nạ ngắt –TIMSK
Hình 1.8.7 thanh ghi TIMSK
Bit 1- OCIE0: Cho phép ngắt báo hiệu so sánh
Bit 0- TOIE0: Cho phép ngắt tràn bộ đếm
1.8.9 Thanh ghi cờ ngắt bộ định thời –TIFR
Hình 1.8.8 Thanh ghi TIFR
Bao gồm các đặc trưng sau:
Song công, dữ liệu đồng bộ 3 dây
Hoạt động chủ hoặc tớ
Truyền LSB trước hoặc MSB trước
7 tốc độ bit có thể lập trình được
Cờ ngắt khi truyền xong
Bảo vệ xung đột ghi
Đánh thức từ chế độ nhàn dỗi
Chế độ SPI chủ tốc độ đôi
Trang 24Hình 1.9 Sơ đồ khối SPI
1.10 USART
Bộ truyền và nhận tín hiệu nối tiếp đồng bộ và không đồng bộ vạn năng làthiết bị kết nối nối tiếp có độ linh động cao Các đặc trưng chính sau:
Hoạt động song công
Hoạt động đồng bộ hoặc không đồng bộ
Hoạt động đồng bộ theo xung nhịp chế độ chủ hoặc tớ
Bộ phát tốc độ truyền có độ phân giải cao
Hỗ trợ khung truyền với 5, 6, 7, 8, hoặc 9 Bit dữ liệu và 1 hoặc 2 Stop BitsPhát và kiểm tra chẵn lẻ được hỗ trợ bởi phần cứng
Phát hiện OverRun dữ liệu
Phát hiện lỗi khung truyền
Lọc nhiễu bao gồm phát hiện bit start sai và bộ lọc thông thấp số
Trang 253 ngắt riêng biệt khi TX hoàn thành, thanh ghi dữ liệu TX rỗng, và RX hoànthành
Chế độ Multi-processor kết nối
Chế độ kết nối không đồng bộ tốc độ đôi
Một sơ đồ đơn giản của bộ truyền USART được đưa ra như hình 1.10
Hình 1.10 Sơ đồ khối của bộ truyền USART
USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận Cácthanh ghi điều khiển được sử dụng chung giữa các phần này
1.10.1 Tạo xung clock
Trang 26Bộ tạo xung clock tạo ra xung đồng hồ căn bản cho bộ truyền và bộ
nhận.USART hỗ trợ 4 chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc
độ cao, truyền đồng bộ master và truyền đồng bộ slave Sơ đồ khối của bộ tạo xung như sau:
Hình 1.10.1 Sơ đồ khối tạo xung clock
Txclk: xung đông hồ bộ truyền
Rxclk: xung đồng hồ bộ nhận
Xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ masterXcko: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng bộ slave
Fosc: tần số từ chân XTAL
1.10.2 Định dạng khung truyền
USART chấp nhận tất cả 30 tổ hợp của các định dạng khung truyền sau đây:
1 bit start
5, 6, 7, 8, hoặc 9 bits dữ liệu
Có hoặc không có bit chẵn lẻ
1 hoặc 2 bits stop
Một khung truyền bắt đầu với 1 bit start, theo sau đó là bit có trọng số thấp nhất (LSB) của dữ liệu (có thể lên tới 9 bit), kết thúc bằng bit có trọng số lớn nhất (MSB) và bit stop
Trang 27Hình 1.10.2 Định dạng khung truyền
St: bit start (mức thấp)
(n): bit dữ liệu (0 đến 8)
P: bit chẵn lẻSp: bit stop (mức cao)
IDLE: không có dữ liệu truyền (mức cao trong suốt thời gian idle)
1.10.3 Khởi tạo USART
Qúa trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập địnhdạng khung và kích hoạt bộ truyền và bộ nhận
1.10.4 Truyền thông dữ liệu –bộ truyền nhận USART
Bộ truyền USART được thiết lập bằng cách thiết lập bit TXEN trong thanh ghiUCSRB Khi bộ truyền được kích hoạt, chân TxD hoạt động như ngõ ra của bộtruyền nối tiếp Tốc độ baud, chế độ hoạt động và định dạng khung truyền phảiđươc thiết lập trước khi truyền dữ liệu
Truyền khung 5 đến 8 bit dữ liệu:
Việc truyền dữ liệu được thiết lập bằng cách nạp dữ liệu truyền vào bộ đệm
truyền.Dữ liệu trong bộ đệm sẽ được đưa vào trong thanh ghi dịch khi thanh ghi dịch đã sẵn sàng gửi một khung mới
Truyền khung 9 bit dữ liệu
Nếu sử dụng 9 bit dữ liệu, bit thứ 9 phải được ghi vào bit TXB8 trong thanh ghi UCSRB trước khi byte còn lại được ghi vào UDR
1.10.5 Nhận dữ liệu – bộ nhận USART
Bộ nhận USART được kích hoạt bằng cách đặt bit RXEN trong thanh ghi
UCRSB lên 1 Khi bộ nhận được kích hoạt, chân RxD hoạt động như ngõ vào của
bộ nhận nối tiếp Tốc độ baud, chế độ hoạt động và định dạng khung truyền phảiđược thiết lập trước khi thực hiện truyền dữ liệu
Trang 28Nhận khung với 5 đến 8 bit dữ liệu :Bộ nhận bắt đầu nhận dữ liệu khi nó pháthiện 1 bit start hợp lệ Mỗi bit theo sau bit start sẽ được lấy mẫu tại tốc độ baudhoặc tốc độ đồng hồ XCK, vá được dịch vào trong thanh ghi của bộ nhận cho đếnkhi phát hiện một bit stop đầu tiên Nội dung của thanh ghi dịch sau đó được đưavào bộ đệm Bộ đệm của bộ nhận có thể được đọc bằng cách đọc URD Nhận khung truyền với 9 bit dữ liệu: Nếu nhận dữ liệu với 9 bit, bit thứ 9 phảiđược đọc từ bit RXB8 trong thanh ghi UCSRB trước khi đọc các bit thấp trongUDR.
1.11 BỘ BIẾN ĐỔI A/D
Vi điều khiển ATmega16 có một bộ biến đổi ADC tích hợp trong chíp với cácđặc điểm sau:
Độ phân giải 10 bit
Sai số tuyến tính 0.5LSB
Độ chính xác +/- 2LSB
Thời gian chuyển đổi: 65-260µs
8 Kênh đầu vào có thể được lựa chọn
Có 2 chế độ chuyển đổi free running và single
Có nguồn báo ngắt khi hoàn thành chuyển đổi
Loại bỏ nhiễu trong chế độ ngủ
Trang 29Hình 1.11 Sơ đồ biến đổi analog to digital
Tám đầu vào của ADC là 8 chân của portA và chúng được chọn thông qua mộtMUX.Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3thanh ghi: ADMUX là thanh ghi diều khiển lựa chọn kênh đầu vào cho ADC,ADCSRA là thanh ghi điều khiển và thanh ghi trạng thái của ADC, ADCH vàADCL là 2 thanh ghi dữ liệu
1.11.1 ADMUX: Multiplexer select register
Trang 30Hình 1.11.1 Thanh ghi ADMUX
Đây là thanh ghi điều khiển 8 bit Với 4 bit được định nghĩa là MUX3,MUX2, MUX1 và MUX0, ứng với các tổ hợp logic ta có thể chọn kênh đầu
Bảng 4 Chọn kênh đầu vào MUX4 0
Các bit REFS1 và REFSO dùng để chọn giá trị điện áp tham khảo cho ADC, như sau:
Bit 7- ADEN : ADC enable
Đây là bít điều khiển hoạt động của ADC Khi bit này được set lên 1 thì ADC có
Trang 31thể hoạt động và ngược lại Nếu như ta ngừng hoạt động của ADC trong khi nó đang chuyển đổi thì nó sẽ kết thúc quá trình chuyển đổi Mặc dù chưa chuyển đổi xong.
Bit 5-ADATE : ADC Auto trigger enable
Khi bit này được set thì ADC sẽ bắt đầu chuyển đổi mỗi khi có một nguồn kích hoạt xuất hiện Việc lựa chọn nguồn kích hoạt được thực hiện bằng cách set các bittrong thanh ghi SFIOR
BIT 4-ADIF: ADC interrupt Flag
Bit này được set lên một bởi phần cứng khi quá trình chuyển đổi đã hoàn thành và thanh ghi dữ liệu đã dược cập nhập Bít này đước xóa bằng phần cứng nếu như ngắt này được phép và được phục vụ Hoặc nó có thể được xóa bằng cách ghi giá trị logic “0” vào cờ này Cụ thể khi ngắt bị cấm ta có thể sử dụng các lệnh SBI và CBI để tác dụng lên bit này
Bit 3-ADIE: ADC interrupt enable
Nếu bit này set lên 1 và ngắt toàn cục được cho phép thì ngắt này được phục vụ (khi chuyển đổi xong dữ liệu ) và nếu bị xóa thi ngược lại
Bit 2.1.0- ADPS2…ADPS0 :Bit lụa chọn xung nhịp (tốc độ)
Nguồn xung được lầy từ nguồn xung của vi điều khiển (XTAL) và được chia tần thông qua bộ chia tần
Các bit ADPS có nhiệm vụ chọn số chia cho bộ chia tần theo bảng sau:
Bảng 6 Chọn số chia cho bộ chia tần số ADBS
1.11.3 nguyên tắc hoạt động và lập trình điều khiển
ADC có nhiệm vụ chuyển đổi tín hiệu điện áp tương tự thành tín hiệu số có độphân giải 10 bit Với giá trị nhỏ nhất của điện áp đặt ở chân AGND và giá trị cựcđại của điện áp tương tự được mắc vào chân AREF Tám kênh tương tự đầu vàođược chọn lựa thông qua ADMUX và ADMUX này được điều khiển bởi thanh ghiADMUX
ADC này có thể hoạt động được ở 2 chế độ Đó là chuyển đổi đơn: chỉ chuyển đổi
1 lần khi có lệnh (free running mode) đây là chế độ mà ADC tự động chuyển đổi
Trang 32khi được hoạt động và công việc chuyển đổi có tính tuần hoàn (chỉ cần khởi động
1 lần)
ADC hoạt dộng nhờ thiết lập bit ADEN Quá trình chuyển đổi được bắt đầu bằngviệc ghi vào bit ADSC Mức logic 1 và trong suốt quá trình chuyển dổi bit này luônđược giữ ở mức cao.Khi quá trình chuyển dổi hoàn thành thì bit này được xóabằng phần cứng và cờ AIDF được bật lên
Dữ liệu sau khi chuyển đổi được đưa ra thanh ghi dữ liệu ADCL và ADCH, nhưngchú ý khi đọc dữ liệu từ hai thanh ghi này thì đọc ADCL trước rồi mới đọc ADCH.Nếu đọc ADCH trước thì dữ liệu cập nhập có thể ghi đè lên ADCL ( vi điều khiểnnghĩ rằng đã đọc xong dữ liệu)
Để điều khiển vào ra dữ liệu với ADC, các bước thực hiện như sau:
Bước 1: Định nghĩa các cổng vào cho các tín hiệu tương tự
Xóa bit tương ứng với chân đó trong thanh ghi DDRA Sau đó lại bỏ điện trở treobằng cách xóa bit tương ứng ở thanh ghi PORTA
Bước 2: Chọn kênh tương tự vào ( chọn chân vào cho ADC ) thông qua thanh ghiADMUX (có thể thay đổi trong qúa trình hoạt động )
Bước 3: Thiết lập các thông số cho ADC, tốc độ chuyển đổi thông qua xung nhịpchuyển đổi
Chế độ chuyển đổi: đơn hoặc tự động
Trang 36CHƯƠNG 2 CÁC LOẠI LINH KIỆN KHÁC
2.1 IC LM324
2.1.1 Single Supply Quad Operational Amplifiers (Opam):
Nhóm IC LM324 có giá thành thấp, có bốn bộ khuếch đại thuật toán với cácngõ vào phân biệt Chúng có vài lợi thế dễ nhận thấy trên nền của bộ khuếch đạithuật toán tiêu chuẩn cung cấp ở ứng dụng đơn lẻ Bốn Opam có thể hoạt động ởđiện áp cung cấp thấp ở 3V hoặc cao 32V với dòng thụ động khoảng 1/5 của dòng
ở IC MC1741 (ở mỗi bộ khuếch đại cơ bản) Ngưỡng ngõ ra chung trong dãy gồmnguồn âm, theo cách ấy loại trừ nhu cầu bởi sự phân cực bên ngoài của các linhkiện ở nhiều thiết bị Dãy áp ngõ ra cũng bao gồm nguồn cung cấp âm
Mạch bảo vệ ngắn mạch ngõ ra
Nguồn đơn từ 3V đến 32V (LM224,LM324,LM324A)
Dòng phân cực ngõ vào thấp: 100nA Maximum( LM324A)
Đóng gói 4 Opam trong một vỏ
Cân bằng bên trong
Chế độ dãy mở rộng đến mức âm nguồn
Sơ đồ chân chuẩn công nghiệp
2.1.2 Hình dáng:
Hình 2.1 hình dáng của LM324
Trang 372.1.3 Bảng công suất tối đa
Power Supply Voltages
Input Common Mode
Output Short Circuit
Bảng 2.1 Công suất tối đa
2.1.4 Sơ đồ chân và cấu tạo bên trong:
Trang 382.2 IC74HC595
2.2.1 Mô tả:
74HC/HCT595 là một IC CMOS Si-gate tốc độ cao và có chân tương thíchvới mạch logic tranzito-tranzito Schottky năng lượng thấp Được thiết kế dưới sựưng thuận của hội đồng thiết kế các thiết bị điện tử (JEDEC)
“595” là thanh ghi dịch nối tiếp 8 mức với một thanh ghi lưu trữvà 3 chế độngõ ra Thanh ghi dịch và thanh ghi lưu trữ có chia tần số xung clock
Dữ liệu được dịch vào thanh ghi nhờ xung vào ở chân SHcp Dữ liệu từ cácthanh ghi được đưa vào thanh ghi lưu trữ nhờ xung vào ở chân STcp
Thanh ghi dịch có một ngõ vào nối tiếp (Ds) và một ngõ ra tiêu chuẩn nốitiếp (Q7’) cho việc đổ dữ liệu ra Nó cũng được cung cấp chức năng reset bất đồng
bộ (active Low) cho tất cả 8 mức thanh ghi dịch Thanh ghi lưu trữ có bus 8 songsong 3 chế độ điều khiển ngõ ra Dữ liệu vào thanh ghi lưu trữ xuất hiện ở ngõ rabất cứ khi nào chân (OE) cho phép xuất ở mức thấp
2.2.2 Đặc điểm:
Ngõ ra nối tiếp hoặc song song
Thanh ghi với ba chế độ ngõ ra
Thanh ghi dịch với khả năng xóa trực tiếp
Tần số dịch (phổ biến) là 100Mhz
Ngõ ra với khả năng:
Các ngõ ra song song; bus driverNgõ ra nối tiếp; tiêu chuẩnLoại Icc; MSI
2.2.3 Ứng dụng:
Chuyển dữ liệu từ chế độ nối tiếp sang chế độ song song
Điều khiển thanh ghi thời gian
2.2.4 Bảng chức năng các chân:
Bảng 2.2.1 Chức năng các chân
Trang 392.2.5 Quick reference data
2.2.6 Sơ đồ chân của 74HC595: Ký hiệu logic
2.2.7 Ký hiệu logic theo IEC