Forum: Mikrocontroller und Digitale Elektronik Suche uC mit 3 Timern


von Magic M. (magicjon)


Lesenswert?

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ß

von STK500-Besitzer (Gast)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was soll denn "starten" hier bedeuten?  Vielleicht beschreibst du ja
mal eher dein Problem.

von Magic M. (magicjon)


Lesenswert?

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.

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

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.

von Justus S. (jussa)


Lesenswert?

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...

von Magic M. (magicjon)


Lesenswert?

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?

von Magic M. (magicjon)


Lesenswert?

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.

von Fabian B. (fabs)


Lesenswert?

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

von Timmo H. (masterfx)


Lesenswert?

Achso das kann natürlich sein.
Naja für die Reaktion auf steigende/fallende Flanke gibts ja externe 
Interrupts mehr als genug.

von Magic M. (magicjon)


Lesenswert?

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.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Allegemine Beschreibung über den STM32 Controller gibt es hier:
Siehe http://www.mikrocontroller.net/articles/STM32

von moo (Gast)


Lesenswert?

wenn 32-bit auch ok -> ATMEL AT91SAM7S.. der hat 3 16-Bit timer

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Magic M. (magicjon)


Angehängte Dateien:

Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Magic M. (magicjon)


Lesenswert?

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
Noch kein Account? Hier anmelden.