2. Cấu trúc vi điều khiển ATMEGA
2.3. Tổ chức bộ nhớ bên trong ATMEGA
Bộ vi điều khiển AVR đợc xây dựng trên kiến trúc Harvard, bộ nhớ dữ liệu và bộ nhớ chơng trình tách biệt nhau để có thể thực hiện đồng thời đợc một khối lợng lớn công việc.
Bus dữ liệu đợc sử dụng cho bộ nhớ dữ liệu là bus 8 bit, cho phép kết nối các bộ phận ngoại vi với tệp thanh ghi. Bus dữ liệu dùng cho bộ nhớ chơng trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh.
Sơ đồ bộ nhớ:
Hình 19: Sơ đồ bộ nhớ của vi điều khiển ATMEGA8535
* Bộ nhớ chơng trình là bộ nhớ Flash có dung lợng 8Kx16 bit. Để tiện cho việc bảo vệ bằng phần mềm thì bộ nhớ chơng trình đợc chia làm hai khu
Khu vực ứng dụng Bộ nhớ chương trình Khu vực khởi động $FFF R0 R2 ... R30 R31 Bộ nhớ dữ liệu $0000 EEPROM dữ liệu $01 ... $3F $00 SRAM trong $0020 $005F $0060 $025F $0000 Tệp thanh ghi
Thanh ghi I/O
vực là khu vực ứng dụng và khu vực khởi động. Bên cạnh các lệnh đợc lu trữ, bộ nhớ chơng trình cũng lu trữ các vector ngắt bắt đầu tại địa chỉ $000.
* Bộ nhớ dữ liệu đợc bắt đầu với Tệp thanh ghi, sau đó là các Thanh ghi I/O và SRAM trong. Tệp thanh ghi gồm có 32 thanh ghi (R0... R31) tơng ứng với địa chỉ $0000... $001F. Toàn bộ các thanh ghi này đợc sử dụng nh những thanh ghi 8 bit. Nhng có một điều đặc biệt ở đây là các thanh ghi từ R26... R31 có thể kết hợp lại để đợc sử dụng nh 3 thanh ghi 16 bit X-Y-Z.
Hình 20: Tổ chức thành thanh ghi X,Y,Z
Thanh ghi I/O gồm có 64 thanh ghi 8 bit nằm ở địa chỉ $020... $05F, các thanh ghi này làm nhiệm vụ trao đổi dữ liệu vào/ra. Đôi khi các thanh ghi I/O cũng đợc truy cập nh SRAM.
Bộ nhớ SRAM của ATMEGA8535 có dung lợng 512 byte, đợc sử dụng cho các ngăn xếp cũng nh để lu trữ các biến...
* Bộ nhớ EEPROM: ATMEGA8535 có 512 byte EEPROM, đợc tổ chức thành một vùng dữ liệu riêng biệt. Việc ghi và đọc đợc thực hiện trên từng byte. Để đọc EEPROM, CPU phải mất 4 chu kỳ đồng hồ để hoàn thành việc đọc, tuy nhiên việc ghi EEPROM lại chỉ mất có 2 chu kỳ.