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)
-   -   dao động trong dspic30F6010A- Các bác giúp em với!!! (http://www.picvietnam.com/forum/showthread.php?t=3595)

hoanggiamta 25-02-2009 08:02 PM

dao động trong dspic30F6010A- Các bác giúp em với!!!
 
em đang viết thử 1 chương trình cho con dspic30f6010A, gặp vấn đề về phần dao động. Cụ thể là là em không thấy có dao động. khi chạm tay vào 1 chân của thạch anh thì em mới thấy có dao động nhưng tần số rất thấp, thấp hơn nhiều so với tần số của thạch anh và tần số dao động nội FRC. Em đã kiểm tra rất kỹ phần cứng và em nghi là config bits của em có vấn đề. Em dùng MPLAP C30, em cấu hình lần lượt cho hai trường hợp là dùng dao động thạch anh và dao động nội. config bits như sau:
dao động nội:
_FOSC(CSW_FSCM_ON & FRC_PLL8);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF& MCLR_EN);

dao động dùng thạch anh:
FOSC(CSW_FSCM_OFF & XT_PLL8);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF& MCLR_EN);

thì đều không chạy. Mong các bác giúp em với!!!

namqn 25-02-2009 08:28 PM

Trích:

Nguyên văn bởi hoanggiamta (Post 22991)
em đang viết thử 1 chương trình cho con dspic30f6010A, gặp vấn đề về phần dao động. Cụ thể là là em không thấy có dao động. khi chạm tay vào 1 chân của thạch anh thì em mới thấy có dao động nhưng tần số rất thấp, thấp hơn nhiều so với tần số của thạch anh và tần số dao động nội FRC. Em đã kiểm tra rất kỹ phần cứng và em nghi là config bits của em có vấn đề. Em dùng MPLAP C30, em cấu hình lần lượt cho hai trường hợp là dùng dao động thạch anh và dao động nội. config bits như sau:
dao động nội:
_FOSC(CSW_FSCM_ON & FRC_PLL8);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF& MCLR_EN);

dao động dùng thạch anh:
FOSC(CSW_FSCM_OFF & XT_PLL8);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF& MCLR_EN);

thì đều không chạy. Mong các bác giúp em với!!!

Sơ đồ mạch ứng dụng của bạn ra sao? Bạn có các tụ decoupling giữa các cặp chân nguồn không? Bạn đặt trạng thái cho chân MCLR ra sao?

Thân,

hoanggiamta 25-02-2009 08:47 PM

em đặt trạng thái cho MCLR =1 bằng cách nối với Vcc qua điện trở 4,7K.Chương trình của em đã chạy nhưng đó là khi em chạm tay vào 1 chân của thạch anh.Giữa các cặp chân nguồn e không có tụ nào cả. em chỉ có 2 tụ 104 nối giữa Vcc và GND thôi.theo bác lỗi của em là do đâu?

namqn 25-02-2009 08:53 PM

Trích:

Nguyên văn bởi hoanggiamta (Post 22998)
em đặt trạng thái cho MCLR =1 bằng cách nối với Vcc qua điện trở 4,7K.Chương trình của em đã chạy nhưng đó là khi em chạm tay vào 1 chân của thạch anh.Giữa các cặp chân nguồn e không có tụ nào cả. em chỉ có 2 tụ 104 nối giữa Vcc và GND thôi.theo bác lỗi của em là do đâu?

dsPIC30F6010A có 5 cặp chân nguồn (VDD, VSS và AVDD, AVSS) mà bạn chỉ có 2 tụ 104! Bạn đã cấp nguồn vào tất cả các cặp chân nguồn chưa? Nên có một tụ ceramic 104 cho mỗi cặp chân nguồn kề nhau, đặt càng gần chip càng tốt.

Thân,

hoanggiamta 25-02-2009 09:06 PM

Vâng, nhưng em chọn nguồn dao động nội FRC cũng không được, và em cứ chạm tay vào 1 chân thạch anh thì chương trình lại chạy(nhưng với tốc độ rất chậm). Bác xem hộ em phần config bits của em có đúng không ạ?em sợ dspic30f6010a thuộc version 3 nên phải config có gì khác chứ ạ?

namqn 25-02-2009 09:31 PM

Trích:

Nguyên văn bởi hoanggiamta (Post 23000)
Vâng, nhưng em chọn nguồn dao động nội FRC cũng không được, và em cứ chạm tay vào 1 chân thạch anh thì chương trình lại chạy(nhưng với tốc độ rất chậm). Bác xem hộ em phần config bits của em có đúng không ạ?em sợ dspic30f6010a thuộc version 3 nên phải config có gì khác chứ ạ?

Tôi có thói quen xác định tường minh giá trị của tất cả các từ cấu hình, với bộ dao động nội thì tôi thường dùng như sau:
Code:

        _FOSC(CSW_FSCM_OFF & FRC_PLL8);
        _FWDT(WDT_OFF);
        _FBORPOR(PBOR_OFF & MCLR_EN);
        _FBS(CODE_PROT_OFF);
        _FSS(CODE_PROT_OFF);
        _FGS(CODE_PROT_OFF);
        _FICD(ICS_NONE);

Khi bạn dùng cấu hình XT_PLL8 thì bạn dùng thạch anh tần số bao nhiêu?

Chú ý đọc errata sheet sau, mục 14: http://ww1.microchip.com/downloads/e...Doc/80258G.pdf.

Thân,

hoanggiamta 25-02-2009 09:42 PM

em dùng thạch anh tần số 8 MHz.em cũng đã đọc datasheet này rồi,nhưng em không thấy khác dspic30f4012 điểm nào ở phần dao động.trước đây em đã làm với dspic30f4012, thạch anh 4MHz và chạy rất tốt rồi ạ.

namqn 25-02-2009 10:53 PM

Trích:

Nguyên văn bởi hoanggiamta (Post 23002)
em dùng thạch anh tần số 8 MHz.em cũng đã đọc datasheet này rồi,nhưng em không thấy khác dspic30f4012 điểm nào ở phần dao động.trước đây em đã làm với dspic30f4012, thạch anh 4MHz và chạy rất tốt rồi ạ.

Ở luồng dưới đây đã có bạn phản ánh rằng dsPIC30F5013 có lỗi ở bộ dao động:
http://www.picvietnam.com/forum/showthread.php?t=401

Do đó, không loại trừ khả năng bộ dao động của chip dsPIC30F6010A của bạn cũng có vấn đề. Tuy nhiên, bạn nên kiểm tra lại phần cứng của bạn, để đảm bảo không phải vì một nguyên nhân ngớ ngẩn nào khác.

Thân,

hoanggiamta 25-02-2009 10:59 PM

vâng.Cảm on bác rất nhiều!

conglong 01-03-2009 11:24 PM

Thầy Nam (namqn) cho em hỏi là :em đọc "dsPIC30F Family Reference Manual" ở phần "Device configuration" họ có nói về thanh ghi FOSC là :

" bit 3-0 FPR<3:0>: Primary Oscillator Mode Selection bits
1111 = EC w/ PLL 16x - External Clock mode with 16x PLL enabled. OSC2 pin is I/O.
1110 = EC w/ PLL 8x - External Clock mode with 8x PLL enabled. OSC2 pin is I/O.
1101 = EC w/ PLL 4x - External Clock mode with 4x PLL enabled. OSC2 pin is I/O.
1100 = ECIO - External Clock mode. OSC2 pin is I/O.
1011 = EC - External Clock mode. OSC2 pin is system clock output (FOSC/4).
1010 = Reserved. Do not use.
1001 = ERC - External RC Oscillator mode. OSC2 pin is system clock output (FOSC/4).
1000 = ERCIO - External RC Oscillator mode. OSC2 pin is I/O.
0111 = XT w/ PLL 16x - XT Crystal Oscillator mode with 16x PLL enabled (4 MHz-10 MHz crystal)
0110 = XT w/ PLL 8x - XT Crystal Oscillator mode with 8x PLL enabled (4 MHz-10 MHz crystal)
0101 = XT w/ PLL 4x - XT Crystal Oscillator mode with 4x PLL enabled (4 MHz-10 MHz crystal)
0100 = XT - XT Crystal Oscillator mode (4 MHz-10 MHz crystal)
001x = HS - HS Crystal Oscillator mode (10 MHz-25 MHz crystal)
000x = XTL - XTL Crystal Oscillator mode (200 kHz-4 MHz crystal) "

vây thì External Clock với XT Crystal Oscillator khác nhau chỗ nào hả thầy ?
khi em muốn thiết lập các chế độ tương ứng thì em phải thiết lập như thế nào (cả ASM lẫn C30) ?
Thầy có thể cho em xin cach thiết lập tường minh tất cả các mode của bộ giao động dsPIC30 không ?
em cảm ơn!
Chúc vui!

namqn 02-03-2009 05:11 AM

Trích:

Nguyên văn bởi conglong (Post 23119)
Thầy Nam (namqn) cho em hỏi là :em đọc "dsPIC30F Family Reference Manual" ở phần "Device configuration" họ có nói về thanh ghi FOSC là :

" bit 3-0 FPR<3:0>: Primary Oscillator Mode Selection bits
1111 = EC w/ PLL 16x - External Clock mode with 16x PLL enabled. OSC2 pin is I/O.
1110 = EC w/ PLL 8x - External Clock mode with 8x PLL enabled. OSC2 pin is I/O.
1101 = EC w/ PLL 4x - External Clock mode with 4x PLL enabled. OSC2 pin is I/O.
1100 = ECIO - External Clock mode. OSC2 pin is I/O.
1011 = EC - External Clock mode. OSC2 pin is system clock output (FOSC/4).
1010 = Reserved. Do not use.
1001 = ERC - External RC Oscillator mode. OSC2 pin is system clock output (FOSC/4).
1000 = ERCIO - External RC Oscillator mode. OSC2 pin is I/O.
0111 = XT w/ PLL 16x - XT Crystal Oscillator mode with 16x PLL enabled (4 MHz-10 MHz crystal)
0110 = XT w/ PLL 8x - XT Crystal Oscillator mode with 8x PLL enabled (4 MHz-10 MHz crystal)
0101 = XT w/ PLL 4x - XT Crystal Oscillator mode with 4x PLL enabled (4 MHz-10 MHz crystal)
0100 = XT - XT Crystal Oscillator mode (4 MHz-10 MHz crystal)
001x = HS - HS Crystal Oscillator mode (10 MHz-25 MHz crystal)
000x = XTL - XTL Crystal Oscillator mode (200 kHz-4 MHz crystal) "

vây thì External Clock với XT Crystal Oscillator khác nhau chỗ nào hả thầy ?
khi em muốn thiết lập các chế độ tương ứng thì em phải thiết lập như thế nào (cả ASM lẫn C30) ?
Thầy có thể cho em xin cach thiết lập tường minh tất cả các mode của bộ giao động dsPIC30 không ?
em cảm ơn!
Chúc vui!

Với External Clock, bạn cung cấp cho dsPIC một tín hiệu dao động từ một mạch dao động bên ngoài dsPIC. Còn với XT Crystal Oscillator, bạn dùng mạch dao động bên trong dsPIC với một thạch anh nối giữa hai chân OSC1 và OSC2.

Nếu dùng ASM30, bạn thiết lập hai chế độ trên như sau (giả sử dùng dsPIC30F4012, cả hai trường hợp đều dùng PLL x8):
Code:

        config        __FOSC, CSW_FSCM_OFF & EC_PLL8
        config        __FOSC, CSW_FSCM_OFF & XT_PLL8

Nếu dùng C30, bạn thiết lập hai chế độ trên như sau (giả sử dùng dsPIC30F4012, cả hai trường hợp đều dùng PLL x8):
Code:

        _FOSC(CSW_FSCM_OFF & EC_PLL8);
        _FOSC(CSW_FSCM_OFF & XT_PLL8);

Về việc thiết lập tường minh tất cả các mode có thể có cho bộ dao động trong dsPIC30F, bạn có thể xem ở cuối tập tin .inc (nếu lập trình hợp ngữ) hay cuối tập tin .h (nếu code bằng C30) tương ứng của chip đang dùng. Các tập tin này có thể tìm thấy ở thư mục con "Support/dsPIC30F/inc" trong thư mục cài đặt trình hợp dịch hay thư mục con "support/dsPIC30F/h" trong thư mục cài đặt trình biên dịch.

Thân,

conglong 04-03-2009 06:09 PM

Dạ vâng em hiểu rồi a.
Thầy cho em hỏi cái nữa về dao động nội, khi em dùng lệnh sau trong ASM :
" config __FOSC, CSW_FSCM_OFF & FRC "
Vậy thì tần số dao động chính xác của nó là bao nhiêu? Em tìm trongg datasheet và "manual reference ..." mà chưa thấy họ nói gì về điều này.
Em cảm ơn thầy !
Trân trọng !

namqn 04-03-2009 06:47 PM

Trích:

Nguyên văn bởi conglong (Post 23202)
Dạ vâng em hiểu rồi a.
Thầy cho em hỏi cái nữa về dao động nội, khi em dùng lệnh sau trong ASM :
" config __FOSC, CSW_FSCM_OFF & FRC "
Vậy thì tần số dao động chính xác của nó là bao nhiêu? Em tìm trongg datasheet và "manual reference ..." mà chưa thấy họ nói gì về điều này.
Em cảm ơn thầy !
Trân trọng !

Vì bộ dao động nội sử dụng mạch RC, nên tần số chính xác của nó không thể xác định được (phụ thuộc vào điện áp nguồn, nhiệt độ làm việc, sai số chế tạo, ...). Chỉ có tần số dao động danh định được nêu trong datasheet. Vì bạn hỏi ở cả hai luồng, tôi đưa ra thông tin cho cả dsPIC30F2010 và dsPIC30F6010A. Theo mục 19.2.5 trong datasheet của dsPIC30F2010, tần số danh định của FRC là 7.37 MHz +/- 2%. Theo mục 21.2.5 trong datasheet của dsPIC30F6010A, tần số danh định của FRC là 7.37 MHz.

Thân,

conglong 05-03-2009 10:35 AM

Trích:

Nguyên văn bởi namqn (Post 23204)
Vì bộ dao động nội sử dụng mạch RC, nên tần số chính xác của nó không thể xác định được (phụ thuộc vào điện áp nguồn, nhiệt độ làm việc, sai số chế tạo, ...). Chỉ có tần số dao động danh định được nêu trong datasheet. Vì bạn hỏi ở cả hai luồng, tôi đưa ra thông tin cho cả dsPIC30F2010 và dsPIC30F6010A. Theo mục 19.2.5 trong datasheet của dsPIC30F2010, tần số danh định của FRC là 7.37 MHz +/- 2%. Theo mục 21.2.5 trong datasheet của dsPIC30F6010A, tần số danh định của FRC là 7.37 MHz.

Thân,


Dạ vâng.
Thầy cho em hỏi câu nữa là trong tài liệu "Farmily manual reference dsPIC30 " họ co nói :
" dsPIC30F maximum operating frequency of 120 MHz must be met. "
Vậy con số 120Mhz đây là tần số Fosc hay là Fcy hả thầy
em mới học nên mong thầy giúp đỡ.
em cảm ơn thầy nhiều !
Trân trọng !

namqn 05-03-2009 05:36 PM

Trích:

Nguyên văn bởi conglong (Post 23237)
Dạ vâng.
Thầy cho em hỏi câu nữa là trong tài liệu "Farmily manual reference dsPIC30 " họ co nói :
" dsPIC30F maximum operating frequency of 120 MHz must be met. "
Vậy con số 120Mhz đây là tần số Fosc hay là Fcy hả thầy !
em mới học nên hỏi hơi nhiều mong thầy thông cảm.
em cảm ơn thầy nhiều !
Trân trọng !

120 MHz là giá trị tối đa cho phép của Fosc.

Thân,


Múi giờ GMT. Hiện tại là 07:00 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