PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   dsPIC - Bộ điều khiển tín hiệu số 16-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=29)
-   -   dsPIC30F4013 không chạy (http://www.picvietnam.com/forum/showthread.php?t=2973)

gunnroses 21-10-2008 02:12 AM

dsPIC30F4013 không chạy
 
1 Attachment(s)
em đã làm 1 mạch test đơn giản.
và em dùng đoạn code này

PHP Code:

#include "p30f4013.h"

_FOSC(CSW_FSCM_OFF FRC HS);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF MCLR_EN);
_FGS(CODE_PROT_OFF);

void main ()
{
   
   
TRISB 0;         
   while(
1)            
   {
     
LATB 0xFFFF
      
   }



nạp vào rồi nhưng mà mạch chỉ chạy khi sờ tay vào chân reset thôi. Nếu bỏ tay ra thì k có biểu hiện gì nữa
Em không hiểu tại sai nữa. Giúp e nhé các bác

namqn 21-10-2008 02:36 AM

Bạn muốn dùng FRC hay HS? Bạn đã tắt clock switching trong code.

Theo mạch phần cứng của bạn, tôi cho là bạn đang muốn dùng thạch anh ngoài. Nếu đúng như vậy thì bạn không nên mô tả FRC trong _FOSC().

Kiểm tra lại xem điện trở R2 của bạn có bị hở mạch hay không.

Thân,

gunnroses 21-10-2008 10:11 AM

Em đã sửa lại code rồi, không dùng FRC nữa. Đo lại mạch rồi, trở R2 vẫn ổn. Mạch vẫn chạy như cũ. Mà cũng lã lắm, như kiểu có cảm ứng, đưa tay lại gần chân reset (chưa chạm vào) đèn đã sáng rồi. Đưa tay ra xa là tắt. Không hiểu như thế nào nữa

namqn 21-10-2008 05:30 PM

Bạn kiểm tra lại tất cả các chân VSS/AVSS phải nối với nhau thật tốt, điện áp trên các chân VDD phải được đảm bảo. Thêm các tụ 100 nF (ceramic) giữa các cặp chân nguồn, đặt càng gần chip càng tốt.

Nếu bạn dùng bread board thì kiểm tra lại bread board (bread board sẽ nhanh chóng xuống cấp ở điều kiện khí hậu của VN).

Thân,

gunnroses 21-10-2008 09:50 PM

Cám ơn anh. Em sửa đươc rồi. Do mạch reset. Cho thêm tụ 10uF song song với nút reset. Đơn giản quá mà k nghĩ ra

namqn 21-10-2008 10:53 PM

Trích:

Nguyên văn bởi gunnroses (Post 19756)
Cám ơn anh. Em sửa đươc rồi. Do mạch reset. Cho thêm tụ 10uF song song với nút reset. Đơn giản quá mà k nghĩ ra

Mắc tụ lớn (cỡ uF) vào giữa chân MCLR và GND là không nên đối với mạch thử nghiệm có đầu nối ICSP (là trường hợp mạch của bạn). Vì tụ điện này sẽ làm giảm tốc độ tăng Vpp khi PIC được chuyển sang chế độ nạp chương trình, và có thể dẫn đến trường hợp không kích hoạt được chế độ nạp chương trình.

Thân,

gunnroses 21-10-2008 11:11 PM

hic. Đúng rồi. Khi cho tụ vào thì không reset được, không detect được dspic luôn. Thế như trường hợp ở trên thì làm cách nào ạ

gunnroses 21-10-2008 11:17 PM

Cho e hỏi luôn.
Khi đưa mức cao ra chân RB1 thì dùng: _LATB1=1 --> chạy chính xác
Nhưng khi sang chân RB2: _LATB2=1 --> không thấy chạy j cả
Tại sao vậy ạ?

namqn 21-10-2008 11:17 PM

Bạn thử loại bỏ cả tụ và nút nhấn reset trong mạch xem sao (chỉ để điện trở giữa chân MCLR và VDD). Nếu mạch chạy ổn thì có lẽ nút nhấn reset của bạn có vấn đề (đã có người gặp trường hợp này rồi).

Thân,

namqn 21-10-2008 11:28 PM

Trích:

Nguyên văn bởi gunnroses (Post 19767)
Cho e hỏi luôn.
Khi đưa mức cao ra chân RB1 thì dùng: _LATB1=1 --> chạy chính xác
Nhưng khi sang chân RB2: _LATB2=1 --> không thấy chạy j cả
Tại sao vậy ạ?

Sơ đồ nguyên lý của bạn thể hiện diode của RB2 không nối vào các diode kia. Code của bạn chưa thiết lập giá trị cho thanh ghi ADPCFG, như vậy toàn bộ các chân RB0 .. RB12 (tương ứng AN0 ... AN12) sẽ là các chân analog (sau khi reset). Cần đặt thêm ADPCFG = 0xFFFF; vào code của bạn để có thể dùng các chân RBx như chân digital.

Thân,

gunnroses 22-10-2008 10:07 PM

Em đã tìm được nguyên nhân rồi. Đó là do để trở R2 lớn quá. Em đã để 10k. Xem lại trong datasheet thì chỉ có 5k thôi. Thay trở 5k vào chạy ngon lành. Cám ơn anh nhé

namqn 22-10-2008 11:06 PM

Trích:

Nguyên văn bởi gunnroses (Post 19805)
Em đã tìm được nguyên nhân rồi. Đó là do để trở R2 lớn quá. Em đã để 10k. Xem lại trong datasheet thì chỉ có 5k thôi. Thay trở 5k vào chạy ngon lành. Cám ơn anh nhé

Lạ nhỉ. Mạch thử nghiệm dsPIC của tôi toàn dùng 27k đến 33k (ví dụ, tham khảo các sơ đồ mạch trong các tutorial của tôi) mà có gặp vấn đề này bao giờ đâu.

Datasheet nào nêu giá trị 5k vậy bạn?

Thân,

gunnroses 23-10-2008 12:05 AM

Trong tài liệu Explorer 16 Uses Guide 51589a của Microchip. Trang 42

namqn 23-10-2008 12:48 AM

Trích:

Nguyên văn bởi gunnroses (Post 19809)
Trong tài liệu Explorer 16 Uses Guide 51589a của Microchip. Trang 42

Bạn dùng nguồn 5 V, sơ đồ của Explorer 16 dùng nguồn 3.3 V.

Bạn không dùng điện trở 1k giữa điểm nối tụ/nút nhấn và điện trở 4.7k, như sơ đồ của Explorer 16 đã dùng.

Sơ đồ của Explorer 16 dùng tụ 0.1 uF, nên điện trở mạch reset phải giảm xuống đến 4.7k nhằm có thể nâng áp MCLR lên đủ nhanh khi cấp nguồn cho board.

Do đó, tôi tin rằng chỉ đặt điện trở 10k từ VDD = 5 V đến chân MCLR là đủ cho mạch reset (mạch thử nghiệm dsPIC33F của tôi dùng 27k giữa VDD = 3.3 V và chân MCLR). Nếu có thêm tụ điện hay nút nhấn, theo khuyến cáo của Microchip là có thêm một điện trở từ điểm nối giữa tụ điện/nút nhấn reset và điện trở treo, đến chân MCLR, nhằm tránh hiện tượng latchup khi có xung áp âm xuất hiện ở chân MCLR (xảy ra do nút nhấn bị dội, áp trên tụ dao động trong quá trình quá độ).

Thân,


Múi giờ GMT. Hiện tại là 07:51 PM.

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