Input-capture timers
De input-capture timers bestaan elk uit een 16-bits register, dat wordt
gevuld met de waarde die de free-running counter heeft, op het moment dat
de bij de input-capture behorende ingangspin van logisch niveau verandert.
Met zo'n input capture kan dus worden gedetecteerd op welk tijdstip een
bepaalde gebeurtenis in de buitenwereld plaats vond. De input-capture
registers zijn 16-bits registers, die alleen gelezen kunnen worden.
Schrijven naar deze registers heeft geen effect.

Er zijn in de micro-controller 4 input-capture systemen aanwezig,
waarvan er één eventueel als output-compare geprogrammeerd kan worden.
Deze is dan niet langer als input-capture beschikbaar.
De voorwaarde waaronder de waarde van de free-running counter in het
input-capture register wordt opgeslagen is flexibel in te stellen. Voor
elk van de input-captures bevat het TCTL2 register twee bits die voor de
betreffende input-capture bepalen onder welke condities van de
bijbehorende ingang het capture register geladen moet worden met de inhoud
van de free-running counter:
|
EDGxB
|
EDGxA
|
conditie
|
|
0
|
0
|
nooit
|
|
0
|
1
|
bij een verandering van een '0' in een '1'
|
|
1
|
0
|
bij een verandering van een '1' in een '0'
|
|
1
|
1
|
bij elke verandering
|
Bij een input-capture kan een interrupt gegenereerd worden. Dit wordt
mogelijk gemaakt door het bij de betreffende input-capture behorende ICxI
bit in het TMSK1 register een '1' te maken. Daarnaast wordt bij elke
input-capture een vlag gezet in het TFLG1 register. Dit ICxF bit kan
worden teruggezet op '0', door op de betreffende plaats in het TFLG1
register een '1' te schrijven.
Wanneer een input-capture register wordt gelezen door de
micro-controller, kan het zijn dat tijdens het lezen een (nieuwe)
input-capture optreedt. Daardoor zou de inhoud van het register veranderen
tijdens het uitlezen van het register. Dit zou eenzelfde probleem kunnen
geven als beschreven voor het lezen van de free-running counter. Om dit te
voorkomen wordt de input-capture functie door de micro-controller
tijdelijk geblokkeerd wanneer het meest significante byte van een
input-capture register wordt gelezen. Daardoor heeft de processor tijd om
na het meest significante byte ook het minst significante byte correct te
lezen. Omdat de input-capture functie maar gedurende 1 cycle geblokkeerd
wordt, moet een input-capture register met 16-bits instructies gelezen
worden (zoals LDD, LDX of LDY instructies.)
De namen van de verschillende bits en registers voor de 4
input-captures is volgens de volgende tabel:
|
systeem
|
EDGxA
|
EDGxB
|
ICxI
|
ICxF
|
register
|
pin
|
|
capture1
|
EDG1A
|
EDG1B
|
IC1I
|
IC1F
|
TIC1
|
PA2
|
|
capture2
|
EDG2A
|
EDG2B
|
IC2I
|
IC2F
|
TIC2
|
PA1
|
|
capture3
|
EDG3A
|
EDG3B
|
IC3I
|
IC3F
|
TIC3
|
PA0
|
|
capture4
|
EDG4A
|
EDG4B
|
IC4I
|
IC4F
|
TIC4
|
PA3
|
Input-capture 4
Zoals gezegd heeft input-capture 4 een gedeelde plaats met een
output-compare register. Of dit register als input-capture werkt, dan wel
als output-compare, wordt bepaald door het I4O5 bit in het PACTL register.
Door een '0' in dit bit te schrijven, wordt het register een input-capture
register. Wanneer de micro-controller start, is het register al als
input-capture geconfigureerd.
Daarnaast is het mogelijk via het DDRA3 bit in het PACTL register te
bepalen of PA3 (de pin die bij input-capture 4 hoort) een ingang is (DDRA3
moet dan een '0' worden gemaakt) of een uitgang (DDRA3 moet dan op '1'
gezet worden.) De normale toepassing van een input-capture vereist dat
deze pin een ingang is. Wanneer de micro-controller start, is PA3 al als
ingang geprogrammeerd.
Registers voor de besturing van de input-captures
De I/O registers die de bits bevatten voor de besturing van de
input-capture timers zijn:
TMSK1 $1022
|
oc1i
|
oc2i
|
oc3i
|
oc4i
|
ic4i,oc5i
|
ic1i
|
ic2i
|
ic3i
|
TFLG1 $1023
|
oc1f
|
oc2f
|
oc3f
|
oc4f
|
ic4f,oc5f
|
ic1f
|
ic2f
|
ic3f
|
PACTL $1026
|
ddra7
|
paen
|
pamod
|
pedge
|
ddra3
|
i4o5
|
rtr1
|
rtr0
|
De I/O registers die bij een input-capture de van de free-running
counter gekopiëerde waarde bevatten zijn:
TIC1 $1010, $1011
|
bit15
|
bit14
|
bit13
|
bit12
|
bit11
|
bit10
|
bit9
|
bit8
|
|
bit7
|
bit6
|
bit5
|
bit4
|
bit3
|
bit2
|
bit1
|
bit0
|
TIC2 $1012, $1013
|
bit15
|
bit14
|
bit13
|
bit12
|
bit11
|
bit10
|
bit9
|
bit8
|
|
bit7
|
bit6
|
bit5
|
bit4
|
bit3
|
bit2
|
bit1
|
bit0
|
TIC3 $1014, $1015
|
bit15
|
bit14
|
bit13
|
bit12
|
bit11
|
bit10
|
bit9
|
bit8
|
|
bit7
|
bit6
|
bit5
|
bit4
|
bit3
|
bit2
|
bit1
|
bit0
|
TIC4, TOC5 $101E, $101F
|
bit15
|
bit14
|
bit13
|
bit12
|
bit11
|
bit10
|
bit9
|
bit8
|
|
bit7
|
bit6
|
bit5
|
bit4
|
bit3
|
bit2
|
bit1
|
bit0
|
|