C Control PRO Unit Mega 128 198219 ユーザーズマニュアル
製品コード
198219
372
Bibliotheken
© 2013 Conrad Electronic
PM_Wert=
();
// Pulsweite auslesen
irqcnt=Irq_GetCount(INT_TIM1CAPT);
}
void main(void)
{
byte n;
// Interrupt Service Routine definieren
Irq_SetVect(INT_TIM1CAPT,Timer1_ISR);
100
,PS0_64);
// Pulsgenerator Timer 0 starten
// die Messung beginnt hier
// Output Timer0 OC0(PortB.3) verbinden mit ICP(input capture pin, PortD.6)
PM_Wert=
0
;
// Pulsweite messen einstellen, Vorteiler für Messung festlegen
(0,PS_64);
while(PM_Wert==
0
);
// Pulsbreite oder Periode messen
Msg_WriteHex(PM_Wert);
// Messwert ausgeben
}
Aus Übersichtsgründen ist hier eine vereinfachte Version angegeben. Beim Mega128 wird we-
gen einer Kollision auf Pin B.4 der Timer_0 zur Pulserzeugung benutzt. Das vollständige Programm
ist im Ordner PW_Messung zu finden.
ist im Ordner PW_Messung zu finden.
5.26.1.6
Timerfunktionen
Es stehen zwei (Mega32) bzw. drei (Mega128) unabhängige Timer zur Verfügung.
Tim e r_ 0
mit 8 Bit,
Ti-
m e r_ 1
und
Tim e r_ 3
mit 16 Bit
(
nur Mega128
)
. Die Timer verfügen über einen programmierbaren Vorteiler.
Mit dem Timer läßt sich eine Zeit festlegen, nach der ein Interrupt ausgelöst wird. In der Interruptroutine
lassen sich dann bestimmte Verarbeitungsschritte ausführen.
lassen sich dann bestimmte Verarbeitungsschritte ausführen.
Timer_T0Time (8 Bit)
) einschal-
ten
void Timer0_ISR(void)
{
int irqcnt;
Port_WriteBit(
0
,
1
);
() ;
// Timer0 anhalten
irqcnt=Irq_GetCount(INT_TIM0COMP);
}
void main(void)