C Control PRO Unit Mega 128 198219 ユーザーズマニュアル

製品コード
198219
ページ / 429
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.
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.
Timer_T0Time (8 Bit)
Beispiel: Timer0: Ausgang mit einer Verzögerung von 6,94  ms  (100x  69,44  µs, siehe  
) einschal-
ten
void Timer0_ISR(void)
{
    int  irqcnt;
    
    Port_WriteBit(
0
,
1
);
    
() ;                       
// Timer0 anhalten
    irqcnt=Irq_GetCount(INT_TIM0COMP);
}
void main(void)