Forum: Mikrocontroller und Digitale Elektronik Frequenzmessung mit (Absdelay) ungenau?


von Alex (Gast)


Lesenswert?

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 ;
}

: Verschoben durch User
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
Noch kein Account? Hier anmelden.