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)