View Single Post
Old 05-08-2009, 04:36 PM   #2
enti
Đệ tử 2 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 26
:
Mình dùng Timer1 nhưng không được như mong muốn, code như sau:
Code:
#include <p24FJ256GB106.h>

//Configs, EC clock, No protect, Watchdog Off
_CONFIG1 (JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx1 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS1)
_CONFIG2 (IESO_OFF & PLLDIV_DIV5 & PLL_96MHZ_ON & FNOSC_PRIPLL & FCKSM_CSDCMD & OSCIOFNC_ON & IOL1WAY_OFF & DISUVREG_OFF & POSCMOD_HS)

int main ()
{
	TRISE = 0;
	LATE = 0;

	T1CON = 0x0000;
	T1CONbits.TCKPS1 = 0;
	T1CONbits.TCKPS0 = 0;
	TMR1 = 0x0000;
	PR1 = 0x0002;
	_T1IP = 0x01;
	_T1IF = 0;
	_T1IE = 1;
	_TON = 1;
	while (1)
	{
	}
	return 1;
}

void __attribute__((interrupt, auto_psv)) _T1Interrupt(void)
{
	_T1IF = 0;
	TMR1 = 0x0000;
	_LATE0 = !_LATE0;
}
Với đoạn code trên mình dùng máy đo thì tín hiệu trên chân RE0 thay đổi mỗi 2us.
Nếu thay đổi
T1CONbits.TCKPS1 = 0;
T1CONbits.TCKPS0 = 1;
Cũng không thay đổi, dù theo datasheet thì tần số sẽ 1:8
Có bạn nào có kinh nghiệm đã làm rồi thì hướng dẫn giúp mình.
enti vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn