🌱 AVR 3. ATMega16/32 GPIO Examples
Ví dụ kinh điển khi làm việc với GPIO, đó là Blink LED và Bấm nút đảo LED. Với series AVR này, mình sẽ lấy ví dụ bấm nút đảo led.
👉 Một số đặc điểm cần chú ý khi thực hành GPIO
- Mỗi chân IO trên Vi điều khiển AVR có thể được mặc kiểu Sink hoặc Source với dòng tối đa là 40mA, vì vậy, khi thiết kế và mắc mạch cần chú ý tới dòng vào chân IO và dòng ra tối đa của nó, tuyệt đối không được vượt qua 200mA, và nên để dưới 40mA.
- Trên các chân của AVR đều có internel Pull-up Register, vì vậy khi nối nút bấm, chúng ta không cần điện trở kéo bên ngoài.
(Để hiểu rõ hơn về kiểu Sink/Source, các bạn tham khảo Bài viết sau!)
👉 Với các thanh ghi đã được giới thiệu ở bài AVR 2. GPIO Registers, chúng ta có bảng giá trị như sau:
Như vậy để lập trình GPIO cho AVR, chúng ta đơn giản trải qua các bước sau:
- Cấu hình pin tương ứng là Input/Output bằng thanh ghi DDRx.
- Cấu hình giá trị ban đầu bằng thanh ghi PORTx.
- Với Input thì giá trị ban đầu là Pull-up/Pull-down.
- Với Output thì giá trị ban đầu chính là giá trị ban đầu của đầu ra tương ứng (HIGH/LOW).
- Với Output, để thay đổi đầu ra, chúng ta sử dụng thanh ghi PORTx.
- Với Input, để đọc giá trị đầu vào, chúng ta sử dụng thanh ghi PINx.
👉 Trong ví dụ này
- Chúng ta sẽ cài đặt nút bấm (Switch) là một input, trên chân PD2.
- Sử dụng LED để hiển thị trạng thái, LED nối với chân PD3.
👉 Cụ thể, với bài toán Button - LED, chúng ta sẽ làm như sau:
👉 Các bạn có thể tham khảo thêm video của mình dưới đây!
Tags:
AVR Tutorials