Khối số học (ALU) thực hiện các thao tác như thao tác bit, phép tính số học và lôgic trên nội dung của các thanh ghi và ghi ngược kết quả vào tệp thanh ghi trên thanh ghi đã được chỉ định. Các thao tác này được thực hiện trong một chu kỳ đồng hồ đơn lẻ. Mỗi một thao tác ALU đều làm ảnh hưởng đến các cờ trong thanh ghi trạng thái (STATUS), tùy thuộc vào lệnh.
b. Thanh ghi trạng thái SREG
Thanh ghi triạng thái có chứa 8bit cờ, đóng vai trò báo hiệu trạng thái hiện tại của bộ xử lý. Tất cả các bit đó dược xóa bởi chương trình. Các địa chỉ I/O của thanh ghi trang thái là $3F( địa chỉ bộ nhớ là $57).
Thanh ghi trạng thái không được lưu trữ bằng máy (machine) trong thời gian diễn ra một thao tác ngắt. Lệnh trong một đoạn chương trình ngắt có thể xủa đổi bít cờ trạng thái, và vì thế chương trình của người dùng phải lưu trữ và khôi phục thanh ghi trạng thái trong thời gian có một ngắt.
c. Tập thanh ghi đa năng
Tất cả các bộ điều khiển AVRđều có 32 thanh ghi đa năng. Một số trong các thanh ghi này còn có các chức năng riêng, bổ sung. Các thanh ghi dược đặt tên từ R0 đến R31. Tệp thanh ghi được tách thành 2 phần, mỗi phần có 16 thanh ghi, đánh số từ R0 đến R15 và R16 đến R31. Tất cả truy nhập trong chu trình đơn đến tất cả các thanh ghi.
_____________________________________________________________________________ __________________________________________
d. Thanh ghi con trỏ ngăn xếp SP
Thanh ghi này có độ rộng bằng 1 byte đối với các bộ xử lý có đến 256 byte bộ nhớ SRAM và bằng 2byte (được gọi là SPH và SPL) đối với các bộ xử lý có bộ nhớ . Thanh ghi này sử dụng để chỉ đến vùng trong bộ nhớ SRAM ở đỉnh của ngăn xếp. Ngăn xếp được sử dụng để lưu trữ địa chỉ mà bộ xử lý trả trở lại trong thời gian một ngắt và gọi thủ tục . Bởi vì SP được khởi tạo về $0000 khi rết, nên chương trình người dùng cần phải khởi tạo SP cho thích hợp, bởi vì địa chỉ bắt đầu của bộ nhắ SRAM không phải là $0000 mà là $60. Ngăn xếp sắp xếp theo thứ tự từ trên xuống dưới trong địa chỉ bộ nhớ, nghĩa là, việc đẩy một giá trị lên trên ngăn xếp sẽ làm cho SP giảm đi một giá trị. Khi kéo một giá trị khỏi ngăn xếp sẽ làm tăng SP thêm một giá trị.
e. Việc thực thi lệnh
Bộ xử lý AVR được điều khiển bởi đồng hồ hệ thống, đồng hồ này có thể ở bên ngoài hoặc, nếu có tồn tại và được phép, một đồng hồ RC bên trong có thể được sử dụng. Đồng hồ hệ thống này không qua bất kỳ bộ chia nào và được sử dụng trục tiếp cho tất cả các thao tác truy nhập bên trong bộ xử lý. Bộ xử lý có một đường ống (pipeline) 2 tầng, và lệnh tìm nạp giải mã được thực hiện đồng thời vời việc thực thi lệnh.
_____________________________________________________________________________ __________________________________________
Hình 10: Tìm nạp/ giải mã lệnh và việc thực thi lệnh.
Cứ mỗi lần lệnh được tìm nạp, nếu đây là một lệnh liên quan đến ALU, nó có thể được thực thi bởi khối ALU như được minh họa tren hình 3-5 cho một chu trình đơn lẻ.
Hình 11: Việc thực thi của ALU bao gồm tìm/nạp thực thi, và ghi ngược lại vào thanh ghi.
Mặt khác, việc truy nhập bộ nhớ SRAM chiếm mất 2 chu kỳ, như dược minh họa ở hình dưới. Nguyên nhân là việc truy nhập bộ nhớ SRAM sử dụng một thanh ghi con trỏ dùng cho địa chỉ bộ nhớ SRAM. Thanh ghi con trỏ này chỉ là một trong các thanh ghi con trỏ (các cặp thanh ghi X, Y hoặc Z) có trên chip. Chu trình đồng hồ thứ nhất được cần đến để truy nhập tệp thanh ghi và để thao tác trên thanh ghi con trỏ (các lệnh truy nhập bộ nhớ SRAM cho phếp tăng địa chỉ trước/ sau thao tác trên thanh ghi con trỏ). Ở thời điểm kết thúc của chu kỳ đồng hồ thứ nhất, khối ALU thực hiện phép tính này, và sau đó địa chỉ này được sử dụng để truy nhập ô nhớ SRAM và để ghi vào ô nhớ này ( hoặc đọc ra rừ đó vòa thanh ghi đích), như được minh họa hình dưới.
_____________________________________________________________________________ __________________________________________
Hình 12: Các chu trình truy nhập dữ liệu lên thanh ghi SRAM trên chip.
2.1.4.2. Bộ nhớ của Atmega64L
Bộ nhớ của Atmega64L được chia làm 2 phần: bộ nhớ chương trình và bộ nhớ dữ liệu. Trong trường hợp đặc biệt bộ nhớ EEPROM được mô tả như là bộ nhớ dữ liệu.
Atmega có 64k Byte bộ nhớ Flash lập trình lại được trong hệ thống (ISP- In system progammable) cho bộ nhớ chương trình. Bây giờ họ vi điều khiển AVR đề là chip 16 hoặc 32 bit thì Flash được tổ chức là 32k x 6. Để vi điều khiển hoạt động chương trình phải được nạp vào bộ nhớ Flash.
_____________________________________________________________________________ __________________________________________
Hình 13: Bộ nạp AVR-doper.
Bộ nạp này có ưu điểm là sử dụng giao diện USB với PC, và hoạt động được với điện áp 3,3V.
_____________________________________________________________________________ __________________________________________
2.1.4.3 Nguồn xung hệ thống
Atmega có thể dùng các nguồn xung clock: RC ngoài, thạch anh ngoài, nguồn xung ngoài hoặc bộ dao động RC tích hợp bên trong.
Trong luận văn, vi điều khiển Atmega64L dùng bộ cộng hưởng thạch anh ngoài 7.3728 MHz .
2.1.4.4. Ngắt phần cứng của Atmega64L
Atmega64L có tổng cộng 36 ngắt phần cứng : ngắt cho timer, ngắt USART, ngắt ADC, PWM v.v...
_____________________________________________________________________________ __________________________________________
Hình 14: bảng véc tơ ngắt của Atmega64L 2.1.4.5.Bộ đếm/định thời của Atmega64L:
Atmega64L có 4 timer/counter gồm 2 timer 8bit (timer0 và timer2) và 2 timer 16bít (timer1 và timer2).
Sơ đồ khối của timer1:
_____________________________________________________________________________ __________________________________________
Timer/counter1, 16 bit cho phép lập trình các thời gian điều khiển chính xác ( đếm các sự kiện), tạo xung, đo độ rộng thời gian của tín hiệu. Các tính năng:
• Là timer 16 bit cho phép tạo PWM 16bit.
• Ba lối ra so sánh độc lập.
• Một bộ capture đầu vào.
• Chế độ Auto Reload.
• Triệt nhiễu đầu vào Capture.
• Hiệu chỉnh pha PWM.
• Chu kỳ PWM thay đổi được.
• Bộ tạo tần số.
• Đếm sự kiện ngoài.