![]() |
Xác nhận với bạn rằng PICkit 2 v2.55 vẫn đưa ra cảnh báo trên ngay cả khi tất cả các field của tất cả các từ cấu hình đã được mô tả tường minh giá trị trong code.
Về code LCD của bạn, bạn để ý trong chương trình con khởi tạo LCD của tôi, sau mỗi bước đặt cấu hình tôi đều có delay 1 ms (sau khi xóa màn hình thì phải chờ khoảng 5 ms), code của bạn đang xuất ào ào các giá trị cấu hình ra LCD. Bạn thử chỉnh lại phần này xem, nếu vẫn không thành công, có lẽ bạn phải thực hiện quá trình khởi động mềm cho LCD, tham khảo quy trình ở post #269, link dưới đây: http://www.picvietnam.com/forum/showthread.php?t=357 Xung Enable của bạn có thể không đủ rộng (vì bạn bật xong thì tắt nó ngay). Code ví dụ của tôi có 1 vòng for nhỏ dùng để tạo độ rộng tối thiểu 1 us cho xung Enable. Thân, |
1 Attachment(s)
Cám ơn anh Nam nhé, em đã làm đúng như anh bảo nhưng LCD vẫn không chịu hiển thị, em kiểm tra phần cứng không có vấn đề gì, em thử test chương trình cũ của một anh ( tên là H ) ra đi không một lời chăn chối thì LCD vẫn chạy. Thôi em đành bỏ cái mạch đó đi làm lại mạch mới, nhưng em vẫn ấm ức lắm, rồi có ngày em sẽ tìm được nguyên nhân.
Thưa anh em nhận được nhiệm vụ mới đó là thực hiện điều khiển số PFC để ổn định áp ra...... Em đã viết code mong em xem giúp em : Code:
////////////////////////// tham khao tutorial 06.01 cua anh Nguyen Quang Nam //////////////////3 Biến đổi AD đưa vào 3 chân AN0,1,2. ( ở phần khai báo không biết có đúng không ) Phần tính toán PI của áp và dòng em thực hiện trong vong ngắt của ADC: Bằng suy nghĩ của một nông dân, em cứ thực hiện từng bước tính toán như sơ đồ của nó. Em đình dạng dữ liều ra kiểu fractional (Q15) cho ADC, thưa anh có phải khi biến đổi ADC ở 3 đầu vào thì kết quả của từng việc biến đổi sẽ lưu lần lượt ở ADCBUF0,1,2 không hả anh ? và khi em thực hiện phép nhân Vx = Vc*ADC_Vi; liệu rằng nhân 2 số kiểu fractional nó có tràn không anh và cách xử lý ra sao ? Liệu răng chương trình này có điều khiển được không anh nhỉ, Em tham khảo nhiều tài liệu , thấy họ viết code rất phức tạp, dùng ngắt timer, ngắt PWM, ADC, ..... |
Có lẽ bạn nên đọc thêm về module ADC của dsPIC. Khi đã hiểu rõ hơn cách hoạt động của module này, bạn có thể bắt đầu với code đơn giản để đọc 3 tín hiệu analog, rồi mới tiếp tục những công việc xử lý khác.
Nói chung, không nên thực hiện những tính toán phức tạp, hay gọi hàm tính toán phức tạp trong chương trình xử lý ngắt (với cách thiết lập trong ví dụ của tôi, bạn sẽ có khoảng 40000/16 = 2500 ngắt ADC mỗi giây). Nhân hai số fractional trong dsPIC sẽ không tràn, điều này được đảm bảo. Trong sơ đồ bạn đã post lên, không có phần D trong PID. Như bạn đã viết, người ta dùng chương trình khá phức tạp để thực hiện bài toán mà bạn đang nghiên cứu. Do vậy, bạn cứ từ từ tìm hiểu, và tiến dần từ những chương trình rất đơn giản, và cơ bản. Chúc bạn thành công. Thân, |
| Múi giờ GMT. Hiện tại là 09:49 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam