PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Những lỗi nạp và debug thường gặp (http://www.picvietnam.com/forum/forumdisplay.php?f=66)
-   -   Cần giúp đỡ về PIC 16F877A và mạch nạp PICKIT2 (http://www.picvietnam.com/forum/showthread.php?t=11856)

R2F_nAtAs 18-11-2011 02:25 AM

Cần giúp đỡ về PIC 16F877A và mạch nạp PICKIT2
 
3 Attachment(s)
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

duy08091983 18-11-2011 11:09 AM

PIC16F877A em mua ở đâu, anh đề nghị nên ưu tiên mua tại cty RP.

Trích:

Nguyên văn bởi R2F_nAtAs (Post 51559)
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


R2F_nAtAs 18-11-2011 04:15 PM

Trích:

Nguyên văn bởi duy08091983 (Post 51565)
PIC16F877A em mua ở đâu, anh đề nghị nên ưu tiên mua tại cty RP.

Mua ở Thiên Minh, lúc em mua là ngta vừa khui lô hàng mới luôn

duy08091983 19-11-2011 08:30 PM

Trích:

Nguyên văn bởi R2F_nAtAs (Post 51571)
Mua ở Thiên Minh, lúc em mua là ngta vừa khui lô hàng mới luôn

... hang moi, nhung ho tra loi em nhu the nao khi co phan hoi cua em !

R2F_nAtAs 19-11-2011 11:20 PM

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

R2F_nAtAs 30-11-2011 03:03 AM

up up. ai giúp e với hix

duy08091983 30-11-2011 10:15 AM

Trích:

Nguyên văn bởi R2F_nAtAs (Post 51616)
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

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.

hoangclick 29-03-2012 11:04 AM

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

Aducbkfet 17-04-2012 05:39 AM

Lỗi No device detected
 
1 Attachment(s)
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.

kiêt_le 26-04-2012 11:26 AM

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

imlanglavang102 20-08-2012 11:26 AM

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


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam