PDA

View Full Version : Cách Debug chương trình?


tuanva
21-06-2005, 09:35 AM
Chào falleaf và tất cả những người dùng PIC,

Ai đó có thể hướng dẫn mình cách debug chương trình với. Mình muốn hỏi cách debug chương trình như thế nào? Với các code mẫu (asm file), mạch nạp và mạch thí nghiệm (mạch chạy) mà falleaf đã hướng dẫn trong topic "Học PIC trong một ngày" mình có thể debug chương trình được ko? Nếu được mình dùng chương trình gì?

Đối với các chương trình viết bằng C (CCS C, HT PIC,...) để debug chương trình mình có phải mua các Development Kit không? Mình có thể debug ngay trên mạch chạy mình tự làm không?

Cám ơn nhiều.

falleaf
23-06-2005, 09:49 PM
Nếu bạn muốn debug chương trình, bạn chỉ cần dùng file .HEX và MPLAB IDE để debug. Không cần dùng mạch ngoài.

ICD2 = In Circuit Debuger, là một mạch debug thời gian thực với con PIC thật được cắm trên bo mạch. Hoàn toàn không liên quan gì đến việc debug chương trình cả.

Mình sẽ viết một bài hướng dẫn debug chương trình bằng MPLAB IDE và gửi lên trong thời gian sớm nhất.

chúc vui.

vuonnhaque
25-06-2005, 11:07 PM
Ui zoi....Bac Falleaf...post thu mot bai huong dan gium cai...Em cung moi tim hieu vi dieu khien...ma em muon hoc pic luon co duoc khong nhey?... co phai hoc dan dan tu 8051 khong nhey?...chao bac(mach nap pic em co day du roi)

falleaf
27-06-2005, 01:29 PM
Điều tôi luôn khích lệ, đó là không nên bắt đầu với 89C51 mà nên bắt đầu với PIC, vì PIC rất đơn giản để học.

Đó là lợi điểm số 1 của PIC. Do vậy, câu hỏi bạn đặt ra đã được giải quyết, câu hỏi số 2 bạn cũng sẽ không cần đặt ra nếu xem luồng cơ bản về PIC, câu hỏi số 3 xin bạn xem trả lời ở luồng quảng cáo, buôn bán... Câu hỏi thứ n sẽ được trả lời đâu đó ở trong picvietnam... bạn sẽ không bao giờ bế tắc một vấn đề.

noisePIC
22-07-2005, 06:53 PM
Em đang viết chương trình trên CCS 3.222 nhưng khổ nỗi là không kiểm soát được từng dòng lệnh mà phải View/ASM rồi đọc từng lệnh hợp ngữ một.Không biết có phần mềm mô phỏng nào mà có thể quan sát biến..giống như chương trình C chuẩn không nhỉ??

falleaf
23-07-2005, 12:00 AM
Đó thực ra là debug, vậy thì đâu có khác gì. Riêng với PIC6F628A, có chương trình ELAB628 cho phép visiual debug.

Chúc vui.

tuanva
25-07-2005, 10:42 AM
Đó thực ra là debug, vậy thì đâu có khác gì. Riêng với PIC6F628A, có chương trình ELAB628 cho phép visiual debug.

Chúc vui.

Nếu như Falleaf nói và như noisePIC đã làm thì viết chương trình C bắt buộc phải nắm vững ASM ( :confused: ). Tôi đang rất băn khoăn về điều này, không biết debug chương trình như thế nào cho tốt. Một số chương trình tôi dùng thử (ví dụ MikroC) cho phép mô phỏng chíp để debug, nhưng như thế thì debug các chương trình truyền thông và xử lý ngắt như thế nào? Có cách nào debug chương trình ngay trên chip không nhỉ?

Về điều này Falleaf đã từng nói:
ICD2 = In Circuit Debuger, là một mạch debug thời gian thực với con PIC thật được cắm trên bo mạch. Hoàn toàn không liên quan gì đến việc debug chương trình cả.

Mình sẽ viết một bài hướng dẫn debug chương trình bằng MPLAB IDE và gửi lên trong thời gian sớm nhất.

Tôi vẫn đợi cậu câu trả lời đấy nhé.

Cám ơn diễn đàn và mọi người,
Chúc vui.

falleaf
25-07-2005, 11:18 AM
ICD2 giúp các bạn debug trên chip, có nghĩa là nó sẽ chạy và thay vì bạn thấy con chip của bạn nó nhấp nháy đèn trên chân của chương trình mô phỏng ảo, thì ở đây, bạn cắm con PIC vào mạch, và nó cũng chạy y hệt như vậy, chỉ có cái khác là nó chạy với mạch thật. Đó chính là chức năng ICD.

Tuy nhiên, làm sao để debug thời gian thực. Cũng như khi debug với ngôn ngữ cấp cao, bạn phải tạo ra các khóa để dừng chương trình. Vd: Bạn muốn gửi dữ liệu vào máy tính, mà bạn bấm từng nút cho nó chạy từng lệnh, thì không ổn, vì lúc đó máy tính sẽ không hiểu. Mà bạn phải gửi luôn 1 lần. Có nghĩa là bạn phải chạy luôn cả một đoạn chương trình nào đó. Vậy vd để xem khi vào ngắt chương trình có chạy đúng không, thì bạn phải thêm một lệnh NOP ở đầu chương trình ngắt, một lệnh NOP ở cuối trình ngắt, sau đó đặt break point tại 2 điểm này. Nó chạy xong, bạn tìm cách xem lại kết quả. Đó là phương pháp. Tất nhiên, đây là phương pháp debug cho những cái về truyền dữ liệu, hoặc một loạt các thao tác liên tục nào đó, chẳng hạn như timer...

Sau khi nó làm xong nhiệm vụ gửi, những nhiệm vụ điều khiển, thì các bạn phải debug chậm để xem nó đúng không.

Tôi sẽ viết bài về MPLAB IDE, còn bài về ICD2 đành chờ batbatdieu viết vậy, vì cậu này chuyên làm việc với ICD2.

txt
14-10-2005, 01:05 PM
Em đang viết chương trình trên CCS 3.222 nhưng khổ nỗi là không kiểm soát được từng dòng lệnh mà phải View/ASM rồi đọc từng lệnh hợp ngữ một.Không biết có phần mềm mô phỏng nào mà có thể quan sát biến..giống như chương trình C chuẩn không nhỉ??

Xem hướng dẫn mô phỏng chương trình C của CCS trong MPLAB trong muc CƠ BẢN VỀ PIC-> CCS update phần I, download file về . cho phép giám sát biến , break , . . . như C thực thụ .

vodanh1
13-04-2006, 10:04 AM
các bác cho em hỏi .
là trương trình cvới c++ khác gì nhau???
và nên học trương trình nào??
cảm ơn các bác nhiều

nhh
13-04-2006, 11:13 AM
các bác cho em hỏi .
là trương trình cvới c++ khác gì nhau???
và nên học trương trình nào??
cảm ơn các bác nhiều

Cái này mình nghĩ bạn nên hỏi ở bên công nghệ thông tin chư :rolleyes: !
Bạn muốn lập trình cho pic bằng C thì nên chọn CCS C hoặc HT-PIC, còn C++ là ngôn ngữ lập trình hướng đối tượng.

vodanh1
14-04-2006, 12:23 AM
vâng
cảm ơn nhiều

vodanh1
15-04-2006, 08:55 AM
xin lỗi các bác cho em hỏi 1 tí.
đó là debug là gì hả bác ,sao em tra từ điển mà ko thấy từ đó???
và bác các bác có thể nói rõ rõ vào nhé vì trình của em kém lắm??
thank các bác nhiều!!!!!!!!!!!!!!

falleaf
15-04-2006, 01:46 PM
debug:

bug = con bọ
người ta coi những lỗi phát sinh trong việc lập trình, hoặc thiết kế máy móc cũng như những con bọ. Nên có thể gọi các lỗi trong việc lập trình, thiết kế gọi là những cái bugs.

Một cái error = một lỗi mà do mình làm sai, tức là mình chẳng hiểu biết gì về nó, hoặc cố tình làm sai. Error là một lỗi không thể tha thứ được.

Một mistake = một lỗi là do mình nắm về nó, nhưng có thể trong lúc làm mình không để ý và mình làm sai đi. Vd: để quên chìa khoá ở nhà, hoặc viết chữ a thành chữ o. Đó là một mistakes. Lỗi mistake là lỗi có thể tha thứ được, và thông cảm được.

Một bug = là một lỗi nói chung, nhưng nó nằm rải rác và mình biết là nó có đâu đó. Nói chung, một bug có thể là một mistake, có thể là một error. Nó chỉ thể hiện là một điểm lỗi.

Debug = Gỡ bỏ những cái bug đó đi. Như vậy, công việc debug tức là công việc tháo gỡ những lỗi sai mà trong quá trình làm mình không thể nào biết được, và một quá trình làm luôn luôn có những lỗi sai nào đó. Vd: trước khi đi gặp bạn gái luôn luôn phải coi lại mình có đánh răng chưa, nếu không thì lúc hôn toàn mùi thuốc lá trong miệng thì... :(

Như vậy, công việc kiểm tra lại từng bước mình đã làm, và tháo bỏ những lỗi sai mà lỗi đó có thể là error hoặc mistake, được gọi là debug.

Những thiết bị hỗ trợ việc debug bao gồm chương trình cho phép chạy từng bước, thiết bị phần cứng cho phép chạy từng bước... đều gọi chung là debugger.

Chúc vui

vodanh1
17-04-2006, 09:25 AM
bác giỏi tiếng anh nhỉ??rất cảm ơn.