Hi Leute, ich bin auf der suche nach einem Mikrocontroller, welcher 3 Timer (8 oder 16bit, egal) besitzt. Dazu sollten die Timer über externe Signale gestartet werden können, sprich also, es sollten drei Tx Pins vorhanden sein. Bislang bin ich nur auf solche gestoßen, die zwar zwei 8Bit Timer und einen 16Bit Timer hatten, aber nur zwei externe Freigabe-Signale. Vielleicht kennt jemand von euch da einen geeigneten der sowas hat? Ansonsten werde ich doch den mit den zwei nehmen und den dritten mit externen Interrupts einschalten. Danke schonmal Gruß
Für AVR von Atmel gibt es eine Paramter-Liste, in der auch die Anzahl der Timer steht: http://www.atmel.com/dyn/products/param_table_v2.asp?family_id=607&OrderBy=part_no&Direction=ASC
Was soll denn "starten" hier bedeuten? Vielleicht beschreibst du ja mal eher dein Problem.
STK500-Besitzer schrieb: > Für AVR von Atmel gibt es eine Paramter-Liste, in der auch die Anzahl > der Timer steht: > http://www.atmel.com/dyn/products/param_table_v2.a... Auf der Seite habe ich mich schon umgeschaut, aber da bin ich noch nicht wirklich fündig geworden. Jörg Wunsch schrieb: > Was soll denn "starten" hier bedeuten? Vielleicht beschreibst du ja > mal eher dein Problem. Starten = Timer fängt an zu zählen. Also ein Freigabe-Signal für den Timer. Was soll ich denn noch weiter beschreiben? Ich brauche halt 3 Timer, die ich durch externe Signale (steigende Flanke, fallende Flanke) einschalten kann (=sie sollen anfangen zu zählen bis zu einem bestimmten Wert, der in einem vergleichsregister steht). Mehr habe ich damit erstmal nicht vor.
Magic Magicjon schrieb: > Starten = Timer fängt an zu zählen. Also ein Freigabe-Signal für den > Timer. as ist ja unabhängig von den Timer. Das kannst du ja in Softwre machen. Du registirerst dich auf den PinChange Interrupt und aktivierst dann den Timer. Vorausgesetzt das delay ist dir nicht zu groß. wenn du die ISR als naked schreibst, dann kriesgt du das wahrscheinlich in 10-15 Takten hin, falls das reicht.
Magic Magicjon schrieb: > Auf der Seite habe ich mich schon umgeschaut, aber da bin ich noch nicht > wirklich fündig geworden. Hö? Du brauchst doch nur auf die Sortierungspfeile zu klicken, dann steht das was du wissen willst ganz oben.
Timmo H. schrieb: > Hö? Du brauchst doch nur auf die Sortierungspfeile zu klicken, dann > steht das was du wissen willst ganz oben. ich vermute, er bezieht sich auf das Auslösen per externem Signal...
oh, sorry. Ich habe das etwas durcheinander gebracht. Die externen Pins T0-Tx sind ja nur für einen externen Takt der Timer gedacht :-) Also kann ich die Timer ja generell nur durch Interrupts starten, oder gibt es da doch eine externe Möglichkeit für?
Justus Skorps schrieb: > Timmo H. schrieb: >> Hö? Du brauchst doch nur auf die Sortierungspfeile zu klicken, dann >> steht das was du wissen willst ganz oben. > > ich vermute, er bezieht sich auf das Auslösen per externem Signal... ja genau, um die externe Auslösung gehts. Also sprich nur eine Hardwareauslösung.
Es gibt die Möglichkeit die Externe Ereignisse über den InputCapture zu detektieren... aber das ist auch nicht exakt das was du willst. Mach dir Gedanken über das zusätzliche Delay und realisier's in Software. Wenn du dich geschickt anstellst, ist dieses Delay konstant und du kannst es einfach auf den Wert drauf rechnen. Gruß Fabian
Achso das kann natürlich sein. Naja für die Reaktion auf steigende/fallende Flanke gibts ja externe Interrupts mehr als genug.
Ja, ok. wird wohl darauf hinauslaufen, dass ich es mit den externen Interrupts machen werde. Fabian B. schrieb: > Wenn du dich geschickt anstellst, ist dieses Delay konstant > und du kannst es einfach auf den Wert drauf rechnen. Für ein einziges Signal ist das ja kein Problem, dass Delay konstant zu halten aber für 3 Signalen, bei denen die steigende oder fallende Flanke auch mal zur gleichen Zeit kommen kann? mmh, könnte schwieriger werden, dieses konstant zu halten.
Also der kann das: STM32F103C8 Datenblatt RM0008 http://www.st.com/stonline/products/literature/rm/13902.pdf Siehe Seite 294. "Slave mode: Trigger mode" Der hat 4 Timer drin.
Daher schrob ich ja oben auch, dass du bitte erstmal dein Problem beschreiben sollst. Irgendwas muss ja mit den Timern hernach auch passieren, ansonsten rennen sie endlos weiter und laufen über und und und... Oder sie müssten halt (ebenfalls durch ein externes Ereignis?) wieder angehalten werden. Möglicherweise ist halt ein input capture tatsächlich das, was du suchst. Deine ursprünglich gestellte Aufgabe ließe sich durch externe Takteinspeisung eines Timers über ein UND-Gatter erreichen, das wiederum von einem Flipflop gesteuert wird, dessen SET-Signal dein externer Trigger ist. Da stellt sich natürlich sofort die Frage, wer das FF dann wieder löscht... (Den Takt könnte man dabei auch aus dem Controller selbst an die Timer leiten.) Ich fürchte nur, dass diese Logik, die zwar exakt deiner Aufgaben- stellung entspricht, bei weitem nicht das ist, was du am Ende wirklich brauchst.
Allegemine Beschreibung über den STM32 Controller gibt es hier: Siehe http://www.mikrocontroller.net/articles/STM32
Habe ich was überlesen, oder hat wirklich noch keiner gesagt/gefragt, wie schnell die Timer denn zählen sollen? Um Jörg Wunsch zu zitieren: > Vielleicht beschreibst du ja mal eher dein Problem. WAS willst du mit diesen Timern machen? Was sollen die Zählen? Wie schnell soll das ganze gehen? Welchen Jitter kannst du erlauben? BTW Wenn wir schon beim Vorschlagen von Hardware sind: mit einem CPLD/FPGA wäre das ganz einfach.
So, ich habe mal eine kleine Skizze erstellt. In dieser ist nur 1 Signal dargestellt und die dazugehörenden Ausgänge. Ich hoffe, man kann daraus erkennen, was ich machen möchte. Das soll insgesamt drei mal passieren.
Mal vorbehaltlich der Antworten auf Lothars Fragen: ich denke, dass ein input capture deine Lösung wäre, sofern du nach dem input capture genug Zeit in der Interruptroutine hast, um den Vergleichswert zu berechnen. Der Timer würde dann einfach durchlaufen.
> Bislang bin ich nur auf solche gestoßen, die zwar zwei 8Bit Timer und > einen 16Bit Timer hatten, aber nur zwei externe Freigabe-Signale. Schau dich mal bei Renesas um. Die M16C und groesser (M32,R32) haben immer irgendwas zwischen 8 und 16Timer. Solltest du die Timer fuer irgendwas im Zusammenhang mit Motorsteuerung brauchen, so sei erwaehnt das es auch Controller gibt die Timer besitzen die extra darauf optimiert sind. Dann reicht vielleicht auch ein neuerer R8C. Olaf
Lothar Miller schrieb: > WAS willst du mit diesen Timern machen? was ich mit den Timern machen möchte, konnte ich hoffentlich durch die Skizze darstellen. Lothar Miller schrieb: > Was sollen die Zählen? Über den Zählerstand soll eine Zeit eingestellt werden, wie man auch vlt aus der Skizze erkennen kann. Ist die Zeit von der steigenden oder fallenden Flanke des Eingangssignals bis zum Einschalten eines Ausgangs. Lothar Miller schrieb: > Wie schnell soll das ganze gehen? Die Zeit wird sich irgendwo im Bereich von 1us bewegen. Das Signal an sich liegt im Frequenzbereich von 5-20kHz. Lothar Miller schrieb: > Welchen Jitter kannst du erlauben? Also die Zeit muss z.B. 1us Betragen. Im Bereich bis 5% oder gar 10% größer wäre alles Ok. Kleiner darf nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.