PIC24 Timer

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ricjon
Inlägg: 4
Blev medlem: 20 januari 2009, 11:02:21

PIC24 Timer

Inlägg av ricjon »

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.
Senast redigerad av ricjon 20 januari 2009, 13:31:47, redigerad totalt 1 gång.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: PIC24 Timer

Inlägg av Micke_s »

Är det inte så att TMR1 är en 8 bitars timer??
ricjon
Inlägg: 4
Blev medlem: 20 januari 2009, 11:02:21

Re: PIC24 Timer

Inlägg av ricjon »

Micke_s skrev:Är det inte så att TMR1 är en 8 bitars timer??
Nej, det är en 16 bitars.
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: PIC24 Timer

Inlägg av PHermansson »

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
ricjon
Inlägg: 4
Blev medlem: 20 januari 2009, 11:02:21

Re: PIC24 Timer

Inlägg av ricjon »

PHermansson 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
Glömde ta med hur jag satt upp Timer registret :oops: Har lagt till det i mitt första inlägg nu.. Jag har satt prescalern till 256
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: PIC24 Timer

Inlägg av PHermansson »

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.
ricjon
Inlägg: 4
Blev medlem: 20 januari 2009, 11:02:21

Re: PIC24 Timer

Inlägg av ricjon »

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);
//---------------------------------------------------------------
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: PIC24 Timer

Inlägg av PHermansson »

Grattis!
Kul att det löste sig.
Skriv svar