C Control PRO UNIT MEGA 32 198206 Benutzerhandbuch
Produktcode
198206
111
C-Control Pro Mega 32
© 2005 Conrad Electronic
void main(void)
{
Port_DataDirBit(
{
Port_DataDirBit(
0
,
0
);
// PortA.0 Ausgang
Port_WriteBit(
0
,
0
);
// PortA.0 Ausgang=0
Irq_SetVect(INT_TIM0COMP,Timer0_ISR);
// Interrupt Service Routine
definieren
(
100
,ps_1024);
// Zeit festlegen und Timer0
starten
// weiterer Programmablauf...
}
5.3.16.5 Puls & Periodenmessung
Mit dem Timer_1 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 (
Input Capture Funktion (spezielles Register des Controllers) die Zeit zwischen zwei Flanken
gemessen. Diese Funktion nutzt den Capture-Interrupt (
). 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
Programmlaufzeiten nicht als Ungenauigkeit in das Messergebnis ein. Mit dem programmierbaren
Vorteiler kann die Auflösung des Timer_1 festgelegt werden. Vorteiler siehe
zwischen zwei steigenden Signalflanken gemessen. Durch die Input Capture Funktion gehen
Programmlaufzeiten nicht als Ungenauigkeit in das Messergebnis ein. Mit dem programmierbaren
Vorteiler kann die Auflösung des Timer_1 festgelegt werden. Vorteiler siehe
.
) einschalten
word PM_Wert;
void Timer1_ISR(void)
{
int irqcnt;
{
int irqcnt;
PM_Wert=
(
0
);
// Pulsweite messen
irqcnt=Irq_GetCount(INT_TIM1CAPT);
}
}
void main(void)
{
byte n;
{
byte n;
Irq_SetVect(INT_TIM1CAPT,Timer1_ISR);
// Interrupt Service Routine
definieren
(
100
,ps_64);
// Pulsgenerator starten
// die Messung beginnt hier
// Output Timer0 OC0(PortB.3) verbinden mit ICP (input capture pin) (PortD.6)
PM_Wert=
0
;
(ps_64);
// Vorteiler für Messung festlegen
while(PM_Wert==
0
);
// Pulsbreite oder Periode messen
Msg_WriteHex(PM_Wert);
// Messwert ausgeben
}