Timer1 (16 Bit)
e
voorbeeld: produceren van frequenties met 125*4,34µ µ µ µ s = 1085µ µ µ µ s periode
1
Timer_T1FRQ(125,ps_64);
e
voorbeeld: produceren van frequenties met 10*1,085 µ µ µ µ s = 10,85 µ µ µ µ s periode en
2
2*1,085µ µ µ µ s = 2,17 µ µ µ µ s faseverschuiving
Timer_T1FRQX(10,2,ps_8);
5.3.16.3 Pulsbreedte –modulatie
Er staan voor de pulsbreedte –modulatie twee timers tot uw beschikking: Timer_0 met 8 Bit
en Timer_1 met 16 Bit. Met een pulsbreedte –modulatie kunt u heel gemakkelijk een digitaal
–analoog –omvormer realiseren.
Timer0 (8 Bit)
Voorbeeld: Pulsbreedte –modulatie met 138,9µ µ µ µ s periode en 5,42 µ µ µ µ s pulsbreedte, veranderd
naar 10,84 µ µ µ µ s pulsbreedte
Timer_T0PWM(10,2);
Timer_T0PW(20);
/ / Puls: 20*542,5 ns = 10,84
Timer1 (16 Bit)
Voorbeeld: pulsbreedte –modulatie met 6,4 ms periode en 1,28 ms pulsbreedte kanaal A en
640 µ µ µ µ s pulsbreedte kanaal B
Timer_T0PWMX(10,20,10,ps_1024);
5.3.16.4 Timerfuncties
Er staan twee onafhankelijke timers tot uw beschikking: Timer_0 met 8 bit en Timer_1 met
16 Bit. De timers beschikken over een programmeerbare voordeler, zie tabel. Met de timer
kunt u een tijd vastleggen, nadat een interrupt getriggerd is. In de interrupt -routine kunnen
dan verschillende bewerkingsstappen uitgevoerd worden.
Timer T0Time (8 Bit)
Voorbeeld: Timer0: uitgang met een vertraging van 6,94 ms (100x69,44 µ µ µ µ s, zie tabel)
inschakelen
Void
Timer0_ISR(void)
{
int irqcnt;
Port
_WriteBit(0,1);
Timer
T0Stop();
irqcnt=Irq_GetCount(INT_TIM0COMP);
}
void
main(void)
{
Port
_DataDirBit(0,0);
/ / Puls: 10*542,5 ns = 5,42
/ / Periode: 100*69,44
/ / PulsA: 20*69,44
/ / PulsB: 10*69,44
/ / Timer0 stoppen
µ
s, periode: 256*542,5 ns = 138,9
µ
s
µ
s = 6,94 ms
µ
s = 1,389 ms
µ
µ
s = 694,4
s
/ / PortA.0 uitgang
µ
s
105