Vi điều khiển là một lĩnh vực có tốc độ phát triển như vũ bảo của nghành điện tử. Cùng với sự phát triển của ngành điện tử thì nhiều họ vi điều khiển lần lượt được các hãng sản xuất chip cho ra đời như: Z80 của Zilog, PIC của Microchip, AT89 và AVR của Atmel...
Họ vi điều khiển AVR của Atmel là một bước phát triển trên nền của vi điều khiển AT89 đã khá quen thuộc. Nếu như AT89 là vi điều khiển có CPU CISC thì AVR là RISC.
AVR có cấu trúc harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại vi, với register file. Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục vụ cho instruction registers.
Hình 2.4: Cấu trúc bên trong của vi điều khiển AVR.
32 thanh ghi trong Register file được kết nối trực tiếp với Arithmetic Logic Unit – ALU (ALU cũng được xem là CPU của AVR) bằng 2 line, vì thế ALU có thể truy xuất trực tiếp cùng lúc 2 thanh ghi RF chỉ trong 1 chu kỳ xung clock.
Các instruction được chứa trong bộ nhớ chương trình Flash memory dưới dạng các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock và một instruction chứa trong program memory sẽ được nạp vào trong instruction
register, instruction register tác động và lựa chọn register file cũng như RAM cho ALU thực thi. Trong lúc thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được quyết định bởi một bộ đếm chương trình – PC (Program counter). Đó chính là cách thức hoạt động của AVR.[2]
AVR có ưu điểm là hầu hết các instruction đều được thực thi trong 1 chu kỳ xung clock, vì vậy có thể nguồn clock lớn nhất cho AVR có thể nhỏ hơn một số vi điều khiển khác như PIC nhưng thời gian thực thi vẫn nhanh hơn.