Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > > > > > Hallo, > > > > > > > > > > > > > > > > bevor der längere Text beginnt: > > > > > > > > Kann mir jemand mitteilen, welche Timer in welchen Funktionen verwendet werden? > > > > > > > > z.B. habe ich hier im Forum gelesen, dass Multithreading, Delay.. Timer benötigen. > > > > > > > > > > > > > > > > Zur Erklärung: > > > > > > > > Ich möchte eine eigene Zeitbasis in meinem C-Programm aufbauen. > > > > > > > > Damit möchte ich Warteschleifen in den Hauptroutinen vermeiden. > > > > > > > > Eigentlich ist es auch kein Problem.Ich habe aber festgestellt,dass > > > > > > > > es bei der gleichzeitigen Benutzung der fertigen Funktionen zu Kollisionen kommt, > > > > > > > > und meine Zeitbasis verändert wird. Es stehen 4 Timer zur Verfügung. > > > > > > > > Meine Frage: > > > > > > > > Welche Timer werden in welchen Funktionen genutzt und welche Timer wären > > > > > > > > für den eigenen Gebrauch frei ? > > > > > > > > > > > > > > > > > > > > > > > > Vielen Dank in Voraus > > > > > > > > > > > > > > > > Gruß > > > > > > > > Manfred > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Siehe Manual: > > > > > > > > > > > > > > "Es stehen im C-Control Pro Mega 32 zwei, Mega128 drei unabhängige Timer-Counter > > > > > > > zur Verfügung. Timer_0 mit 8 Bit und Timer_1 mit 16 Bit Timer_3 mit 16 Bit > > > > > > > (nur Mega128). Timer_2 wird von der Firmware als interne Zeitbasis verwendet, > > > > > > > und ist fest auf einen 10ms Interrupt eingestellt." > > > > > > > > > > > > > > Alle anderen Timer werden halt verändert, wenn Du die Timer Funktionen des > > > > > > > entsprechenden Timers benutzt. Da wären noch die Servoroutinen, aber in denen > > > > > > > gibt man explizit den Timer an der genutzt wird. > > > > > > > > > > > > > > Gruss Peter > > > > > > > > > > > > > > > > > > > Hallo Peter, > > > > > > > > > > > > vielen Dank für die schnelle Antwort. Werde es mal versuchen und dann berichten. > > > > > > > > > > > > > > > > > > Guß > > > > > > Manfred > > > > > > > > > > > > > > > > > > > > > > > Hallo Manfred, > > > > > in meiner Steuerung benötige ich auch viele Zeit- und Wartefunktionen, kann aber keine Warteschleifen > > > > > einbauen, da die Steuerung viele Dinge parallel tun muss. > > > > > Ich verwende dafür den 10ms Interrupt, der vom System bereitgestellt wird. Über entsprechende > > > > > Timer-Variable, die in dem 10ms IRQ hoch bzw. runtergezählt werden, lassen sich umfangreiche Zeit- > > > > > Funktionen aufbauen, ohne daß man einen zusätzlichen HW-Timer benötigt. > > > > > Wenn dir die 10ms Auflösung reicht, wäre das vielleicht auch ein Lösungsansatz für dich. > > > > > > > > > > Gruß > > > > > Franz-Peter > > > > > > > > Hallo Franz-Peter, > > > > > > > > eine 10ms Auflösung wäre für meien Anwendung ausreichend. Ich werde die Hauptroutinen so > > > > schreiben, dass keine Wartezeit vergeht. Ich habe es bisher mit Timer 3 ausprobiert. Ich > > > > decremetiere globale Varibalen in der Interruptroutine. Es ist eigentlich wie eine Sanduhr. Jede > > > > Anwendung hat ihre eigene Sanduhr. So brauche ich keine Differenzbildung machen. Die CPU laüft > > > > so mit guter Performance. > > > > > > > > Der 10ms IRQ läuft doch über Timer2. Wie erhältst du Zugang? Eine eigene Routine > > > > stört die implementierte Routine.? Andererseits wäre es nur sinnvoll keinen zweiten Timer mit der > > > > gleichen Frequenz laufen zu lassen. > > > > > > > > Gruß > > > > Manfred > > > > > > > > > > > Hallo Manfred, > > > du kannst selbst eine Interruptroutine auf den Timer 2 setzen. Du darfst nur die Initiierung nicht > > > verändern. In der Hilfe ist unter 'Bibliothek' -> 'Interrupt' sogar ein Beispiel dazu : Mit > > > Irq_SetVect(INT_TIM2COMP,ISR); > > > setzt du den Timer2 auf die IRQ Routine 'ISR', die dann automatisch alle 10ms aufgerufen wird. > > > Im Prinzip genauso, wie man es bei einem eigenen Timer auch macht, nur dass man eben den > > > System-Timer mitnutzt. > > > Ansonsten mache ich es im Prinzip genauso, dass ich in der IRQ-Routine globale Variable > > > herunterzähle. > > > > > > Gruß > > > Franz-Peter > > > > > > Hallo Franz-Peter, > > > > wenn ich eine eigene IRQ auf Timer2 setze, dann wird die IRQ der Firmware umgangen, oder? > > Ich weiß eben nicht, was ich da so anrichte, bzw was dann nicht mehr funktioniert. Vielleicht könnte > > Peter dazu etwas schreiben? > > > > @Peter, bitte schreib mal kurz ein paar Worte. > > > > > > Gruß > > Manfred > > > > > Hallo Manfred, > da wird in der Firmware nichts umgangen, die Funktionalität des Interpreters, die den 10ms Takt > nutzt funktioniert weiterhin. Ich nutze auch multithreading in dem Programm, und das funktioniert > einwandfrei. Der INT_TIM2COMP ist ein define in der IDE um den 10ms Takt auch in eigenen > Programmen nutzen zu können. Es ist auch das einzige, was man in der IDE/Bibliothek mit dem Timer 2 > machen kann. Zu dem Thema gibt es auch hier im Forum schon einige Beiträge. > Aber Peter kann dir das sicher auch nochmal bestätigen. > Gruß > Franz-Peter