RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Không bit lỗi này là lỗi gì trong con Dspic30F4011

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts

  • quoc_thaibk
    replied
    Nguyên văn bởi namqn Xem bài viết
    Dựa vào hiện tượng mà bạn mô tả, tôi đoán rằng trình biên dịch đã tối ưu hóa đoạn mã, làm cho vòng lặp for bị rút ngắn, hoặc có thể bị loại bỏ, dẫn đến chương trình của bạn có vẻ như chỉ thực thi được lệnh sau cùng trong hai lệnh đặt trạng thái bit LATE0 (thực ra cả hai lệnh vẫn được thực thi, nhưng lệnh sau có thời gian chờ lâu hơn một chút, do thực thi lệnh while).

    Thân,
    Vòng for đó theo em nó lỗi về chương trình viết sai:

    Code:
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);
    Kiểu lặp này thì t chết ở con số 2000 rồi quay lại lòng vòng tới 2000 mãi không thoát được.
    đổi biến dùng thì việc này có thể giải quyết.
    Lưu ý việc coi có tràn số không

    Leave a comment:


  • hang1988
    replied
    Nguyên văn bởi haidangptn Xem bài viết
    Lỗi wanning này tôi cũng đã gặp và đã giải quyết được rồi. Lúc nào rảnh tôi sẽ giúp.
    Pác chỉ dạy luôn đi cho anh em còn học tập! TÔi cũng làm đựoc cái này hết warming:
    Tôi vào file -> export -> file hex nạp vào cũng ko bị thế?.KO bit pác thế nào/

    Leave a comment:


  • haidangptn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Dùng delay thì không đựoc chính xác. Nhưng ở đây tôi test chip và code xem sao! Các pác làm nhiều nên nó cũng có nhiểu nguyên nhân các pác cũng đã bit!
    Ở đây em dùng nguồn từ mạch nạp để điều khiển 1 con LED, Khi nạp xong thì có cần chú ý những gì nữa ko? Hay là cứ gắn cả mạch nạp trên đó để chạy (Vì em gắn lên bo thử mà).
    Liệu rằng chip có dei ko? chả nhé 2 con cùng dẫn nhau đi à! Khi nạp file hex cho chương trình Pickit2 thì nó có cảnh báo thế này ko bit có sao ko?
    Lỗi wanning này tôi cũng đã gặp và đã giải quyết được rồi. Lúc nào rảnh tôi sẽ giúp.

    Leave a comment:


  • namqn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Ngàn lần cảm ơn anh nam! Thay kiểu delay của anh vào thì OK! Những xua tan vưỡng mắc đã được giải quết!Thanks.Thanks,Thanks.....Nhưng mà sao vòng for kiểu trên không được thế anh?
    Dựa vào hiện tượng mà bạn mô tả, tôi đoán rằng trình biên dịch đã tối ưu hóa đoạn mã, làm cho vòng lặp for bị rút ngắn, hoặc có thể bị loại bỏ, dẫn đến chương trình của bạn có vẻ như chỉ thực thi được lệnh sau cùng trong hai lệnh đặt trạng thái bit LATE0 (thực ra cả hai lệnh vẫn được thực thi, nhưng lệnh sau có thời gian chờ lâu hơn một chút, do thực thi lệnh while).

    Thân,

    Leave a comment:


  • hang1988
    replied
    Ngàn lần cảm ơn anh nam! Thay kiểu delay của anh vào thì OK! Những xua tan vưỡng mắc đã được giải quết!Thanks.Thanks,Thanks.....Nhưng mà sao vòng for kiểu trên không được thế anh?

    Leave a comment:


  • namqn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Pác à
    Của tôi nó vẫn báo nạp thành công pác à! Chứ có nạp dở trừng mà ko nạp đựoc đâu! Nhưng có hiện tựong này là :
    Tôi có câu lệnh như thế này :
    Code:
            LATEbits.LATE0 = 0; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);    
            LATEbits.LATE0 = 1; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);
    lệnh này là LED nó sáng nhưng ko tắt.
    Sau đó tôi thay đổi lại :
    Code:
            LATEbits.LATE0 = 1; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);    
            LATEbits.LATE0 = 0; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);
    Lện này tắt nhưng ko sáng!
    TÔi cũng ko hiểu được nữa!
    Tôi không thích dùng loại vòng for lồng mà chỉ có một biến đếm. Không rõ trình dịch có xử lý gì ở chỗ này vì nó quá thông minh hay không.

    Bạn thử thay hai vòng for đó bằng lệnh __delay32(4000000) (để làm trễ 4 triệu chu kỳ máy) xem có khá hơn hay không (nhớ dùng #include <libpic30.h> để khỏi gặp lỗi biên dịch).

    Thân,

    Leave a comment:


  • hang1988
    replied
    ANh Nam đã rất nhiệt tình! Những anh nam có xem trường hợp bị treo chip ko anh! Hay khẳ năng cấu hình cho dspic ko phù hợp với thạch anh. Cái này em tham khảo của anh!
    Hôm nay em quuết định đầu tư thêm 1 chú Dspic nữa? Hay là lần trước em mua thế nào có 80K/dspic30f4011. Hay là loại Pic đểu rồi!

    Leave a comment:


  • namqn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Ở đây em muốn dùng luôn nguồn nạp anh à! Em tưởng chỉ cần cấp nối 1 cặp Vss và Vdd là các cặp cặp chân kia nó cũng có điện. Có nghĩa là mình phải đầu nối tất cả các chân nguồn chung vào nhau với chân 2 và 3 của Pickit đúng ko al? Em cũng đã làm như vậy nhưng sao vẫn ko đựoc anh à!
    Hay là mình test trên bo mạch ko được? Psoc em test trên bo mạch cứ chạy ầm ầm. Trường hợp này có bị dei chip ko? NHưng mà Pickit2 vẫn nhận ra chip!
    Mạch nạp nhận diện và nạp chương trình được không có liên quan với việc chip có thể chạy chương trình hay không. Vì khi nạp thì không cần xung clock cho chip, mà chỉ có clock dữ liệu ICSP, còn khi chạy chương trình thì chip phải có xung clock. Ngoài ra, nếu chân MCLR không được xác định mức logic '1' thì chip có thể sẽ vẫn ở trạng thái reset, dẫn đến không chạy chương trình ứng dụng.

    Thân,

    Leave a comment:


  • hang1988
    replied
    Nguyên văn bởi chestnut Xem bài viết
    30cm là hơi dài đúng rồi, lúc trước mình cũng sài khoảng 30cm, từ khi gặp hiện tượng không nạp được cho 1 con chip, [lúc nạp giữ chừng báo lỗi] mình debug lòi con mắt cũng không biết nguyên nhân, thậm chí còn khò con chip dán ra rồi hàn con chip mới vô vẫn không tìm được lý do, cuối cùng buồn buồn cắt ngắn cáp nạp ra khoảng 5-10cm mới nạp thành công. Từ đó không bao giờ sài cáp nạp dài cả.
    Pác à
    Của tôi nó vẫn báo nạp thành công pác à! Chứ có nạp dở trừng mà ko nạp đựoc đâu! Nhưng có hiện tựong này là :
    Tôi có câu lệnh như thế này :
    Code:
            LATEbits.LATE0 = 0; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);    
            LATEbits.LATE0 = 1; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);
    lệnh này là LED nó sáng nhưng ko tắt.
    Sau đó tôi thay đổi lại :
    Code:
            LATEbits.LATE0 = 1; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);    
            LATEbits.LATE0 = 0; 
            for(t=0;t<10000;t++)
            for(t=0;t<2000;t++);
    Lện này tắt nhưng ko sáng!
    TÔi cũng ko hiểu được nữa!

    Leave a comment:


  • hang1988
    replied
    Nguyên văn bởi namqn Xem bài viết
    Test board (đặc biệt loại thường mua được tại VN) không tốt cho việc thử nghiệm vi điều khiển với tần số clock vài MHz trở lên.

    Trong sơ đồ bạn vẽ phác họa, còn hai cặp chân VDD và VSS chưa được cấp nguồn. Mọi cặp chân nguồn đều cần được cấp nguồn, và nên có một tụ lọc nhiễu loại ceramic, giá trị 100 nF, nối giữa các chân VDD và VSS, đặt càng gần các cặp chân nguồn càng tốt.

    Khi PICkit 2 thả nổi chân MCLR, cần có điện trở kéo lên với giá trị khoảng 10k - 33k nối giữa MCLR và VDD.

    Thân,
    Ở đây em muốn dùng luôn nguồn nạp anh à! Em tưởng chỉ cần cấp nối 1 cặp Vss và Vdd là các cặp cặp chân kia nó cũng có điện. Có nghĩa là mình phải đầu nối tất cả các chân nguồn chung vào nhau với chân 2 và 3 của Pickit đúng ko al? Em cũng đã làm như vậy nhưng sao vẫn ko đựoc anh à!
    Hay là mình test trên bo mạch ko được? Psoc em test trên bo mạch cứ chạy ầm ầm. Trường hợp này có bị dei chip ko? NHưng mà Pickit2 vẫn nhận ra chip!

    Leave a comment:


  • chestnut
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Cáp nạp của tôi chỉ có dài 30Cm thôi!
    30cm là hơi dài đúng rồi, lúc trước mình cũng sài khoảng 30cm, từ khi gặp hiện tượng không nạp được cho 1 con chip, [lúc nạp giữ chừng báo lỗi] mình debug lòi con mắt cũng không biết nguyên nhân, thậm chí còn khò con chip dán ra rồi hàn con chip mới vô vẫn không tìm được lý do, cuối cùng buồn buồn cắt ngắn cáp nạp ra khoảng 5-10cm mới nạp thành công. Từ đó không bao giờ sài cáp nạp dài cả.

    Leave a comment:


  • namqn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Nhứng cái anh nói ở trên em đã check và ko bị như anh nói?
    Pickit 2 em mua ở pnLad anh à!
    Sơ đồ phần cứng của em rất đơn giản thôi : Em vẽ phác họa qua!

    Bạn có thể nhờ PNLab hỗ trợ trong việc làm quen với cách sử dụng PICkit 2 của họ. Chỉ cần 1 lần là bạn có thể sử dụng được.

    Thân,

    Leave a comment:


  • namqn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Cáp nạp của tôi chỉ có dài 30Cm thôi!
    30 cm thực ra vẫn còn dài, cáp ICSP của ICD 2 chính gốc chỉ dài 15 cm, còn PICkit 2 thì nối vào mạch thử nghiệm qua đầu nối, chứ không dùng cáp ICSP.

    Thân,

    Leave a comment:


  • namqn
    replied
    Nguyên văn bởi hang1988 Xem bài viết
    Em cắm nó lên bo mạch thử mầu trắng để test ( BO mạch cắm). Để điều khiển 1 con LED! Sơ đồ em cắm như hình vẽ trên!
    Test board (đặc biệt loại thường mua được tại VN) không tốt cho việc thử nghiệm vi điều khiển với tần số clock vài MHz trở lên.

    Trong sơ đồ bạn vẽ phác họa, còn hai cặp chân VDD và VSS chưa được cấp nguồn. Mọi cặp chân nguồn đều cần được cấp nguồn, và nên có một tụ lọc nhiễu loại ceramic, giá trị 100 nF, nối giữa các chân VDD và VSS, đặt càng gần các cặp chân nguồn càng tốt.

    Khi PICkit 2 thả nổi chân MCLR, cần có điện trở kéo lên với giá trị khoảng 10k - 33k nối giữa MCLR và VDD.

    Thân,

    Leave a comment:


  • hang1988
    replied
    Nguyên văn bởi namqn Xem bài viết
    Mạch thử nghiệm của bạn chắc là tự làm? Sơ đồ mạch thử nghiệm ra sao?

    Thân,
    Em cắm nó lên bo mạch thử mầu trắng để test ( BO mạch cắm). Để điều khiển 1 con LED! Sơ đồ em cắm như hình vẽ trên!

    Leave a comment:

Về tác giả

Collapse

hang1988 Tìm hiểu thêm về hang1988

Bài viết mới nhất

Collapse

Đang tải...