mọi người ơi tại sao mình dùng dòng lệnh này PWM = read_adc(0)*read_adc(1)/0xff (#define PWM OCR0)mà khi thay đổi giá trị biến trở ở kênh ADC mà nó không cập nhật giá trị của ADC trong mô phỏng không ra được xung. Trong khi đó mình để một giá trị cụ thể thì lại được ví dụ PWM = 0x80*0x80/0xff
Thông báo
Collapse
No announcement yet.
help me....
Collapse
X
-
help me....
mọi người ơi tại sao mình dùng dòng lệnh này PWM = read_adc(0)*read_adc(1)/0xff (#define PWM OCR0)mà khi thay đổi giá trị biến trở ở kênh ADC mà nó không cập nhật giá trị của ADC trong mô phỏng không ra được xung. Trong khi đó mình để một giá trị cụ thể thì lại được ví dụ PWM = 0x80*0x80/0xffTags: None
-
Nguyên văn bởi dodanh Xem bài viếtmọi người ơi tại sao mình dùng dòng lệnh này PWM = read_adc(0)*read_adc(1)/0xff (#define PWM OCR0)mà khi thay đổi giá trị biến trở ở kênh ADC mà nó không cập nhật giá trị của ADC trong mô phỏng không ra được xung. Trong khi đó mình để một giá trị cụ thể thì lại được ví dụ PWM = 0x80*0x80/0xff
Code:int a; a=read_adc(0); PWM=a*read_adc(1)/0xff;
AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
-
Nguyên văn bởi VNarmy Xem bài viếtBạn thử chuyển lại thế này xem:
Code:int a; a=read_adc(0); PWM=a*read_adc(1)/0xff;
a = read_adc(0)
b = read_adc(1)
rồi PWM = a*b/0xff
cũng có được đâu không hiểu tại sao, hay tại do mô phỏng không được vì giờ mình mới đang thiết kế phần cứng. Thuật toán như vậy thì đúng rồi đúng không?
Comment
-
ADC của AVR có độ phân giải 10-bit. Vì vậy nếu bạn dùng hàm read_adc() của CodeVisionAVR thì giá trị trả về là kiểu unsigned int (16-bit). Công thức tính của bạn do vậy cũng là tính toán trên các giá trị 16-bit. Kết quả sau khi tính toán lại nạp vào thanh ghi 8-bit OCR0. Nếu không có thao tác ép kiểu hoặc ép kiểu không đúng, kết quả nhận được sẽ không thể đoán trước (có thể ko thay đổi, có thể sai).
Hãy thử ép kiểu cho từng câu lệnh, ví dụ:
Code:unsigned long temp; unsigned int a,b; a = read_adc(0); b = read_adc(1); temp = a*b/0xff; PWM = (unsigned char) temp;
blackmoon.
Comment
-
Nguyên văn bởi blackmoon Xem bài viếtADC của AVR có độ phân giải 10-bit. Vì vậy nếu bạn dùng hàm read_adc() của CodeVisionAVR thì giá trị trả về là kiểu unsigned int (16-bit). Công thức tính của bạn do vậy cũng là tính toán trên các giá trị 16-bit. Kết quả sau khi tính toán lại nạp vào thanh ghi 8-bit OCR0. Nếu không có thao tác ép kiểu hoặc ép kiểu không đúng, kết quả nhận được sẽ không thể đoán trước (có thể ko thay đổi, có thể sai).
Hãy thử ép kiểu cho từng câu lệnh, ví dụ:
Code:unsigned long temp; unsigned int a,b; a = read_adc(0); b = read_adc(1); temp = a*b/0xff; PWM = (unsigned char) temp;
blackmoon.
Code:PWM=(unsigned char)((unsigned int) read_adc(0)*(unsigned int) read_adc(1)/0xFF)
AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Con mẹ mày! Thằng bố mày!
Ngủ với nhau rồi đẻ ra mày!
Với bao nhiêu hy vọng, niềm tin....
Giờ mày ngu thế thì bố mẹ mày nghĩ thế nào???
Ít nhất thì phải biết lo thân chứ, hả con...
Bố...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 23:42 -
-
bởi nhathung1101Vì những sản phẩm loại này, tôi vứt đầy dưới gầm bàn.
Bạn đăng lên để bán hay gián tiếp quảng cáo cho họ???...-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 23:29 -
-
bởi nhathung1101Bạn thử kiểm nghiệm với thiết bị nào???
Tôi xưa nay ghét hàng TQ. Nhưng phải có bằng chứng.
Và tôi đang nghi ngờ bạn bán hàng TQ thì phải???
Nếu vậy là xong luôn!-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 23:20 -
-
bởi nhathung1101Còn không hiểu, đổ tội cho "CÔNG NHÂN LÀM ẨU", thì bạn tự xem bản thân nhé.
Nói láo là không được. Bằng chứng đâu?
Cho bạn 3 ngày để chứng minh. Nếu không khóa luồng để tránh thị phi.-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 23:13 -
-
bởi nhathung1101Nếu bạn làm việc nghiêm chỉnh với Bô Inh hay E Bớt, họ có công thức toàn diện cho cánh quạt của bạn.
Họ có công thức, còn bạn tìm ra hay không thì do bạn.
Còn ở VN, vẫn rất tự hào vì có em đang học lớp 10 đã tính...-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 23:10 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Đêm nay về, háo hức xem ae cãi chửi nhau thế nào?
Nhưng vắng hơn chùa Bà Đanh!!!
Thiếu tôi mất vui hay là các vị đang định làm gì???
Cảnh báo luôn: Những luồng vô bổ tôi sẽ xóa trong phút mốt, nếu không đáp...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 22:56 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101Lại hạ cánh. Nhâm nhi chén rượu, đọc vài bài cho nó hài....
Nhưng chẳng thấy lão Phàm. Chắc lão lại bị bà í bắt ngủ chung rồi!!!
Thành thật chia buồn.-
Channel: Tâm tình dân kỹ thuật
hôm nay, 22:40 -
-
bởi dinhthuong80Video thô (vì chưa ghép lời và chữ phụ đề) test bô MPPT SR-DM120-W ( dùng cho pin LiPO4 24.6V/24Ah, công suất ra Led 120W max) : https://youtu.be/RbFzK_Za_r4?si=-ztHM755BncBVnx_
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 17:00 -
-
bởi dinhthuong80Một số bộ/model Điều khiển sạc NLMT (MPPT) dùng cho đèn Led của Hãng SRNE không có chức năng bảo vệ nhiệt độ (bị lỗi không ngắt quá nhiệt: SR-EH120-W, SR-EH120-ES, SR-DM120-W, ...), do đó pin LiPO4 dùng nó có thể sạc hoặc xả bất kể nhiệt độ cao đến đâu, 75-200 độ C!
dinht...-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 16:53 -
Comment