PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) > Lỗi lập trình ngôn ngữ cấp cao

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Lỗi lập trình ngôn ngữ cấp cao Những lỗi trường gặp trong lập trình. Khóa luồng khi bug được lỗi.

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 07-04-2008, 05:39 PM   #1
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Một Chương trình viết bằng CCS, vừa nạp vào thì con PIC xem như bỏ.

Dạo này mình đang tập tành viết CCS cho PIC 16f877a. Ngay những chương trình đầu tiên đã làm cho mình "muốn khóc".
Viết bằng CCS, nạp bằng winpic800. Vừa nạp vào thì con PIC xem như không thể làm được gì nữa. Không thể xóa được chương trình trong nó, không thể nạp vào chương trình mới. Hiện mình đã có 2 con trong "rổ" rồi.
Ai biết tại sao như vậy thì hãy giúp mình nhé. Mình pó chiếu rồi.
Chương trình CCS
Code:
#include <16f877a.h>
#use delay(clock=2000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#byte portB=0x6
#byte portD=0x8
#use Fast_IO(B)
#bit B0=portB.0
#bit B7=portB.7
#bit D0=portD.0
void main()
{
set_tris_B(00);
set_tris_D(0xFF);
PORTB=0B00000000;
 if (D0==0)
 B0=1;
 else
 B7=1;

}
File hex bên dưới

namqn: Chương trình đính kèm không phải là chương trình ma quỷ.
File Kèm Theo
File Type: rar Chuongtrinhmaquy.rar (218 Bytes, 86 lần tải)

thay đổi nội dung bởi: namqn, 11-05-2008 lúc 08:16 PM.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2008, 06:11 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
Bạn nên dùng PUT với chương trình đơn giản. Trong main() nên có một vòng while (1) { }.

Bạn chưa cho biết mạch nạp được dùng là gì. Các mạch nạp qua cổng song song (Schaer+, PG3B, EPIC, ...) luôn luôn có thể đưa chip vào chế độ lập trình, bất kể bạn cấu hình hay viết code kiểu gì. Bạn tham khảo sơ đồ mạch Schaer+ Mod của tôi ở đây chẳng hạn: http://www4.hcmut.edu.vn/~nqnam/uC.php.


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

thay đổi nội dung bởi: namqn, 17-11-2008 lúc 02:23 AM. Lý do: ĐH BK thay đổi server
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2008, 10:50 PM   #3
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Em không rành về các loại mạch nạp lắm. Khi mới học PIC em mua một mạch nạp làm sẵn về để viết, nạp ứng dụng thôi.
So sánh với các loại mạch nạp trên trang web của anh Nam, em thấy cái mạch nạp của em giống cái Schaer + Mod , cũng nạp qua cổng song song, một vài con Transitor ,tuy nhiên lại có thêm một con IC nào đó (bị xóa mất tên).
Vậy có cách nào khắc phục , cứu lấy mấy con PIC của em ko anh Nam?
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2008, 12:12 AM   #4
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
Trích:
Nguyên văn bởi uydanh View Post
Nạp phần mềm làm PIC die
Không có chuyện này đâu bạn yên tâm

Bạn phải tường thuật lại các chi tiết thông báo khi bạn nạp PIC. Gợi ý :

+ Sau khi nạp : trình nạp (Winpic chẳng hạn) sẽ verify lại dữ liệu sau khi nạp, nó có báo lỗi gì ở lần nạp đầu tiên không ?, những lần tiếp theo thì sao ?
+ Theo như bạn nói thì mạch vẫn nhận dạng đuợc PIC, nhưng mỗi lần đọc dữ liệu ra dữ liệu là cố định àh (có xáo trộn gì không) ?
+ Sau khi đã nạp cho PIC rồi bạn có đem nó đi cắm vào bo ứng dụng chưa ?, và có phải cắm rồi thấy nó không chạy bạn đem đi nạp lại ?

Theo như phỏng đoán của mình với sự cố này, với một mạch nạp qua cổng Printer thuơng mại (chắc không đến nỗi), mình nghĩ có lẽ bạn đã nạp chuơng trình vào PIC tốt, sau đó cắm vào bo ứng dụng (thiết kế lỗi) nên làm Die PIC. Bạn vui lòng trả lời các câu hỏi ở trên và nếu chụp đuợc hình báo lỗi khi nạp thì tốt hơn nữa, có lẽ mọi nguời sẽ giúp bạn đuợc nhiều hơn

Thân.
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________
_ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _
. . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2008, 12:37 AM   #5
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi thaithienanh View Post
Không có chuyện này đâu bạn yên tâm

Bạn phải tường thuật lại các chi tiết thông báo khi bạn nạp PIC. Gợi ý :

+ Sau khi nạp : trình nạp (Winpic chẳng hạn) sẽ verify lại dữ liệu sau khi nạp, nó có báo lỗi gì ở lần nạp đầu tiên không ?, những lần tiếp theo thì sao ?
+ Theo như bạn nói thì mạch vẫn nhận dạng đuợc PIC, nhưng mỗi lần đọc dữ liệu ra dữ liệu là cố định àh (có xáo trộn gì không) ?
+ Sau khi đã nạp cho PIC rồi bạn có đem nó đi cắm vào bo ứng dụng chưa ?, và có phải cắm rồi thấy nó không chạy bạn đem đi nạp lại ?

Theo như phỏng đoán của mình với sự cố này, với một mạch nạp qua cổng Printer thuơng mại (chắc không đến nỗi), mình nghĩ có lẽ bạn đã nạp chuơng trình vào PIC tốt, sau đó cắm vào bo ứng dụng (thiết kế lỗi) nên làm Die PIC. Bạn vui lòng trả lời các câu hỏi ở trên và nếu chụp đuợc hình báo lỗi khi nạp thì tốt hơn nữa, có lẽ mọi nguời sẽ giúp bạn đuợc nhiều hơn

Thân.
Con Pic đầu tiên mình nạp chương trình rồi gỡ ra cắm vào mạch thí nghiệm riêng, kết quả đúng như chương trình mình viết. Sau đó mình cắm ngược trở lại mạch nạp, định xóa để nạp chương trình khác thì bị báo lỗi như sau
Code:
DETECTED->UNKNOWN
DEVICE ERASED. : OK
Tất nhiên vì xóa không được nên không thể nạp được chương trình mới. Và nó báo lỗi như sau (khi vẫn cố gắng nạp chương trình mới)
Code:
ERROR->WRITING ADDRESS 0X000000
WRITTEN : 0X3000 READ :0X3FFF
Cái mạch test của mình chắc chắn không bị lỗi. Thứ nhất vì nó đơn giản (chỉ là nhấp nhấy mấy con led), thứ 2 : mình đã thử các chương trình khác trước đây con Pic đó vẫn chạy tốt trên mạch test đó.
Khi con Pic thứ nhất mình nghĩ là bị hư, mình thử con PIC khác, vừa cắm vào bo mạch nạp, nạp ngay cái chương trình mà khi nạp vào con PIC thứ nhất làm nó "cứng ngắt" thì con PIC này cũng tiêu luôn. Không thể xóa được chương trình trong đó để nạp chương trình mới vào cho dù khi cắm vào mạch test thì nó vẫn chạy đúng theo chương trình mình đã nạp "lần cuối"
Rất mong mọi người giúp đỡ và cứu lấy nó. Thanks for your help
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2008, 12:47 AM   #6
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi thaithienanh View Post

+ Sau khi nạp : trình nạp (Winpic chẳng hạn) sẽ verify lại dữ liệu sau khi nạp, nó có báo lỗi gì ở lần nạp đầu tiên không ?, những lần tiếp theo thì sao ?
.
Lần nạp đầu tiên rất ngon lành, ko có lỗi gì hết. Chỉ có lần thứ 2 trở đi mình muốn xóa để nạp lại chương trình khác thì không được vào báo lỗi như trên.
Trích:
Nguyên văn bởi thaithienanh View Post

+ Theo như bạn nói thì mạch vẫn nhận dạng đuợc PIC, nhưng mỗi lần đọc dữ liệu ra dữ liệu là cố định àh (có xáo trộn gì không) ?
Khi không nạp mới được chương trình, mình thử lại Detect device (có sẵn ở winpic800), nó báo là unknown
Khi đọc ngược dữ liệu ra thì có lúc toàn là 3FFF , đọc được vài lần thì lại thấy toàn là 0000.
Trích:
Nguyên văn bởi thaithienanh View Post
Sau khi đã nạp cho PIC rồi bạn có đem nó đi cắm vào bo ứng dụng chưa ?, và có phải cắm rồi thấy nó không chạy bạn đem đi nạp lại ?
Con Pic đầu tiên thì mình đã cắm vào board ứng dụng, con PIC thứ 2 thì chưa, chỉ vừa nạp vào và thử xóa và nạp lại thì đã ko được.
Chương trình mình viết khi cắm trên board ứng dụng chạy rất tốt, định viết phát triển thêm nên nạp lại -> không nạp lại được.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2008, 01:09 AM   #7
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
Trích:
Nguyên văn bởi uydanh View Post
Lần nạp đầu tiên rất ngon lành. Khi đọc ngược dữ liệu ra thì có lúc toàn là 3FFF, đọc được vài lần thì lại thấy toàn là 0000.
Chỉ vừa nạp vào và thử xóa và nạp lại thì đã ko được.
Thôi chết rồi.

Bạn có VOM ở đó không ? hãy đo lại điện áp tại các chân DATA, CLOCK, VDD, VPP1, VPP2 trên mạch nạp, bằng cách trên menu của winpic800 --> setting --> Hardware --> nhìn xuống bên tay trái ở dưới chọn vào nút có hình dấu check (Blockade config) kế bên nút có hình chữ I (about) --> gỡ bỏ dấu check trong ô "Blockade config" đi --> khi này trình sẽ cho phép bạn toàn quyền điều khiển bật tắt các chân, bằng việc check hoặc uncheck vào ô TEST tương ứng --> dùng VOM đo áp tại các chân đó và ghi nhận kết quả.

Mình nghĩ có vấn đề về điện áp nạp ở đây rồi.

Điện áp tham khảo như sau : VPP <= +13 VDC, DATA & CLOCK & VDD <= +5VDC.

Nếu bất kỳ chân nào vượt hơn mức đó thì sẽ sinh lỗi

Thân.
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________
_ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _
. . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2008, 02:01 AM   #8
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Mình nghĩ đó ko phải là nguyên nhân vì ngay trước đó khi mình nạp, xóa các chương trình khác rất tốt, chỉ riêng cái chương trình trên khi nạp vào là bị "dính" thôi. Với lại mình cũng thử làm theo chỉ dẫn của bạn thì rất OK.
Thấy có đứa bạn nó nói bị lock bit gì đó. thế là thế nào vậy ta? Có đứa bạn của mình từng xài AVR khi nạp cái chương trình gì đó vào lần lượt các AVR thì lần lượt đều bị tiêu hết, không làm ăn gì được. Trắng tay tới 5 con AVR chứ ít gì.
Không bit làm sao giải quyết đây các bạn. Thanks.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-04-2008, 10:00 PM   #9
navy
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
Trích:
Nguyên văn bởi uydanh View Post
Mình nghĩ đó ko phải là nguyên nhân vì ngay trước đó khi mình nạp, xóa các chương trình khác rất tốt, chỉ riêng cái chương trình trên khi nạp vào là bị "dính" thôi. Với lại mình cũng thử làm theo chỉ dẫn của bạn thì rất OK.
Thấy có đứa bạn nó nói bị lock bit gì đó. thế là thế nào vậy ta? Có đứa bạn của mình từng xài AVR khi nạp cái chương trình gì đó vào lần lượt các AVR thì lần lượt đều bị tiêu hết, không làm ăn gì được. Trắng tay tới 5 con AVR chứ ít gì.
Không bit làm sao giải quyết đây các bạn. Thanks.
Vấn đề của bạn mình thấy bạn nên kiểm tra một số chỗ sau:
1. Phần cứng của bạn, đặc biệt là các chân nguồn giữa Vpp và GND có chạm không (Vô tình hay chạm đường mạch, dây, ốc vít...)? Trước đây mình làm có lần dùng đồng hồ kiểm tra hai chân này vô tình chạm que đo nối chúng lại với nhau, khi nạp lại cũng unknow..đọc được nhưng detect unknow. Đo lại thêm điện áp các chân Data, CLK,....
2.Mạch nạp của bạn có vấn đề, nên thay mới hoặc tự chế.
3. Xem lại phần cài đặt của Winpic800 xem khi khởi động lần đầu nó có mặc định là hỗ trợ lock code không? Mùa làm robocon vừa rồi mình cũng tiêu cả chục con vì những lỗi đó.
Lỗi trên có thể còn do nguyên nhân khác vì kiến trúc hoàn chỉnh bên trong PIC gần như a e ta ko nắm rõ được. Anh em nào có hiện tượng gì post lên để cùng nhau chia sẻ và rút ra kinh nghiệm.
navy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-04-2008, 06:44 PM   #10
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
Trích:
Nguyên văn bởi uydanh View Post
Mình nghĩ đó ko phải là nguyên nhân vì ngay trước đó khi mình nạp, xóa các chương trình khác rất tốt, chỉ riêng cái chương trình trên khi nạp vào là bị "dính" thôi. Với lại mình cũng thử làm theo chỉ dẫn của bạn thì rất OK.
Thấy có đứa bạn nó nói bị lock bit gì đó. thế là thế nào vậy ta? Có đứa bạn của mình từng xài AVR khi nạp cái chương trình gì đó vào lần lượt các AVR thì lần lượt đều bị tiêu hết, không làm ăn gì được. Trắng tay tới 5 con AVR chứ ít gì.
Không bit làm sao giải quyết đây các bạn. Thanks.
Chương trình của bạn không phải bị lock bit
Chỉ có phạm vài lỗi cơ bản như :
- Cấu hình OSC sai, ở cấu hình HS (high speed OSC) <=> tần số thạch anh mắc vào phải >4MHz, nhưng mà bạn lại chọn là 2MHz
- Như anh Namq nói, ở chuơng trình chính nên có ít nhất là một vòng lặp

Với PIC việc cấu hình đuợc viết ngay trong code chương trình, vì vậy mà khi nạp Winpic800 sẽ tự động cập nhật lại cấu hình này, nên bạn yên tâm việc lockbit sẽ không bị set từ trước , chứ không phải như AVR việc cấu hình của nó rất rườm rà nếu không nói có chút gì đó gọi là ngốc ngếch !?!!

Theo mình nghĩ thì mạch nạp của bạn chẳng vấn đề gì cả vì bạn nói là nạp bình thường các PIC cùng loại và code khác .
Nguyên nhân nào PIC có thể "đơ" thì mình thua không rõ đuợc
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________
_ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _
. . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-04-2008, 01:32 PM   #11
quangduy
Nhập môn đệ tử
 
Tham gia ngày: Oct 2007
Bài gửi: 9
:
Bạn nên kiếm một cái mạch nạp khác, cái mạch mạp đó bị lỗi rồi đó bạn hay đon giản là nó bị nhiễu, thay cái dây tín hiệu tốt hơn xem. Theo mình thì muốn cứu thì sài ICD2 coi.
quangduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2008, 10:50 AM   #12
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi quangduy View Post
Bạn nên kiếm một cái mạch nạp khác, cái mạch mạp đó bị lỗi rồi đó bạn hay đon giản là nó bị nhiễu, thay cái dây tín hiệu tốt hơn xem. Theo mình thì muốn cứu thì sài ICD2 coi.
Bạn đã bắt đúng bệnh. Do cái mạch nạp của mình, nói chung là ko tốt. Mình mượn mạch nạp khác của đứa bạn thì hầu hết các con PIC hồi đó giờ mình tưởng die thì đều sống. Cuộc đời vẫn đẹp sao ! Hehehehe
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2008, 02:04 PM   #13
tantuan82
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 4
:
cái mạch nạp bạn nói chưa hẳn là không tốt, mạch nạp qua cổng LPT rất ổn định và hầu như không thây lỗi, bạn nên kiểm tra vài cấu hình hardware sau đây kẻo vứt đi thì uổng:
- Nguồn cấp: thông thường hơi cao khoảng từ 15 đến 18V DC (Nguyên nhân nguồn cần cao do sụt áp qua các diode sau đó tạo VPP khoảng 12,5V qua IC LM317 chẳng hạn)
- xem settings trong winpic800, thường phải chọn Vpp2 cho PIC 40 pin
- Và quan trọng; Nếu hàng bạn mua thì chắc sẽ có Hướng dẫn SD của người bán, bạn đọc lại xem mình có cấu hình sai chỗ nào không.
- cuối cùng là nhờ người bán giúp đỡ / bảo hành.
tantuan82 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-11-2008, 12:59 AM   #14
peekaboo
Nhập môn đệ tử
 
Tham gia ngày: May 2007
Bài gửi: 7
:
Éc éc . Cái vấn đề này y hệt mình đang bị. hồi trước làm luận văn mấy con Pic nạp xóa OK , vậy mà bo mấy tháng không đụng đến giờ 5 con Pic cắm vô đều .........UNKNOW?? Mình dùng mạch nạp PicBasic. Ác Ác hông lẽ Die cái mạch 200k rồi hả chời???? Ai kiểm tra dùm mình được không? Ah còn cái này nữa : #FUSES NOLVP compile dc nhưng không nạp được, #FUSES LVP compile dc nạp cũng được. cả 877 và 84431 như nhau????????????
peekaboo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-11-2008, 04:43 PM   #15
thanhtuan_le
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 2
:
câu tho cua anh hay wa
thanhtuan_le vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 05:37 PM.


Đượ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