PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 18-01-2010, 02:53 AM   #1
minhcuong1122
Đệ tử 1 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 17
:
CCS bị lỗi ?

Anh chị ơi, e chỉ muốn thử tạo xung 120khz ra ở chân ccp1. Xung tạo ra không đúng với ý của e chút nào. E dùng bản CCS4.104. nhưng thử lại các bản cũ khác cũng vẫn vậy (chu kì xung đều lớn hơn gấp đôi). E hết cách rồi.

#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES RESERVED //Used to set the reserved FUSE bits
#use delay(clock=7680000)
void main()
{
setup_timer_2(T2_DIV_BY_1,15,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(32);
while (1){}
}
minhcuong1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 07:37 AM   #2
minhcuong1122
Đệ tử 1 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 17
:
Đoạn chương trình là e sử dụng wizard để tạo ra, mà giá trị nạp vào các thanh ghi e cũng đã tính đi tính lại nhiều lần lắm. Các anh chị vào giúp e một tay với. PLS.
minhcuong1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 08:31 AM   #3
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Bạn mô phỏng hay chạy mạch thực tế?
Bạn đo tần số xung ra = cái gì?

"Xung tạo ra không đúng với ý của e chút nào" -> ko đúng như thế nào???

Bạn chưa nêu rõ vấn đề của bạn thì làm sao người khác có thể giúp!
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 10:38 PM   #4
minhcuong1122
Đệ tử 1 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 17
:
Dạ, cảm ơn a giúp e. Chu kì xung luôn luôn gấp đôi. E mô phỏng proteus và cũng làm mạch thực tế, đo bằng oscilloscope ở trường. E đã đo với 2 máy osc khác nhau, kết quả cũng vẫn chu kì xung là 8.3333*2 = 16.6666 uS. Xung e cần tạo là 120Khz, chu kì phải là 8.3333us mới đúng. E xài thạch a 7.680Mhz a à. E cũng đã từng nghi là thạch anh hư, nên e viết thử chương trình delay 1s, chớp tắt led, kết quả mạch thật chạy rất tốt. Tóm lại, chỉ có tạo xung hok đúng thôi. A giúp e nhé a.
minhcuong1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 10:42 PM   #5
minhcuong1122
Đệ tử 1 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 17
:
Thêm nữa, e cũng lấy osc đo thử thạch anh, tần số dao động hoàn toàn đúng: 7.680Mhz... hic.
minhcuong1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 11:23 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Lỗi ở dòng gọi hàm set_pwm1_duty(). Bạn hãy đọc thật kỹ phần mô tả chức năng của hàm này trong tài liệu hướng dẫn của CCS C (link ở đây: http://www.ccsinfo.com/downloads/ccs_c_manual.pdf, nếu bạn chưa có tài liệu này).

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-01-2010, 05:36 AM   #7
minhcuong1122
Đệ tử 1 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 17
:
Cảm ơn anh,
E vừa đọc phần setup_PWM1_duty() (trang 236).

Writes the 10-bit value to the PWM to set the duty. An 8-bit value may be use
if the most significant bits are not required. The 10 bit value is then used to
determine the duty cycle of the PWM signal as follows:
%duty cycle = value / [ 4 * (PR2 +1 ) ]

Theo như trong đó, e cần đặt duty = 50% = 0.5 thì giá trị value phải nạp là:
value = 4* duty* (PR2 + 1) = 4* 0.5* (15+1) = 32
Hình như có chỗ nào đó e chưa hiểu đúng thì phải (10bits- 8bits ???), hic. Nhờ a chỉ e thêm "tí manh mối" nữa đi. Cảm ơn a nhiều lắm.
minhcuong1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-01-2010, 11:28 AM   #8
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi minhcuong1122 View Post
Cảm ơn anh,
E vừa đọc phần setup_PWM1_duty() (trang 236).

Writes the 10-bit value to the PWM to set the duty. An 8-bit value may be use if the most significant bits are not required. The 10 bit value is then used to determine the duty cycle of the PWM signal as follows:
%duty cycle = value / [ 4 * (PR2 +1 ) ]

Theo như trong đó, e cần đặt duty = 50% = 0.5 thì giá trị value phải nạp là:
value = 4* duty* (PR2 + 1) = 4* 0.5* (15+1) = 32
Hình như có chỗ nào đó e chưa hiểu đúng thì phải (10bits- 8bits ???), hic. Nhờ a chỉ e thêm "tí manh mối" nữa đi. Cảm ơn a nhiều lắm.
Vì bạn dùng một giá trị hằng số < 255 làm đối số của hàm, nên nó sẽ hiểu đây là giá trị 8-bit. Giá trị này được dùng như 8-bit cao nhất của duty cycle, dẫn đến công thức cần dùng là value = duty * (PR2 + 1) = 0,5 * (15 + 1) = 8! (chứ không phải công thức dành cho duty cycle 10-bit như trên).

Nếu bạn đặt giá trị 32 (tức là lớn hơn PR2 + 1) làm đối số của hàm thì có thể xảy ra hiện tượng mà bạn đã quan sát được.

Xem giải thích chi tiết hơn ở đây:
http://www.picvietnam.com/forum/showthread.php?t=5772

Nên dùng phiên bản mới nhất của tài liệu hướng dẫn.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 20-01-2010 lúc 11:45 AM. Lý do: bổ sung thông tin
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-01-2010, 12:59 PM   #9
minhcuong1122
Đệ tử 1 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 17
:
Cảm ơn a Nam rất nhiều,
Yeah.
Hi, giải quyết được "chứng đau đầu" của e mấy nay. Đọc xong giờ e mới thấy từ "thật kĩ" là có chủ ý. Rất cảm ơn a, chúc a nhiều sức khỏe.
minhcuong1122 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:19 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam