Trong nội dung bài viết này, dientusangtaovn muốn giới thiệu đến các bạn một vi điều khiển 8 bit công suất thấp, cấu giao diện 64 chân và dựa trên kiến trúc RISC đó là ATmega128. Hãy cùng tìm hiểu chi tiết về linh kiện này nhé.
Tìm hiểu ATmega128 là gì?
ATmega128 là một vi điều khiển AVR 8-bit có công suất thấp, cấu hình 64 chân và được thiết kế dựa trên kiến trúc RISC. Nó được dùng nhiều trong hệ thống tự động hóa công nghiệp và hệ thống nhúng. Vi điều khiển này được sản xuất bởi Microchip.
Bộ điều khiển ATmega128 khác với bộ điều khiển PIC theo tập lệnh. AVR chỉ yêu cầu một chu kỳ xung nhịp để thực hiện một số lệnh nhất định trong khi PIC cần một số chu kỳ xung nhịp để thực hiện được một lệnh duy nhất.
ATmega128 đi kèm với khá nhiều giao thức như SUART, I2C, SPI, bộ timer, bộ hẹn giờ tăng nguồn, ngắt bên ngoài, chân kích hoạt lập trình, 6 chế độ ngủ,… Bộ giao tiếp ADC có 8 kênh giúp chuyển đổi hiệu quả tín hiệu analog sang kỹ thuật số.
Bộ nhớ chương trình dựa trên Flash và đi kèm bộ nhớ khoảng 128KB trong khi bộ nhớ EEPROM và SRAM đều là 4KB.
ATmega128 dùng để phát triển các dự án điện tử cần tự động hóa. Với khả năng thực hiện những chức năng mà không cần mua thêm các thành phần bên ngoài. Điều này giúp cho vi xử lý này có tính kinh tế cao, là sự lựa chọn tốt nhất cho những người đam mê lĩnh vực điện tử và công nghệ.
Sơ đồ chân của ATmega128
Sơ đồ chân và mô tả chân sẽ giúp bạn hiểu được các chức năng chính của từng chân. Nhờ đó, sử dụng chúng đúng cách và hiệu quả.
ATmega128 có cấu hình 64 chân với chức năng cụ thể như sau:
- Chân số 1: PEN – Bật lập trình
- Chân số 2 – 9: PE0 – PE7 – Cổng E
- Chân số 10 – 17: PB0 – PB7 – Cổng B
- Chân số 18: TOSC2 / PG3
- Chân số 19: TOSC1 / PG4
- Chân số 20: Chân RESET
- Chân số 21: Chân cấp nguồn Vcc – Nguồn dương
- Chân số 22: GND – Nối đất
- Chân số 23: XTAL2 – dao động tinh thể
- Chân số 24: XTAL1 – dao động tinh thể
- Chân số 25 – 32: PD0 – PD7 – Cổng D
- Chân số 33: PG0 (WR)
- Chân số 34: PG1 (RD)
- Chân số 35 – 42: PC0 – PC7 – Cổng C
- Chân số 43: PG2 (ALE)
- Chân số 44 – 51: PA7 – PA0 – Cổng A
- Chân số 52: Chân Vcc – Nguồn dương
- Chân số 53: GND – Nối đất
- Chân số 54 – 61: PF7 – PF0 – Cổng F
- Chân số 62: AREF – Tham chiếu analog
- Chân số 63: GND – Nối đất
- Chân số 64: AVCC – Chân nguồn analog
Đặc tính và thông số kỹ thuật của ATmega128
Bộ vi điều khiển ATmega128 cói các tính năng rất hữu ích. Không gian bộ nhớ lớn và nhiều chân cắm rất phù hợp với các dự án tự động hóa.
Dưới đây là các thông số chính của bộ vi xử lý này:
- Số chân: 64
- CPU: 8-bit AVR
- Điện áp hoạt động: Từ 4,5 đến 5,5V
- Bộ nhớ chương trình Flash: 128KB
- Bộ nhớ RAM: 4KB
- Bộ nhớ EEPROM: 4K
- Số kênh ADC: 10-Bit 8
- Bộ so sánh analog: Có
- Số kênh PWM: 6
- Bộ dao động lên đến 16 MHz
- Số bộ định thời (4): 2 bộ định thời 16 bit, 2 bộ định thời 8 bit
- Gói (3) PDIP TQFP QFN
- Hẹn giờ khởi động: Có
- Số chân I/O: 53
- Giao thức SPI: Có
- Giao thức I2C: Có
- Bộ hẹn giờ watchdog: Có
- Phát hiện suy giảm nguồn (BOD:) Có
- Giao thức SUART: Có
- Chế độ ngủ: 6
- Nhiệt độ hoạt động: Từ -40 đến 85 độ C
Tham khảo chi tiết datasheet của ATmega128 tại: https://pdf1.alldatasheet.com/datasheet-pdf/view/107090/ATMEL/ATMEGA1280.html
Các chức năng chính của vi điều khiển ATmega128
Bộ Timer
ATmega128 có 4 bộ định thời, trong đó có 2 bộ định thời 8 bit và 2 bộ định thời 16 bit. Các bộ định thời này đóng một vai trò quan trọng trong việc tạo ra độ trễ của bất kỳ chức năng đang chạy nào và có thể được dùng theo cả hai cách.
Bộ định thời cũng như bộ đếm để điều khiển các chức năng bên trong của bộ điều khiển và tăng chu kỳ lệnh, trong khi cái sau đếm số khoảng thời gian bằng cách và giảm biên của chân và chủ yếu dành cho các chức năng bên ngoài.
Hai bộ hẹn giờ khác được thêm vào thiết bị đó là:
- Bộ định thời cấp nguồn
- Bộ định thời khởi động Oscillator
Bộ định thời Oscillator reset bộ điều khiển để ổn định bộ dao động tinh thể. Bộ định thời cấp nguồn sẽ tạo ra độ trễ nhỏ khi bật nguồn thiết bị, giúp ổn định tín hiệu nguồn.
Số chế độ ngủ của ATmega128
Vi điều khiển này kết hợp 6 chế độ ngủ để tiết kiệm điện, bao gồm:
- Tiết kiệm điện năng
- Idle
- Standby
- Standby mở rộng
- Tắt nguồn
- Giảm nhiễu ADC
Chức năng phát hiện suy giảm nguồn (BOD)
BOD hay BOR (Brown Out Reset) là một chức năng bổ sung giúp thiết lập lại module khi Vcc xuống dưới mức điện áp ngưỡng brownout. Ở chế độ này, nhiều dải điện áp được tạo ra khi nguồn điện bị sụt. Nếu muốn khôi phục thiết bị từ chức năng BOD, bạn nên bật bộ định thời cấp nguồn để tạo ra một độ trễ nhỏ.
Bộ hẹn giờ watchdog
Hầu hết các vi điều khiển do Microchip sản xuất đều tích hợp bộ hẹn giờ watchdog để reset khi bị treo chương trình đang chạy trong quá trình biên dịch hoặc trong vòng lặp vô hạn. Chức năng chính của bộ định thời này là để ngăn bộ điều khiển khỏi việc reset thủ công. Bộ định thời watchdog hoạt động giống như đồng hồ đếm ngược.
Bộ ngắt của ATmega128
Các ngắt rất hữu ích cho việc gọi chức năng mong muốn đặt chức năng đang chạy chính ở trạng thái chờ cho đến khi lệnh yêu cầu được thực thi. Bộ điều khiển quay trở lại chương trình chính sau khi có lệnh ngắt.
Giao tiếp I2C
Giao thức I2C dùng để bố trí giao tiếp giữa các thiết bị tốc độ thấp như bộ chuyển đổi ADC và DAC và bộ vi điều khiển. Đây là giao tiếp hai dây:
- Clock nối tiếp (SCL)
- Dữ liệu nối tiếp (SDA)
Tín hiệu đầu tiên là tín hiệu clock được tạo ra bởi thiết bị chính với chức năng chủ yếu để đồng bộ hóa việc truyền dữ liệu giữa các thiết bị. Tín hiệu nối tiếp SDA sử dụng để lưu giữ dữ liệu mong muốn.
Giao tiếp SPI
ATmega128 có giao diện ngoại vi nối tiếp (SPI) chủ yếu để giao tiếp giữa bộ vi điều khiển và các thiết bị ngoại vi khác như cảm biến, thẻ SD, thanh ghi dịch chuyển. Có xung nhịp và các đường dữ liệu riêng biệt, được phân lớp với một dòng lựa chọn để chọn thiết bị liên quan để giao tiếp. Hai chân được sử dụng cho giao tiếp SPI
- MOSI (Đầu vào slave đầu ra master)
- MISO (Đầu ra slave đầu vào master)
Chân MOSI để nhận dữ liệu khi vi điều khiển hoạt động như slave. Chân MISO giúp gửi dữ liệu bởi vi điều khiển sau đó hoạt động như một chế độ slave.
Các bộ nhớ trong ATmega128
Hai loại bộ nhớ chủ yếu của ATmega128 là bộ nhớ chương trình (Flash Memory) và bộ nhớ SRAM. Module này kết hợp kiến trúc Harvard trong đó các bộ nhớ riêng biệt được dành riêng cho cả dữ liệu và chương trình. Bộ nhớ trong bộ điều khiển là sự kết hợp bộ nhớ tuyến tính và thông thường. Thanh ghi tệp truy cập nhanh được phân lớp với mục đích chung 32 x 8 Bit.
Bộ nhớ chương trình (ROM) của ATmega128
Bộ nhớ chương trình có dung lượng 128KB là nơi lệnh gần đây được gọi theo sau lệnh tiếp theo, thực hiện lệnh trong mỗi chu kỳ xung nhịp.
ROM chủ yếu được phân loại thành hai phần có tên là phần chương trình khởi động và phần chương trình ứng dụng. Phần trước đi kèm với bộ nhớ Flash ứng dụng đóng vai trò chính để viết lệnh SPM.
Bộ nhớ dữ liệu (RAM)
Bộ nhớ dữ liệu có dung lượng khoảng 4KB. Có 5 chế độ định địa chỉ khác nhau trong kiến trúc AVR được sử dụng để xử lý bộ nhớ RAM này đó là:
- Trực tiếp
- Gián tiếp
- Gián tiếp với dịch chuyển
- Gián tiếp với trước giảm
- Gián tiếp với sau tăng.
3 thanh ghi địa chỉ là X, Y và Z, tăng và giảm trong các chế độ địa chỉ gián tiếp. Thanh ghi điều khiển có mặt trong module ngắt linh hoạt chủ yếu đi kèm với việc đặt bit cho phép ngắt toàn cục trong thanh ghi trạng thái. Các ngắt này đi kèm với một bảng vector ngắt trong đó vector ngắt là một phần chính của nó và cả hai đều tỉ lệ nghịch với nhau. Điều quan trọng cần lưu ý đó là bảng vector ngắt phụ thuộc vào vị trí vectơ ngắt.
Module ALU hoạt động trong một chu kỳ xung nhịp duy nhất và được chia thành ba chức năng chính gọi là chức năng trực tiếp, số học và chức năng bit. ALU được kết nối trực tiếp với 32 thanh ghi mục đích chung.
Trình biên dịch dùng cho ATmega128
Trình biên dịch là phần mềm cơ bản được để viết và biên dịch chương trình vào bộ điều khiển AVR. Sau đây là một số trình biên dịch cơ bản chủ yếu được sử dụng cho vi điều khiển AVR.
- GCC Port là một lựa chọn tốt khác để bắt đầu để biên dịch chương trình cho ATmega128 nhưng lại có giao diện hơi phức tạp. Nó hoạt động với cả hệ điều hành Windows và Linux.
- IAR là trình biên dịch trả phí và có một giao diện chuyên nghiệp. Theo kinh nghiệm của nhiều người, trình biên dịch này là phiên bản tốt nhất cho vi điều khiển AVR.
- ImageCraft là một lựa chọn có giá trị để biên dịch mã, nhưng nó không kết hợp một số tính năng GUI như trình chỉnh sửa và quản lý project có thể khiến bạn gặp rắc rối trong quá trình thực thi mã.
Các ứng dụng của ATmega128
ATmega128 được ứng dụng trong:
- Những hệ thống nhúng
- Tự động trong công nghiệp
- Chế tạo quadcopter
- Tự động hóa nhà
- Đồ án dành cho sinh viên
Trên đây là những thông tin cơ bản về vi điều khiển ATmega128. Mong rằng bài viết đã đem lại cho bạn nhiều kiến thức hữu ích.