🌱 AVR 2. ATMega16/32 GPIO Register
GPIO là ngoại vi cơ bản và phổ biến nhất trong vi điều khiển, dù dùng tính năng gì thì chúng ta cũng cần các chân input/output để giao tiếp với ngoại vi bên ngoài. Hai chức năng cơ bản nhất của GPIO là Input và Output. Bài viết này nói về ngoại vi GPIO trong vi điều khiển ATMega32/16.
👉 ATmega32 - GPIO
GPIO có một số đặc điểm, chức năng sau giống với STM32, các bạn đọc bài viết này.
ATmega32 có 32 chân, chia làm 4 port (A, B, C, D), mỗi port có 8 chân, các chân có thể được sử dụng như GPIO.
Sơ đồ chân của Atmega32/16:
👉 Tất cả các chân đều có điện trở pull-up, nguồn cung cấp riêng, và diode bảo vệ.
- Mỗi chân có thể nối kiểu sink hoặc source, dòng max 40mA.
- Mỗi chân cũng có một số chức năng đặc biệt liên quan (như UART, ADC, SPI, ...).
👉 Các thanh ghi liên quan
Mỗi port có 3 thanh ghi 8-bit liên quan đến việc cấu hình và thực hiện chức năng GPIO:
💬 Thanh ghi DDRx (Data direction register)
Dùng để cấu hình xem chân tương ứng là đầu vào hay đầu ra.
- Bit = 1, chân là output.
- Bit = 0, chân là input (mặc định).
💬 Thanh ghi PORTx (Data register)
Dùng để đặt các chân ở mức logic HIGH hoặc LOW.
- Bit = 1, output = HIGH hoặc input = chế độ điện trở pull-up.
- Bit = 0, output = LOW hoặc input = chế độ floating
- Bit = 0 là chế độ mặc định.
💬 Thanh ghi PINx (Input Pins Address Register)
Dùng để đọc các giá trị trên các chân của cổng.
Các bit này là các bit chỉ đọc, dùng để đọc nút bấm chẳng hạn.
👉 x có thể là A, B, C, D là các cổng tương ứng. AVR cho phép tác động đến từng bit các thanh ghi trên, nên có thể tác động đến từng chân bằng kỹ thuật mặt nạ bit.
👉 Video hướng dẫn lập trình ngoại vi GPIO - Blink LED