User manual

371 C-Control Pro IDE
© 2013 Conrad Electronic
Beispiel: Pulsweitenmodulation mit 6,4 ms Periode und 1,28 ms Pulsweite Kanal A und 640 µs Pulswei-
te Kanal B
Timer_T1PWMX(100,20,10,PS_1024); // Periode: 100*69,44 µs = 6,94 ms
// PulsA: 20*69,44 µs = 1,389 ms
// PulsB: 10*69,44 µs = 694,4 µs
Bei den Timer PWM Funktionen ist ein Wert von Null r den Pulsweiten Parameter nicht er-
laubt, und schaltet den Ausgang des PIN auch nicht aus. Um ein low Signal zu erzeugen, muss der
Timer ausgeschaltet werden (Timer_Disable) und der PIN auf Ausgang geschaltet werden. Benutzt
man eine PWM Funktion die mehrere PWM Signale erzeugt, dann eine PWM Funktion aufrufen
(z.B.Timer_T1PWM), die den PIN, der auf low geschaltet werden soll, nicht umft.
Ein Beispiel:
while(1)
{
Timer_T1PWMX(255,128,128,PS_8);
Timer_T1PWA(128);
Timer_T1PWB(128);
AbsDelay(1000);
// OC1B ausschalten
Timer_Disable(1);
Timer_T1PWM(255,128,PS_8);
Port_DataDirBit(14,1);
Port_WriteBit(14,0);
}
5.26.1.5 Puls & Periodenmessung
Mit Timer_1 oder Timer_3 (nur Mega128) können Pulsweiten oder Signalperioden gemessen werden.
Es wird mit Hilfe der Input Capture Funktion (spezielles Register des Controllers), die Zeit zwischen
zwei Flanken gemessen. Diese Funktion nutzt den Capture-Interrupt ( INT_TIM1CAPT). Der Puls
wird zwischen einer steigenden und der nächsten fallenden Signalflanke gemessen. Die Periode wird
zwischen zwei steigenden Signalflanken gemessen. Durch die Input Capture Funktion gehen Pro-
grammlaufzeiten nicht als Ungenauigkeit in das Mergebnis ein. Mit dem programmierbaren Vortei-
ler kann die Auflösung des Timer_1 festgelegt werden. Vorteiler siehe Tabelle.
Beispiel: Pulsbreitenmessung (Projekt PMessung) 434 µs (100 x 4,34 µs, siehe Tabelle) einschalten
word PM_Wert;
void Timer1_ISR(void)
{
int irqcnt;