hi,
ich habe zur Frequenzmessung das Bespielprogram bei c-control verwendet.
Damit misst er auch im KHZ Bereich relativ genau.
Sobald ich aber meine vereinfachte Version anwende wieso funktioniert
meine Version nicht?
Wie funktioniert den die Version von C-control in groben Zügen?
Gruß
Alex
word ct1; // globale
Variabledeklaration
word FRQ_Mode, FRQ_Wert; // globale
Variabledeklaration
word FRQ_Wertr;
void main (void)
{
LCD_Init( );
label:
FRQ_Mode=1; // keine Frequenzmessung
durchführen
Irq_SetVect(INT_TIM2COMP,FRQ_Messung); // Interrupt Service Routine
definieren
FRQ_Mode=0; // Messung starten
ct1=0;
while (FRQ_Mode==0); // warten bis Messung
beendet
LCD_CursorPos (0x00); //Cursor Position
1.Zeile
LCD_WriteWord (FRQ_Wert,0x05);
LCD_CursorOff();
goto label;
}
void FRQ_Messung(void)
{
int i; // Variabledeklaration
if (FRQ_Mode==0)
{
if (ct1==0)
{
Timer_T1CNT();
}
if (ct1>=100)
{
FRQ_Wert=Timer_T1GetCNT(); // Messwert übergeben
FRQ_Mode=1; // Messung beendet
}
}
ct1++; // Zähler um eins erhöhen
Irq_GetCount(INT_TIM2COMP); // Interrupt Request Counter
}
Meine Version:
{
LCD_Init( );
label:
Timer_T1CNT ();
AbsDelay(2000);
FRQ_Wert = Timer_T1GetCNT( );
FRQ_Wertr = FRQ_Wert /2;
LCD_Locate(1,1 );
LCD_WriteWord(FRQ_Wertr,0x05 );
goto label ;
}
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.