timer in een pic

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
1303 RS
Berichten: 181
Lid geworden op: zo 28 nov 2004, 13:17
Locatie: . .. .. .

timer in een pic

Bericht door 1303 RS »

hallo

ik wil de hardware maige timer in een pic gebruiken om de tijd tussen 2 pulsen te meten

Nu was ik het datasheet aan het bekijkne maar ik heb er toch een paar vragen over

ik wil dus timer 1 gebruiken omdat dit een 16bit is

maar nu de insteling

T1con %00?????


Code: Selecteer alles

REGISTER 7-1: T1CON: TIMER1 CONTROL REGISTER (ADDRESS: 10h)
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
— — T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
bit 7 bit 0
bit 7-6 Unimplemented: Read as '0'

bit 5-4 T1CKPS1:T1CKPS0: Timer1 Input Clock Prescale Select bits
11 = 1:8 Prescale value
10 = 1:4 Prescale value
01 = 1:2 Prescale value
00 = 1:1 Prescale value

bit 3 T1OSCEN: Timer1 Oscillator Enable Control bit
1 = Oscillator is enabled
0 = Oscillator is shut off(1)


bit 2 T1SYNC: Timer1 External Clock Input Synchronization Control bit
TMR1CS = 1
1 = Do not synchronize external clock input
0 = Synchronize external clock input

TMR1CS = 0
This bit is ignored. Timer1 uses the internal clock when TMR1CS = 0.
bit 1 TMR1CS: Timer1 Clock Source Select bit
1 = External clock from pin RB6/T1OSO/T1CKI (on the rising edge)
0 = Internal clock (FOSC/4)

bit 0 TMR1ON: Timer1 On bit
1 = Disables Timer1
0 = Stops Timer1
Note 1: The oscillator inverter and feedback resistor are turned off to eliminate power drain.
Kan iemand het volgende een verduidelijken


bit 0 :

bit 1 : als deze 1 = moet je dan een klokpuls op pin RB6 zetten
Is de intenal clock stabiel genoeg

bit 2 :

bit 3 :

bit 4 5 :


bart
Joeri Fr
Berichten: 744
Lid geworden op: wo 29 sep 2004, 18:22
Locatie: Brugge (B). .. .

Bericht door Joeri Fr »

Hoi;
a) welke pic
b) wat is de kloksnelheid
c) welke snelheid wil je uit je timer

als je deze 3 vragen oplost, kun je weten hoe je je timer instelt.
1303 RS
Berichten: 181
Lid geworden op: zo 28 nov 2004, 13:17
Locatie: . .. .. .

Bericht door 1303 RS »

sorry de timer is heel nieuw voor mij

de pic is een 16f628 (16f648)

ik wou een externe cristal gebruiken van 4MH (volgens mij snel genoeg)

de timer moet om de 100µS tellen dus met 0.1mS nauwkeurig

de taal die ik gebruik is proton basic

Bart
elmowww
Berichten: 3
Lid geworden op: vr 7 sep 2007, 23:26
Locatie: Veldhoven. .
Contacteer:

Bericht door elmowww »

Een kristalklok is redelijk nauwkeurig. Meestal 30ppm.

Ik gok dat dat wel nauwkeurig genoeg is voor je (als je op de 100uS wilt meten).

Bit0: als je deze hoog maakt, dan loopt de timer. Laag, dan niet
Bit1: als je deze 1 maakt is de freq voor de prescaler Fosc / 4, dus in jouw geval 1MHz, deze i dus redelijk nauwkeurig.
Bit2: niet belangrijk bij gebruik van interne klok
Bit3: niet belangrijk bij gebruik van interne klok

Bit54: prescaler. Daardoor wordt de klokfrequentie nog eens gedeel voordat de timer telt.

Om 100uS increments te hebben zou je een prescaler van:
100 willen hebben. Immers 1/(Fosc/4) = 10*10^-6 (1us)
Dat ligt al buiten het bereik helaas van de prescaler. Dus neem je het maximum (8 )
bit5 = 1 en bit4 = 1

Dan geldt:
1/ (fosc/4/8 ) = 8uS per bitje

Dus tmr1 * 8 is het aantal uS

en
12.5 bitjes per 100uS

en kan je maximaal 0.5243S tellen.

Succes!
Joeri Fr
Berichten: 744
Lid geworden op: wo 29 sep 2004, 18:22
Locatie: Brugge (B). .. .

Bericht door Joeri Fr »

dank je om hierop te antwoorden elmowww.
Ik was het wat uit het oog verloren. :oops:

Het staat nog eens mooi in de datasheet van de 16F628 op pagina 48

T1con %00110011
Plaats reactie