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)
-   -   Chuyển Clock trong DsPic (http://www.picvietnam.com/forum/showthread.php?t=6051)

lybao_huy 01-04-2010 01:58 AM

Chuyển Clock trong DsPic
 
Cho tôi hỏi vấn đề này với:
#include <p33FJ64GP804.h>
#include <libpic30.h>
_FOSCSEL( FNOSC_FRC & IESO_OFF)// dao động nội nhanh lúc bật nguồn.

#define FCY 8000000UL
unsigned int i;
void main(){
CLKDIVbits.DOZEN=0;
OSCCONbits.CLKLOCK=0;// cho phép chuyển Clock
OSCCONbits.NOSC=6;//chuyển sang dao động nội nhanh chia 16.
OSCCONbits.OSWEN=1;// bắt đầu chuyển clock
while(OSCCONbits.OSWEN==1);//chờ cho chuyển clock xong.
TRISA=0;

while(1){
PORTA=0;
__delay_ms(400);
PORTA=1;
__delay_ms(400);
}
}

tôi thấy tốc độ nháy của đèn Led tại Pin A0 không thay đổi mặc dù tôi đã chuyển Clock. xin anh em giải thích hộ.

namqn 01-04-2010 10:14 AM

Trước khi bạn chuyển clock, đèn LED không hề nhấp nháy. Bạn chuyển clock xong thì đèn LED mới được bật/tắt, do đó bạn chỉ có 1 tốc độ nhấp nháy cho đèn LED thôi.

Cần cho đèn LED nhấp nháy vài lần trước khi chuyển clock, sau đó mới chuyển clock, rồi cho đèn LED tiếp tục nhấp nháy.

Thân,

lybao_huy 01-04-2010 01:27 PM

Tôi đã làm được rồi, thật ra chuyển xung trong DsPic thật phức tạp, được hướng dẫn cụ thể trong file Section 39. Oscillator (Part III):
http://www.mediafire.com/?jdtmmeytrrd


Chú ý từ mục 39.12/trang 28 cho đến hết và 2 lệnh
__builtin_write_OSCCONL(value)
__builtin_write_OSCCONH(value)
có ghi rõ trong file hlpMPLABC30 trong thư mục docs

Chúc anh em may mắn.


Múi giờ GMT. Hiện tại là 04:35 AM.

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