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

Re: Timerunterschied Mega128 & Mega128CAN Kategorie: CC-Pro Unit & Appl.Board (von Torsten - 27.01.2014 19:25)
Als Antwort auf Timerunterschied Mega128 & Mega128CAN von Max - 23.01.2014 14:36
Ich nutze:
CC-Pro 128 Application Board, Pro-Bot128
> 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++;
>     }
> }

Hallo Max,

also bei mir funktioniert das Demoprogramm "PMeasurement"
mit Timer1 und Mega128Can auch nicht. Auch verschiedene
andere Versuche haben kein Erfolg gehabt. Mit drei kleinen
�nderungen lässt sich aber das Modul "IRControl" auch für
die Messung von einzelnen Impulsen verwenden. Der Messfehler
der bei den Messungen auftrit kommt dadurch zu Stande,
weil wir keine ASM-Interrupte haben und das Inputcaptureflag
nur pollen können. Für die Auswertung von Infrarotsignalen
schien mir daÃ? nicht so schlimm. Siehe: "Timer1GetPuls-0.01.zip"

 GruÃ? Torsten

Timer1GetPuls-0.01.zip




    Antwort schreiben


Antworten:

Re: Timerunterschied Mega128 & Mega128CAN (von Max - 30.01.2014 16:43)