Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Timerunterschied Mega128 & Mega128CAN Kategorie: CC-Pro Unit & Appl.Board (von Max - 23.01.2014 14:36)


Hallo zusammen,

ich benutze das Mega 128 Application Board und den Mega128CAN. Mein Problem ist, dass
der Timer 3 einwandfrei funktioniert, Timer 1 mit dem identischen Code (natürlich T1 und T3
getauscht) aber nicht.
Die PWM wird auf PD4 beim T1 eingespeist.
Habe auch mal den Mega 128 mit dem selben Code getestet und dort funktionieren beide Timer
wie sie sollten.
Wird der Timer1 Interrupt irgendwie blockiert, da ich bei manchen Frequenzen einen viel zu
hohen Zählerwert bekomme? Wiederum andere Frequenzen werden einwandfrei gezählt.

Hoffe jemand kann mir helfen oder das selbe mal nachstellen und mir das Ergebniss sagen, da ich schon ewig an diesem
Problem sitze.

hier der Code:

// Deklaration der Formatierungsvariablen
#define SPACE 0x20
#define CR 13

word PM_Wert;                                   // globale Variablendeklaration
word Int;
//------------------------------------------------------------------------------
// Messung
//
void Timer1_ISR(void)
{
    PM_Wert=Timer_T1GetPM();                    // Messwert auslesen
    Int=Irq_GetCount(INT_TIM1CAPT);                 // Interrupt zurücksetzen

}

//------------------------------------------------------------------------------
// Hauptprogramm
//
void main(void)
{
    byte n;
    word i;
    n=0;

    Irq_SetVect(INT_TIM1CAPT,Timer1_ISR);       // Interrupt Service Routine definieren



    // die Messung beginnt hier
    // Timer Output verbinden mit ICP (input capture pin) Timer1
    while (1)
    {
        PM_Wert=0;
        //Timer_T1PM(0,PS_1);                     // Pulsmessung initialisieren und starten
        Timer_T1PM(1,PS_256);                     // Periodenmessung initialisieren und starten

        while (PM_Wert==0);                     // Pulsbreite und Periode messen

        Msg_WriteHex(n);                        // Anzahl Durchläufe ausgeben
        Msg_WriteChar(SPACE);
        Msg_WriteWord(PM_Wert);                 // Wert ausgeben
        Msg_WriteChar(CR);
        AbsDelay(50);                          // Delay 500ms
        n++;
    }
}


    Antwort schreiben


Antworten:

Re: Timerunterschied Mega128 & Mega128CAN (von Torsten - 27.01.2014 19:25)
    Re: Timerunterschied Mega128 & Mega128CAN (von Max - 30.01.2014 16:43)