PDA

View Full Version : Hỏi về lỗi khi nạp chương trình cho dsPIC30F6010A bằng ICD 2


tinhthanthep
22-05-2008, 12:28 PM
Mình nạp chương trình cho con dsPIC30F6010A bằng ICD2 thì bị lỗi sau:
MPLAB ICD 2 Ready
Programming Target...
...Validating configuration fields
...Erasing Part
...Programming Programming Executive
...Verifying Programming Executive
...Programming EEPROM Memory
...Programming Program Memory (0x0 - 0x33F)
Verifying...
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x402FA, Val Read = 0x0)
ICD0275: Programming failed.

Lần nạp trước nó có hiện ra một thông báo gì đó mà nó nói là nếu tiếp tục thì corrupt device , do không để ý cứ ấn ok nên giờ nó phát sinh cái lỗi này khi nạp. Đã thử với con dspic khác thì nạp ngon lành.

Các huynh đệ ai bít khắc phục chỉ giùm tôi.
Thanks

namqn
24-05-2008, 06:22 PM
Có phải trước đó bạn gặp thông báo lỗi dưới đây không?
ICDWarn00051: Illegal configuration memory value <value> at address <address>
(field <fieldname>). Would you like ICD2 to set this field to the default value?
Ignoring this warning may corrupt the device. (Fix/Ignore/Cancel)

Mạch ứng dụng của bạn có dùng những chân liên quan đến việc nạp chương trình (PGD, PGC, MCLR) hay không? Nếu có thì bạn kết nối như thế nào (cho biết sơ đồ mạch, không nên mô tả bằng lời)?

Thân,

tinhthanthep
26-05-2008, 11:59 AM
Hình như là thông báo này vì nó diễn ra nhanh nên ko còn nhớ rõ lắm. Nhưng quan trọng là mình đã thử test với các bo mạch khác (vì mình đặt làm 3 mạch cùng một lúc ) thì hai bo mạch kia nạp được. Song giờ cũng ko còn nạp được nữa rồi. Có con chip nạp được thì lại không thấy chạy gì cả.
Mình thử dùng mikroC for dsPIC chỉ cho hiển thị LCD không thôi cũng ko tháy lên, set port cũng ko thấy. Chương trình test thử của mình đơn giản thế này thôi:
void main() {
ADPCFG = 0xFFFF;
Lcd_Custom_Config(&PORTB, 10,9,8,7, &PORTB, 3,4,5);
Lcd_Custom_Cmd(LCD_CLEAR);
Lcd_Custom_Cmd(LCD_CURSOR_OFF);
Lcd_Custom_Out(1,3, "Hello");
TRISD = 0x0000;
LATD = 0xFFFF;
}

http://i72.photobucket.com/albums/i193/tinhthanthep/anh.jpg

namqn
26-05-2008, 06:04 PM
Hình như là thông báo này vì nó diễn ra nhanh nên ko còn nhớ rõ lắm. Nhưng quan trọng là mình đã thử test với các bo mạch khác (vì mình đặt làm 3 mạch cùng một lúc ) thì hai bo mạch kia nạp được. Song giờ cũng ko còn nạp được nữa rồi. Có con chip nạp được thì lại không thấy chạy gì cả.
Mình thử dùng mikroC for dsPIC chỉ cho hiển thị LCD không thôi cũng ko tháy lên, set port cũng ko thấy. Chương trình test thử của mình đơn giản thế này thôi:
void main() {
ADPCFG = 0xFFFF;
Lcd_Custom_Config(&PORTB, 10,9,8,7, &PORTB, 3,4,5);
Lcd_Custom_Cmd(LCD_CLEAR);
Lcd_Custom_Cmd(LCD_CURSOR_OFF);
Lcd_Custom_Out(1,3, "Hello");
TRISD = 0x0000;
LATD = 0xFFFF;
}

http://i72.photobucket.com/albums/i193/tinhthanthep/anh.jpg
Trong sơ đồ của bạn, các chân PGD và PGC chỉ được dùng cho ICSP, chân MCLR có vẻ ổn, chỉ cần kiểm tra lại rằng nút nhấn reset làm việc bình thường (không bị kẹt làm MCLR được nối với GND thường xuyên).

Tuy nhiên, tại 5 cặp chân nguồn, không hề có một tụ decoupling nào (thường dùng tụ 100 nF = 104). Những tụ này thuộc loại không thể bỏ qua, chứ không phải để đó cho đẹp.

Tôi cũng cho rằng lúc nạp chương trình bằng ICSP thì bạn không nối MCLR vào ngõ ra của MAX... (hình của bạn có độ phân giải thấp, rất khó đọc các ký tự).

Thân,

tinhthanthep
27-05-2008, 09:22 AM
Nút ấn đã test vẫn OK. Khi nạp chương trình thì đã bỏ jam nối giữa MCLR với ngõ ra của MAX vì nối vào sẽ làm cho max nóng lên rất nhanh đồng thời ko nạp được chương trình. Cho mình hỏi luôn mình định thay cách nối jam này bằng con diốt 4148 được không nhỉ? thay như thế mình nghĩ ko cần phải thao tác rút jam ra mỗi khi cần nạp?
ĐÚng là khi thiết kế ko nghĩ đến chuyện hàn 5 con tụ 104 vào cặp chân nguồn để lọc nhiễu. Để mình hàn thử test lại xem thế nào. Cũng có thể do thiếu mấy con tụ này vì mình thấy nạp chương trình mấy lần đầu chương trình chạy ngon lắm nhưng chỉ được vài lần, còn sau đó thì ko thể nạp được nữa, hoặc có mạch nạp được thì cũng ko thấy chạy.