|
Tài trợ cho PIC Vietnam |
Những lỗi nạp và debug thường gặp Nên chú ý box này trước khi đặt câu hỏi |
|
Ðiều Chỉnh | Xếp Bài |
18-11-2011, 02:25 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 4
: |
Cần giúp đỡ về PIC 16F877A và mạch nạp PICKIT2
Chào các bạn, mình mới học làm mạch khoảng 1 tháng nay thôi, trong khi làm mạch thì gặp khá nhiều vấn đề, hôm nay có 2 vấn đề mình ko tự giải quyết đc nên post lên nhờ các bạn và các đàn anh chỉ giáo. 2 vấn đề này mình phải nói đầu đuôi rõ ràng, nên hơi dài, các bạn chịu khó đọc giúp
- Mình sử dụng pic 16f877a, với mạch MAIN PIC là tự hàn, trong mạch mình có để 8 led đơn trực tiếp từ portB. - Mình có dùng mạch nạp pickit2 (mua ở Thiên Minh - mình ở SG) và cũng có tự làm 1 mạch pickit2. Vấn đề mà mình gặp là: 1. hôm trước khi đi học thì các a hướng dẫn mình viết code rồi cho chạy bằng MPLAB (nạp trực tiếp file hex cho PIC bằng MPLAB, ko sử dụng chương trình pickit2), nạp bằng mạch nạp mà mình mua. Thì xuất hiện lỗi => ko detect dc 16f877a. Từ lúc đó, mạch nạp pickit2 của mình ko detect được 16f877a được nữa. Sau đó vài ngày, mình sử dụng mạch nạp BurnE, thì lại detect được 16f877a. Mình dùng burnE xóa hết dữ liệu trong pic. sau đó đã có thể dùng pickit2 nạp lại dc. Tuy nhiên, lúc thì nạp được, lúc thì ko, lúc thì program successful nhưng LED lại ko sáng (ko phải do code), có lúc mình nap xong lại bị lỗi ko detect 16f877a, rồi mình lại phải dùng burnE để xóa dữ liệu đi. Mà ko phải lúc nào dùng burnE cũng xóa dc (có lúc burnE cũng ko detect pic được) Mình có đem ra Thiên Minh hỏi, họ nói mạch nạp pickit2 của mình bình thường, còn con pic 16f877a của mình hư rồi, vứt đi. Nhưng mà trước giờ mình chỉ có nạp và xóa thôi, ko làm j mà hư dc con pic. Nói chung mình nghĩ con pic 16f877a của mình bị 1 lỗi j đó mà mình ko khắc phục được, mình nghĩ ko phải do mạch MAIN PIC, do mình có thử thay 1 con pic khác thì thấy cũng bt. Mong các bạn júp mình. ah bên dưới có cái hình mà pickit2 không nhận được 16f877a 2. Còn vấn đề thứ 2 của mình là ở mạch nạp pickit2 mà mình tự làm. Mình dùng con pic 18f2550, sau khi làm xong mạch và nạp chương trình cho 18f2550 thì: pickit2 của mình máy tính đã nhận đc, nhưng nó lại ko detect được con pic 16f877a trong mạch MAIN PIC (lúc này thì con pic chưa bị lỗi như ở trên đâu nha các bạn, nó vẫn nạp được bt). Mình nghĩ cái mạch nạp này ko detect pic được có khả năng do transistor (trong mạch mình có dùng 3 con BC548 và 1 con BC557), do có 1 vài đứa làm mạch giống mình mà khác transistor thì mạch chạy đc. Không bik các bạn nghĩ sao về lỗi này??? Các bạn nếu chưa hiểu vấn đề, thì cứ hỏi, mình sẽ giải thích thêm. Mong được các bạn và các đàn anh giúp đỡ, 2 vấn đề này làm mình đau đầu mấy ngày nay thay đổi nội dung bởi: R2F_nAtAs, 18-11-2011 lúc 03:31 AM. Lý do: Thêm sơ đồ nguyên lý |
18-11-2011, 11:09 AM | #2 | |
Đệ tử 6 túi
Tham gia ngày: Aug 2006
Bài gửi: 159
: |
PIC16F877A em mua ở đâu, anh đề nghị nên ưu tiên mua tại cty RP.
Trích:
__________________
Homepage: www.pduytech.com Email: oliver.duy@gmail.com YM: duy08091983@yahoo.com FB: Phuong Duy Technology |
|
18-11-2011, 04:15 PM | #3 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 4
: |
|
19-11-2011, 08:30 PM | #4 |
Đệ tử 6 túi
Tham gia ngày: Aug 2006
Bài gửi: 159
: |
... hang moi, nhung ho tra loi em nhu the nao khi co phan hoi cua em !
__________________
Homepage: www.pduytech.com Email: oliver.duy@gmail.com YM: duy08091983@yahoo.com FB: Phuong Duy Technology |
19-11-2011, 11:20 PM | #5 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 4
: |
dạ họ nói là con pic 16f877a của e hư rồi, ko làm j dc nữa, quăng đi
mà sau đó e thử gắn với burnE thì burnE lại detect dc con pic của e |
30-11-2011, 03:03 AM | #6 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 4
: |
up up. ai giúp e với hix
|
30-11-2011, 10:15 AM | #7 |
Đệ tử 6 túi
Tham gia ngày: Aug 2006
Bài gửi: 159
: |
Detect được rồi thế nạp được chưa ? Hay nạp thành công mà PIC chưa chạy, nhớ config sang dùng thạch anh ngoài.
__________________
Homepage: www.pduytech.com Email: oliver.duy@gmail.com YM: duy08091983@yahoo.com FB: Phuong Duy Technology |
29-03-2012, 11:04 AM | #8 |
Nhập môn đệ tử
Tham gia ngày: Mar 2012
Bài gửi: 8
: |
các bro cho em hỏi là :
E không tich vào ô check để cấp nguồn 5v từ cổng usb được hay là chương trình Pickit2 của em bị lỗi |
17-04-2012, 05:39 AM | #9 |
Nhập môn đệ tử
Tham gia ngày: Sep 2010
Bài gửi: 5
: |
Lỗi No device detected
Chào mọi người! Mình mới sử dụng PIC lần đầu và mới mượn được cái mạch nạp PIC KIT 2SE của phanit, có chút vấn đề là em không detcted được chip như hình ảnh và không nạp được. Moị người biết lỗi thì chỉ mình với.
Cám ơn mọi người nhiều. |
26-04-2012, 11:26 AM | #10 |
Nhập môn đệ tử
Tham gia ngày: Oct 2011
Bài gửi: 1
: |
chào các bạn, mình mới làm mạch nạp pickit2, mà mỗi lần mình nạp test nạp thì ok. nhưng sao em gắn vào board thi nó báo lỗi và làm mất chương trình của con pic 18f2550 phải nạp lại chương trình cho pic 18f2550 mới nạp được mà khi gắn lên board lại bĩ y như vậy
|
20-08-2012, 11:26 AM | #11 |
Nhập môn đệ tử
Tham gia ngày: Oct 2011
Bài gửi: 7
: |
hi mình có vấn đề này khó giải nhờ các bạn tí nha
#include "D:\A NHAP PHAM MEM\pic xoa\lcd.h" #include <string.h> #use delay(clock=1200000) #fuses NOWDT,PUT,XT,NOPROTECT #use fast_io(b) #use fast_io(e) #byte LCDdata=0x07// cong c trong c khong duoc dat ten du lieu vao cac tu khao ma tron gx da quy // din khi do se lam sai het chuong trinh // ma con lam cho chuong trinh phien dich sai #define RS 72 // cong e1 #define RW 73// cong e2 #define E 74// cong e3 #define BF 63 void delay1(long time) { int i; for(i=0;i<time;i++) {// muc dich la tao ra ham tre cho lcd } } void wait(void) { //int n=0; output_high(E);//==1;// Dua chan cho fep len cao output_low(RS);//==0;// Chon thanh ghi lenh output_high(RW);//==1;// Doc tu LCD LCDdata=0xFF;// Gia tri 0xFF // while(BF){n++; if(n>100) break;}// Kiem tra co ban // Neu ban dem n den 100 roi thoat khoi while output_low(E);//==0;// Dua xung cao xuong thap de chot output_low(RS);//W==0;// Doc tu LCD } // Hàm di?u khi?n LCD th?c hi?n 1 l?nh: void LCDcontrol(unsigned char x) { output_high(E);//==1;// Dua chan cho fep len cao output_low(RS);//==0;// Chon thanh ghi lenh output_low(RW);//==0;// Ghi len LCD LCDdata=x;// Gia tri x output_low(E);//==0;// Xung cao xuong thap wait();// Doi LCD san sang } //Hàm có 1 bi?n d?u vào là các giá tr? trong b?ng mã l?nh c?a LCD. //* Hàm kh?i t?o LCD: void LCDinit(void) { LCDcontrol(0x30);//Che do 8 bit. LCDcontrol(0x30); LCDcontrol(0x30); LCDcontrol(0x38);// 2 dong va ma tran 5x7 LCDcontrol(0x0C);// Bat con tro LCDcontrol(0x06);// Tang con tro xang fai LCDcontrol(0x01);// Xoa man hinh } //* Hàm l?nh cho LCD hi?n th? 1 kí t? : void LCDwrite(unsigned char c) { output_high(E);//==1;// Cho fep muc cao output_high(RS);//==1;// Ghi du lieu output_low(RW);//==0;// Ghi len LCD LCDdata=c;// Gia tri C output_low(E);//==0;// Xung cao xuong thap } //Hàm l?nh cho LCD hi?n th? 1 xâu kí t? ( dòng ch?): void LCDputs(unsigned char *s,unsigned char row) { unsigned char len; if(row==1) LCDcontrol(0x80);// Ep con tro ve dau dong 1 else LCDcontrol(0xC0);// Ep con tro ve dau dong 2 len==strlen(s);// Lay do dai bien duoc tro boi con tro // khi khai bao ham strlen can co #include<string.h> while(len!=0)// Khi do dai van con { LCDwrite(*s);// Ghi ra LCD gia tri duoc tro boi con tro s++;// Tang con tro len--;// Tru do dai } } void LCDwritei(int d) { unsigned char i,j,k,l; i=d%10;// Chia lay phan du, duoc chu so hang don vi d=d/10;// Chia lay phan nguyen, duoc nhung chu so da bo hang don vi j=d%10;// Duoc chu so hang chuc d=d/10;// Nhung chu so da bo hang don vi va hang chuc k=d%10;// Duoc hang tram l=d/10;// Duoc hang nghin LCDwrite(48+l);// Hien thi ki tu trong bang ascii LCDwrite(48+k);// Trong bang ascii so 0 co co so thu tu la 48 LCDwrite(48+j); LCDwrite(48+i); } void main() { //char x; // setup_adc_ports(NO_ANALOGS); //setup_adc(ADC_OFF); //setup_psp(PSP_DISABLED); //setup_spi(SPI_SS_DISABLED); //setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); //setup_timer_1(T1_DISABLED); //setup_timer_2(T2_DISABLED,0,1); //setup_comparator(NC_NC_NC_NC); //setup_vref(FALSE); // TODO: USER CODE!! LCDinit(); LCDwritei(48); //LCDputs("dsadfasdfsa",1); delay1(30000); LCDcontrol(0xc5);LCDwrite('a');LCDwrite('n');LCDwr ite('#');LCDwrite('O');LCDwrite('K');LCDwrite('a') ;LCDwrite('n');LCDwrite('*');LCDwrite('H');LCDwrit e('U');LCDwrite('Y'); while(true) { //for(x=0;x<16;x++)// Dich 16 lan. //{ //LCDputs("8052 MCU",1); //LCDcontrol(0x18);// Dich hien thi sang trai. //delay1(5000);// Tre //} } } sau bai nay to viet xong bien dich xong nhưng mà khi thử băng protues thì lai không cháy đuwocj còn trong lập trình c trong keli thì đương nhiên chương trình này chạy đúng hi |
|
|