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 | ||
| ||
> 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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum