Forum: Mikrocontroller und Digitale Elektronik Welche Möglichkeiten gibt es bem STM 32 F407-Board einen Ausgangspuls definierter Länge auszugeben?


von timjk (Gast)


Lesenswert?

Es handelt sich um einen digitalen Ausgang, der im Open-Drain-Modus 
läuft und der für einen Trigger mindestens 4 Mikrosekunden lang auf LOW 
schalten muss..

Wie realisiere ich das am Besten? Ich möchte ungerne einen Timer 
aktivieren, da der Ausgang ohnehin schon durch ein Interrupt ausgelöst 
wird. Gibt es spezielle Konfigurationen für z.B. Rechtecksignale am 
Ausgang? Werde aus dem Datenblatt diesbezüglich nicht schlau

Danke im Voraus für Hilfe jeder Art ;)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

timjk schrieb:
> Ich möchte ungerne einen Timer
> aktivieren

Aber die Unmenge an Timer, die der Chip hat, bieten sich doch gerade an. 
Dein Interupt startet einen Timer, der nur einmal durchläuft und ein CC 
Register hat. Ich müsste jetzt mal nachschauen, wieviele Timer des F407 
PWM Ausgänge haben, aber es sind reichlich.

von Gerd E. (robberknight)


Lesenswert?

timjk schrieb:
> Es handelt sich um einen digitalen Ausgang, der im Open-Drain-Modus
> läuft und der für einen Trigger mindestens 4 Mikrosekunden lang auf LOW
> schalten muss..
>
> Wie realisiere ich das am Besten? Ich möchte ungerne einen Timer
> aktivieren

Wie genau muss denn diese Triggerzeit sein?

Wenn es nicht so genau sein muss und nur die Mindestzeit von 4µs 
eingehalten werden muss, könntest Du nach dem Low-Setzen dir die 
aktuelle Systemzeit z.B. aus dem Systick-Timer holen.

Jedesmal wenn Du jetzt Deine Main-Schleife, Idle-Thread,... durchläufst, 
prüfst Du ob die 4µs schon vorbei sind. Wenn ja, dann deaktivierst Du 
das Signal.

Bessere RTOS bieten virtuelle Timer. Die sind genau für solche Dinge 
gedacht. Siehe z.B. hier:
http://www.chibios.org/dokuwiki/doku.php?id=chibios:book:kernel_vt

von pegel (Gast)


Lesenswert?

Geht es wieder um die Kamera?

Ein Timer ist die beste Lösung.
Im Slave Modus wird der Timer direkt durch dem Master Interrupt 
ausgelöst, einfacher geht es kaum.

von timjk (Gast)


Lesenswert?

okay die Option zum Slave-Modus ist mir schon mal bei der Konfiguration 
in CubeMX unter die Augen gekommen.

Habe das aber noch nicht gemacht. (Bisher tatsächlich nur einen 
Timer-Interrupt, also genau der umgekehrte Weg)

Wie würde das dann bei der Auslösung in Programmiersprache aussehen?
Also welchen Befehl müsste ich dann in meiner ISR machen, um das Signal 
entsprechend der Länge des Timers auszugeben? Würde vermuten eine 
if-Bedingung im Zusammenhang mit der TIM-Variable...
Verwende übrigens die HAL_Library

von pegel (Gast)


Lesenswert?

Das kannst du alles in CubeMX einstellen, der macht das schon.

Ich selbst habe das nur als Variante PWM Timer steuert anderen PWM Timer 
gemacht. Sollte aber so auch ähnlich sein.

von STM Apprentice (Gast)


Lesenswert?

timjk schrieb:
> Wie realisiere ich das am Besten?

- Port 0 schreiben
- delay_us (4)
- Port 1 schreiben

Beitrag "stm32f103 1 us Systick-timer delay"

von Axel S. (a-za-z0-9)


Lesenswert?

pegel schrieb:
> Geht es wieder um die Kamera?

Der Frage würde ich mich anschließen.

Und vorsorglich, weil die Antwort ja wohl "ja" sein wird, noch eine 
Folgefrage stellen: Auch wenn die Mindestimpulszeit der Kamera 3µs sind, 
warum machst du den Impuls mit 4µs so kurz? Nimm 4ms. Damit könntest du 
trotzdem noch über 100 mal pro Sekunde auslösen. Was die Kamera 
mußmaßlich sowieso nicht schafft.

von dingens (Gast)


Lesenswert?

Der STM32 hat Output Compare. Das würde ich mir mal ansehen. Damit 
müsste man das eigentlich lösen können.
Mit einer geschickten Kombination aus Timern und Prescalern sollte es 
möglich sein, beliebige Zeiten zu realisieren.

PS:
Warum verwenden alle immer die alten Gurken mit der schimmligen 
Peripherie wie den F407? Es gibt neuere und viel schönere STM32 
Derivate, wie den STM32F303.

Naja, wahrscheinlich wird man sonst von den Fanboys angekläfft :-(

von Stefan F. (Gast)


Lesenswert?

dingens schrieb:
> Warum verwenden alle immer die alten Gurken mit der schimmligen
> Peripherie wie den F407?

Möglicherweise weil man den preisgünstig als Modul bekommen kann. Das 
spielt jedenfalls bei mir eine sehr grosse Rolle bei der Auswahl meiner 
Mikrocontroller.

von Seelen Forscher (Gast)


Lesenswert?

dingens schrieb:
> Warum verwenden alle immer die alten Gurken mit der schimmligen
> Peripherie wie den F407?

Seltsam dass diese verschimmelten Peripherie-Teile so wunder-
bar funktionieren, vergleichsweise wenig Software-Liebe brauchen
und - wie Stefanus schon ausführte - günstig zu bekommen sind.

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.