Mình mới nhận yêu cầu của sếp thiết kê mạch điều khiển cường độ sáng tối của led. Cụ thể là điều khiển led sáng từ từ và tắt cũng từ từ. mình định dùng pwm trên atmega 88 thấy bảo có 4 kênh pwm nhưng mình chỉ biết cấu hình hai kênh ở chế độ 14 trên Codevision AVR. Các bác giúp mình với.
Các bác cao thủ AVR giúp mình PWM 4 kênh với
Collapse
X
-
Ngắt timer sẽ tăng một biến từ 0 đến giá trị nào đó (độ phân giải của PWM) rồi lại reset nó về 0 giả sử gọi biến là Pulse. Giá trị biến này giống như 1 xung răng cưa.
Dùng bao nhiêu kênh PWM thì sẽ lại có tương ứng bấy nhiêu biến Offset. Mỗi lần ngắt timer tăng Pulse xong thì lại so sánh Pulse với các biến Offset. Nếu Pulse < Offset thì xuất 1 ra pin PWM, nếu Pulse >= Offset thì xuất 0.
Như vậy thì bạn muốn bao nhiêu PWM tùy thích miễn là đủ IO và đủ RAM để lưu biến Pulse và Offset.
Ví dụ mình sẽ tạo 10 PWM như sau :
Code:unsigned int NumberOfChannel=10; // 10 kênh PWM unsigned char Offset[NumberOfChannel]; // 10 biến Offset để set độ rộng cho 10 kênh. unsigned char Pulse=0; void NgatTimer() { Pulse++; // 0-> 255->0 - độ phân giải PWM là 8bit (từ 0 đến 255). for(int i=0;i<NumberOfChannel;i++) // so sánh Pulse với 10 Offset để điều khiển 10 PWM { if(Pulse<Offset[i]) PIN_PWM[i]=1; // PIN_PWM là pin output. else PIN_PWM[i]=0; } } // Để set PWM5 có độ rộng 128 và PWM9 có độ rộng 123 sẽ làm như sau : void Set() { Offset[4]=128; Offset[8]=123; }
Comment
Bài viết mới nhất
Collapse
-
-
Trả lời cho TCL - Tập hợp các vấn đề về màn hình màu TCLbởi dtvankhoeBác nào có file rom này cho em xin em cảm ơn ạ TCL L43S6500 – TPD.RT2841.PB772
-
Channel: Điện tử truyền hình
30-08-2026, 21:08 -
-
bởi domar123Sự kết hợp giữa vi xử lý siêu cấp AMD Ryzen Threadripper 9960X / 9970X cùng card đồ họa Radeon RX 9060 XT / RX 9070 XT 16GB mang lại một cỗ máy "all-in-one" đúng nghĩa. Đây là cấu hình đáp ứng trọn vẹn cho những người dùng cần một hệ...
-
Channel: Đánh giá sản phẩm DTVN
27-08-2026, 11:43 -

Comment