PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC > Những câu hỏi thường gặp

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

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 20-08-2007, 07:06 PM   #1
tranducbinh
Đệ 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 ý
tranducbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2007, 07:16 PM   #2
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
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2007, 07:22 PM   #3
tranducbinh
Đệ 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.
tranducbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2007, 07:40 PM   #4
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
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-08-2007, 10:41 PM   #5
caonam
Đệ tử 2 túi
 
Tham gia ngày: Aug 2005
Bài gửi: 30
:
Trích:
Nguyên văn bởi tranducbinh View Post
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 RB0 đ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.
Trisb như vậy thì output RB0 không được thì phải rồi.
Phải vầy nè set_tris_b(0b11110000);
caonam vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2007, 12:20 AM   #6
tranducbinh
Đệ 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.
tranducbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2007, 12:25 AM   #7
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 tranducbinh View Post
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.
Không may là mạch đơn giản hóa đó sẽ không làm việc, vì chân MCLR luôn luôn được kích hoạt trong PIC16F877A, và nếu bạn thả nổi trạng thái của nó (tức là không nối vào đâu hết) thì PIC sẽ không chạy. Phải nối nó như thế nào thì tôi đã nói trên kia rồi.

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 21-08-2007, 12:08 PM   #8
tranducbinh
Đệ 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.
tranducbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2007, 03:13 PM   #9
batbatdieu
Đệ 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.
batbatdieu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2007, 05:35 PM   #10
tranducbinh
Đệ 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.
tranducbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2007, 08:11 PM   #11
anh_gioi
Đệ 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 ạ)
anh_gioi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2007, 08:28 PM   #12
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 tranducbinh View Post
Đú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.
Bạn thay lệnh portb = 0b11110000 thành OUTPUT_B(0b11110000) và thử lại xem.

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 21-08-2007, 08:30 PM   #13
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 anh_gioi View Post
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 ạ)
Chưa thể kết luận là PIC chết được. Nếu có thể thì bạn nhờ người khác nạp thử con PIC của bạn bằng một mạch nạp khác xem thế nào. Thông tin của bạn đưa ra còn thiếu, đó là mạch nạp loại nào, khi nạp thì bạn dùng socket của mạch nạp, hay nạp kiểu ICSP?

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-08-2007, 12:30 AM   #14
batbatdieu
Đệ tử 4 túi
 
Tham gia ngày: May 2005
Bài gửi: 83
:
Trích:
Nguyên văn bởi tranducbinh View Post
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.
Nếu bạn sửa lại thành 4MHz rồi thì dòng này
#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.
batbatdieu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-08-2007, 11:33 AM   #15
tranducbinh
Đệ tử 1 túi
 
Tham gia ngày: Feb 2007
Bài gửi: 13
:
Smile

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.
tranducbinh 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à 02:20 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