PIC24 Timer
PIC24 Timer
Försöker lära mig PIC-programmering och läser olika böcker och tutorials på nätet.
Har nu kört fast vid timer-funkionen.
Jag försöker få en delay på 1 sekund, jag använder ett startkit som består av ett explorer 16 kort. Processorn har en 8MHz
kristall.
Jag har skrivit så här,(tog bort onödig kod )
------------------------------------------------------------------------------------------
#include <p24fj128ga010.h>
//-------------------CONFIGURATION BYTES-----------------------
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2( FNOSC_PRIPLL & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_XT);
//---------------------------------------------------------------
#define DELAY 16000
T1CON=0x8030; //Timer1 on, prescaler 256
TMR1=0; //resets the count
while(TMR1<DELAY)
{
//Här vill jag att programmet står i 1 sekund. Men det väntar ca 256ms istället.
}
----------------------------------------------------------------------------------------------
DELAY-formeln har jag fått fram i en bok som heter Learning to fly the PIC24.
Jag misstänker att jag kanske har satt någon konfigurationsbit fel, Kanske någon kan hjälpa mig.
Har nu kört fast vid timer-funkionen.
Jag försöker få en delay på 1 sekund, jag använder ett startkit som består av ett explorer 16 kort. Processorn har en 8MHz
kristall.
Jag har skrivit så här,(tog bort onödig kod )
------------------------------------------------------------------------------------------
#include <p24fj128ga010.h>
//-------------------CONFIGURATION BYTES-----------------------
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2( FNOSC_PRIPLL & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_XT);
//---------------------------------------------------------------
#define DELAY 16000
T1CON=0x8030; //Timer1 on, prescaler 256
TMR1=0; //resets the count
while(TMR1<DELAY)
{
//Här vill jag att programmet står i 1 sekund. Men det väntar ca 256ms istället.
}
----------------------------------------------------------------------------------------------
DELAY-formeln har jag fått fram i en bok som heter Learning to fly the PIC24.
Jag misstänker att jag kanske har satt någon konfigurationsbit fel, Kanske någon kan hjälpa mig.
Senast redigerad av ricjon 20 januari 2009, 13:31:47, redigerad totalt 1 gång.
Re: PIC24 Timer
Nej, det är en 16 bitars.Micke_s skrev:Är det inte så att TMR1 är en 8 bitars timer??
- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt:
Re: PIC24 Timer
Med en 4MHz klocka tar det 65ms för timern att räkna till 65536. Med 8MHz tar det då ca 32ms. Att räkna till 16000 bör då ta 32/4=8ms.
Om vi antar att prescalern står på 1:32 så blir det 256ms.
Mao: Hur står prescalern?
http://www.piclist.com/techref/member/j ... TORIAL.htm
Om vi antar att prescalern står på 1:32 så blir det 256ms.
Mao: Hur står prescalern?
http://www.piclist.com/techref/member/j ... TORIAL.htm
Re: PIC24 Timer
Glömde ta med hur jag satt upp Timer registretPHermansson skrev:Med en 4MHz klocka tar det 65ms för timern att räkna till 65536. Med 8MHz tar det då ca 32ms. Att räkna till 16000 bör då ta 32/4=8ms.
Om vi antar att prescalern står på 1:32 så blir det 256ms.
Mao: Hur står prescalern?
http://www.piclist.com/techref/member/j ... TORIAL.htm

- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt:
Re: PIC24 Timer
Hur är det med Period Register 1?
"5. Load the timer period value into the PR1 register."
Glöm inte grundregeln att aldrig anta några värden hos register.
"5. Load the timer period value into the PR1 register."
Glöm inte grundregeln att aldrig anta några värden hos register.
Re: PIC24 Timer
Jag hittade problemet, det finns tydligen en PLL som dubblar kristallfrekvensen med 4.
När jag skrev konfigurationsbitarna så var det alternativet valt
//-------------------CONFIGURATION BYTES-----------------------
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2( FNOSC_PRIPLL & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_XT);
//---------------------------------------------------------------
Ny setting
//-------------------CONFIGURATION BYTES-----------------------
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2( FNOSC_PRI & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_XT);
//---------------------------------------------------------------
När jag skrev konfigurationsbitarna så var det alternativet valt
//-------------------CONFIGURATION BYTES-----------------------
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2( FNOSC_PRIPLL & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_XT);
//---------------------------------------------------------------
Ny setting
//-------------------CONFIGURATION BYTES-----------------------
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & ICS_PGx2 & FWDTEN_OFF & WINDIS_OFF);
_CONFIG2( FNOSC_PRI & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_XT);
//---------------------------------------------------------------
- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt: