|
Tài trợ cho PIC Vietnam |
Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua |
|
Ðiều Chỉnh | Xếp Bài |
20-08-2007, 07:06 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Feb 2007
Bài gửi: 13
: |
Trục trặc với 16f877a ngay từ đầu?
Chào mọi người
Minh đang thực hành 16f877a nhưng gặp một trục trặc như sau: (mong mọi người chỉ giúp) mình thử xuất ra chân RB4 đến RB7 điện áp 5V nhưng khi dung dồng hồ đo thi không thấy lên 5V mà chỉ là ở mức 0, đôi khi là 0.02V khi để thang đo ở mức 0.1V trong khi mình mô phỏng trên proteus thì vẫn đúng. Chương trình rất đơn giản, minh nghĩ không có gì sai cả #include<16F877A.h> #fuses NOWDT,PUT,HS,NOPROTECT #use delay(clock=40000000) #use fast_io(b) #byte portb=0x06 #bit RB1=portb.1 main() { set_tris_b(0b00001111); while (true) { portb=0b11110000; } } mình dùng thach anh 4MHz và tụ cho thạch anh là 104pF.Mình cũng nghỉ tới khả năng chip bi hư nhưng chip vẫn nap được bình thường, thấy không báo lỗi gi cả. mình không thể tìm ra dươc sai chổ nào. Mong các bạn chi giúp với. thay đổi nội dung bởi: tranducbinh, 21-08-2007 lúc 12:06 AM. Lý do: thiếu ý |
20-08-2007, 07:16 PM | #2 |
Trưởng lão PIC bang
|
Nếu tụ pi của bạn được ghi là 104 thì nó là tụ 100 nF, chứ không phải là 104 pF (tôi cho là giá trị 104 pF là không chuẩn). Bạn cần tụ khoảng 15 đến 33 pF cho thạch anh 4 MHz.
Chương trình của bạn đang xuất giá trị 1 ra các chân RB4..RB7, chứ không phải RB0. 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 |
20-08-2007, 07:22 PM | #3 |
Đệ tử 1 túi
Tham gia ngày: Feb 2007
Bài gửi: 13
: |
Xin cảm ơn anh đã gửi câu trả lới.
Ban đầu thì em cũng dùng tụ 33p nhưng gặp trục trặc như trên thế là chuyển sang 104nF( theo như anh nói). Và em cũng nhầm lần ở chân RB0 nhưng mà em đã đo hết các chân của port b thì vẫn tình trang như vậy thôi. Không biết là em có thiếu cái gi không nữa? Em cũng đã thử nhiếu chip nhưng kết thì vẫn giống nhau. Không biết có cần phải gắn thêm tụ vào đâu không nữa.Nếu có thì xin mọi ngưới hãy chỉ giúp. |
20-08-2007, 07:40 PM | #4 |
Trưởng lão PIC bang
|
Vẫn còn chân MCLR cần được xác định trạng thái. Bạn vẫn chưa post sơ đồ mạch mà bạn đang dùng để thử nghiệm. Thông thường, nếu bạn cho phép chân MCLR hoạt động như ngõ vào để reset PIC thì bạn cần phải có 1 điện trở kéo lên, nối giữa chân MCLR (chân 1 của PIC) và nguồn Vdd, giá trị điện trở khoảng 10k đến 33k. Bạn cũng cần đảm bảo tất cả các chân Vdd và Vss đều được nối vào điện thế thích hợp. Giữa các chân Vdd và Vss nằm sát nhau bạn nên có ít nhất một tụ bypass (hay decoupling) có giá trị 100 nF, loại ceramic.
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 |
20-08-2007, 10:41 PM | #5 | |
Đệ tử 2 túi
Tham gia ngày: Aug 2005
Bài gửi: 30
: |
Trích:
Phải vầy nè set_tris_b(0b11110000); |
|
21-08-2007, 12:20 AM | #6 |
Đệ tử 1 túi
Tham gia ngày: Feb 2007
Bài gửi: 13
: |
Mach của em đơn giản chỉ là cấp nguồn cho pic và đo điện áp ở đầu ra thôi. Nhưng có một điều là em không dùng chân MCLR, không biết có ảnh hường gì tới hoạt động của pic hay không. Trong lúc viết reply này thì em chưa thử lại. Em thường nối thẳng chân MCRL xuống đất khi cần reset pic. Làm như vậy thì có vấn đề gi không nhì?
Mong mọi người chỉ giúp. |
21-08-2007, 12:25 AM | #7 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
21-08-2007, 12:08 PM | #8 |
Đệ tử 1 túi
Tham gia ngày: Feb 2007
Bài gửi: 13
: |
Đúng là khi nối chân MCLR thì pic đã hoạt động nhưng có điều là khi đo thì điện áp ở cả 4 chân từ RB4 đến RB7 chỉ đạt được là 2.3V chứ không phải là 5V, trong khi nguồn cấp cho pic vẫn ổn định ở 5V và mô phỏng trên proteus thì cũng là 5V
Mong mọi người chỉ giúp. |
21-08-2007, 03:13 PM | #9 |
Đệ tử 4 túi
Tham gia ngày: May 2005
Bài gửi: 83
: |
Bạn xem lại TA bạn dùng là gì , theo như khai báo của bạn là 40MHz , trong khi 877A max chỉ 20MHz thôi.
thay đổi nội dung bởi: batbatdieu, 21-08-2007 lúc 03:19 PM. |
21-08-2007, 05:35 PM | #10 |
Đệ tử 1 túi
Tham gia ngày: Feb 2007
Bài gửi: 13
: |
Mình đã nhầm khi đặt 40MHz và đã sửa lại là 4MHz trong chuong trình. Còn mạch thật thì dùng thach anh N4.000J. Nhưng sau khi sửa xong và nạp lại thì vẫn là 2.3 V. Không biết tại sao nữa.
Mong mọi người chỉ giúp. |
21-08-2007, 08:11 PM | #11 |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
pic 16F877A co chít ko?
cho em hỏi Pic của em ạ: em dùng con pic 16F877A ,phần mềm nạp wi800.ban đầu nó nhận pic,xóa đc cả pic.nhưng khi em nạp dữ liệu vào thì nó báo lỗi(em quên ko chụp lỗi rùi).
con pic khac em nạp ngon ơ(như vậy là pic chít ạ) |
21-08-2007, 08:28 PM | #12 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
21-08-2007, 08:30 PM | #13 | |
Trưởng lão PIC bang
|
Trích:
Bạn thử lại như sau: ra lệnh xóa chip, sau đó cho đọc lại ngay sau khi xóa chip, để xem chip có thực sự bị xóa hay không. Nếu chip không thể bị xóa thì bạn sẽ gặp lỗi như trê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 |
|
22-08-2007, 12:30 AM | #14 | |
Đệ tử 4 túi
Tham gia ngày: May 2005
Bài gửi: 83
: |
Trích:
#fuses NOWDT,PUT,HS,NOPROTECT HS bạn cũng phải đổi thành XT ,ví dụ như : #fuses XT,NOWDT,NOPROTECT,NOLVP namqn: HS chấp nhận dải tần số thạch anh 4 - 20 MHz, do đó không nhất thiết phải đổi lại. thay đổi nội dung bởi: namqn, 22-08-2007 lúc 01:20 AM. |
|
22-08-2007, 11:33 AM | #15 |
Đệ tử 1 túi
Tham gia ngày: Feb 2007
Bài gửi: 13
: |
Mình đã sửa lại dòng #FUSES như bạn chỉ và chân RB4..7 đã lên đúng 5V! Xin cảm ơn đã chỉ giúp mình. Sau một hồi mày mò thì mình nhận ra lỗi là do từ khóa PUT trong dòng #FUSES. Tại sao lại như vậy??? Có ai giải thích giùm mình với. Xin cảm ơn.
thay đổi nội dung bởi: tranducbinh, 22-08-2007 lúc 11:51 AM. |
|
|