Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Trong hướng dẫn này, tôi sẽ giải thích cho bạn cách
- điều khiển động cơ DC với PWM
- giao tiếp qua UART
- xử lý ngắt bộ hẹn giờ
Trước hết, chúng tôi sẽ sử dụng bảng Phát triển hệ thống AVR Core mà bạn có thể tìm thấy trên Aliexpress với giá khoảng 4 USD. Liên kết bảng Phát triển ở đây. Chúng tôi cũng sẽ sử dụng Atmel ICE Debugger và Atmel Studio để lập trình và gỡ lỗi phần mềm của chúng tôi.
Bước 1: Lặn sâu vào bảng dữ liệu & mã nguồn - Tốc độ đồng hồ
Trong 1. gạch đầu dòng, chúng tôi xác định tần số tinh thể của chúng tôi nơi chúng tôi có thể nhìn thấy trên bảng phát triển
Bước 2: Đặt đăng ký UART
Để giao tiếp với UART, bạn phải thiết lập Bộ ghi tốc độ truyền của USART - UBRRnL và UBRRnH một cách chính xác, bạn có thể tự tính toán hoặc bạn có thể sử dụng máy tính trực tuyến để dễ dàng nhận được các giá trị chính xác
Máy tính trực tuyến
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Vì vậy, giá trị MYUBBR được tính sau đó, Trong thanh ghi UCSR0B, chúng ta kích hoạt RXEN0 (kích hoạt recv) TXEN0 (cho phép truyền) và RXCIE0 (RX cho ngắt). Trong thanh ghi UCSR0C, chúng ta chọn kích thước ký tự 8 bit.
Sau khi chúng tôi đặt bit ngắt RX, chúng tôi nên thêm hàm ISR cho USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {đệm [đệmIndex] = rcvChar; bufferIndex ++; }}
Bạn không nên thực hiện bất kỳ logic nghiệp vụ nào trong quy trình dịch vụ gián đoạn của mình. Bạn phải làm cho hàm trả về càng sớm càng tốt.
Bước 3: Cài đặt PWM
Trong chức năng initPWM, chúng tôi đặt tỷ lệ xung nhịp CPU, chế độ Bộ hẹn giờ / Bộ đếm là Fast PWM và đặt hành vi của nó bằng các bit COM
Chúng ta cũng nên kết nối động cơ DC với chân OC2 được chỉ định trong Bảng 66. So sánh Chế độ đầu ra, Chế độ PWM nhanh trong biểu dữ liệu của chúng tôi, bạn cũng sẽ thấy rằng chân OC2 là (OC2 / OC1C) PB7
Bước 4: Kết quả
Khi bạn tải lên mã nguồn trong tệp đính kèm.
Bạn có thể nhập giá trị PWM mới (0-255) từ UART (bạn có thể sử dụng thiết bị đầu cuối cổng nối tiếp arduino) để đặt tốc độ Động cơ DC.