Hallo, ich verwende den STM32F105 von STMicroelectronics. Ich habe einen timer (TIM1), der mir im up-count-mode ein schnelles Takt-Signal am Ausgang erzeugt. Dieses Takt-Signal soll so lange laufen, bis ich an einem anderen Eingang einen Pegelwandel von low nach high erhalte. Ich frage diesen Eingang nun endlos in einer Schleife ab, sobald der high-Pegel anliegt wird die Schleife verlassen und gleich sofort der timer (TIM1) disabled. Das ganze funktioniert nun „fast“ immer gut. Manchmal kommt es jedoch auch vor, dass die Schleife zu lange braucht und ein Takt zu viel am Ausgang des timers erzeugt wird. Der timer also nicht schnell genug angehalten wurde. Meine Frage ist nun, ob es möglich ist den Eingangspin (pin PA0) direkt zu nutzen, um den timer zu stoppen. Im Datenblatt habe ich unter „Using the break function „ und „Clearing the OCxREF signal on an external event“ etwas gefunden, dass das eventuell machen könnte. Aber irgendwie verwirren mich diese Kapitel total. Ist es nun möglich den Eingangspin direkt zu nutzen um den timer zu stoppen oder muss ich doch bei meiner Endlosschleife bleiben?
Du kannst den Pin auf einen EXTI Interrupt legen und in der Service-Routine den Timer stoppen :-)
Hallo und danke für deinen Beitrag. das rein und raus springen in/aus der Interruptroutine würde allerdings mehr Taktzyklen verbraten als das abfragen des eingangs in der schleife (denke ich ).
Hallo, Der Vorteil der Lösung mit dem exti ist, dass nicht den Eingang pollen musst, daher kann dein controller andere Sachen machen anstatt nur den Eingang abzufragen. Im stm32f4 kann man zwischen interrupt und event auswählen, periferien können auf diese events reagieren (siehe reference manual). Ob das im f1 auch geht weiß ich nicht. Lg
Ich meine mal was von einer external trigger Source gelesen zu haben in der Doku vom Timer des STM32 wäre das nicht was ? mfg
Das Stichwort heißt Capture!
@Marc: in meinem Fall ist das die einzige Zeitkritische stelle und der Controller muss Den ADC anschalten und gleich weiter das Signal ausgeben. Interrupts würde ich in diesem Fall eher kurz abschalten wollen. Die external trigger source dient meines Wissens nach nur um ein Takt vom Eingang ein zu speisen und dem timer zur Verfügung zu stellen. In meinem Fall verwende ich den internen Takt. @capcom Einheit: irgendwie kann ich mit dem Einwurf des einzelnen Worts nichts anfangen. Das einzige, bei dem mir capture vorgekommen ist, war beim einlesen eine Eingangs für den timer (was ich ja aber gar nicht vor habe). @all: eine Idee fällt mir aber gerade noch ein... vielleicht könnte man aber auch den Flankenwechsel von meinem Eingang nutzen, einem weiteren timer als Taktgeber zuführen, der dann aber schon nach dem ersten, gezählten Takt (also genau beim Pegelwechsel, den ich bisher abgepollt habe) ein event generiert. Dieses event könnte dann per timer-synchronisation meinem eigentlichen timer zugeführt werden, der dann automatisch stoppt. Muss ich mal probieren, wenn ich am Wochenende wieder Daheim bin (zz Krankenhaus). Falls das mit dem Kapitel im Eröffnungsbeitrag allerdings doch genau dafür gedacht sein sollte, wäre dieses vorhaben ein wenig "von hinten durch die Brust" :)
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.