mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 Input capture Synch/Trigger (SPL)


Autor: NoUSB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte ein Funksignal z.B. an PB8 eines STM32F103 dekodieren 
(Puls-Pausen-Modulation). Dazu sind die Puls- bzw. Pausenzeiten zu 
bestimmen.

Puls: Dauer zwischen steigender und fallender Flanke
Pause: Dauer zwischen fallender und steigender Flanke
(Periode: Dauer zwischen zwei [steigenden] Flanken)

Da gibt es einige Möglichkeiten: Polling, Interrupts, Timer Capture.
Offenbar ist es aber auch möglich, den Timer bzw. zwei Capture Units so 
zu konfigurieren, dass mit ein und demselben Pin (PB8 = TIM4_CH3) beide 
Zeiten (low/high oder Puls und Periode) messen lässt.

Sinnvoll wäre evtl. ein Reset des Timers bei steigender Flanke sowie 
jeweils Capture bei fallender (Pulsdauer prüfen) und steigender Flanke 
(Periode, Pause berechnen).
Der Interrupt nach einer Periode könnte die Dekodierung durchführen.

Leider finde ich aber bislang keine Doku (AN4013), die die Möglichkeiten 
dieser Timer/Capture-Verknüpfung etwas ausführlicher darstellt. In 
"Figure 100. General-purpose timer block diagram" (RM0008 
www.st.com/resource/en/reference_manual/cd00171190.pdf ) sind die 
Capture-Einheiten 1&2 sowie 3&4 paarweise verknüpft, jedoch ist TI3FP4 
kein gültiger Parameter für die Funktion TIM_SelectInputTrigger(). Ist 
die Master/Slave-Funktion nur für Channels 1 und 2 möglich? Auch AN4776 
beschreibt dies nicht explizit.

Eine (andere?) Art der paarweise Zuordnung lässt sich wohl über die 
TIM_ICInitTypeDef.TIM_ICSelection vornehmen? Lässt sich dort auch der 
automatische Reset konfigurieren?

Autor: K.A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe nicht, wodurch im Slave-Mode die zweite Capture-Einheit 
ausgewählt wird.

ST Beispiele der SPL, einzusehen z.B. 
https://github.com/g4lvanix/STM32F1-workarea/tree/...

Die readme.txt erwähnt den verwendeten Master/Slave Mode überhaupt 
nicht.
  /* TIM3 configuration: PWM Input mode ------------------------
     The external signal is connected to TIM3 CH2 pin (PA.01), 
     The Rising edge is used as active edge,
     The TIM3 CCR2 is used to compute the frequency value 
     The TIM3 CCR1 is used to compute the duty cycle value
  ------------------------------------------------------------ */

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x0;

  TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);

  /* Select the TIM3 Input Trigger: TI2FP2 */
  TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);

  /* Select the slave Mode: Reset Mode */
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);

  /* Enable the Master/Slave Mode */
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);

  /* TIM enable counter */
  TIM_Cmd(TIM3, ENABLE);

  /* Enable the CC2 Interrupt Request */
  TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);


Soweit klar: Capture mit Channel 2. Nur wie kommt Channel 1 ins Spiel? 
Er wird nicht explizit konfiguriert. Der ausgewählte "Input Trigger" 
TIM_TS_TI2FP2 führt laut o.g. Diagramm gar nicht auf IC1, das wäre 
TI2FP1. Ist das Beispiel also fehlerhaft? Oder ist TI2FP2 nur für den 
Reset per "Slave mode controller" zuständig? Dann stellt sich die Frage, 
was IC1 auslöst ja erst recht (und wieso ist das dann eine fallende 
Flanke?).

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Postest du hier unter verschiedenen Namen in einem Thread?
Das ist ein absolutes No-Go!

Autor: No Go (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tut mir sehr leid. Hat auf die Fragen aber keinen Einfluss.

Ich habe noch folgende Dokumente gefunden:

http://www.st.com/content/ccc/resource/training/te...

Sehr allgemein. Schlagworte: "input remapping", "clear-on-capture mode", 
"PWM input mode".

http://homepage.cem.itesm.mx/carbajal/Microcontrol...

"PWM Input mode" ist widersprüchlich zum Beipiel:
- "IC1 and IC2 must be configured to be connected together to the PWM 
signal" (passiert im Beispiel nicht)
- "IC1 and IC2 active edges must have opposite polarity" (passiert im 
Beispiel nicht)
- "IC1 or IC2 is selected as trigger input and the slave mode controller 
is configured in reset mode" (passiert im Beispiel)

Autor: No Go (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Geheimnis liegt in der Funktion TIM_PWMIConfig(). Sie konfiguriert 
den anderen Kanal (1 oder 2, nicht 3/4) gleich mit!

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
No Go schrieb:
> Tut mir sehr leid. Hat auf die Fragen aber keinen Einfluss.

Aber vielleicht auf die (fehlenden) Antworten?

Daß du jetzt mit dem 3. Nicknamen in deinem eigenen Thread schreibst, 
kann man nur noch unverschämt nennen.

Autor: unverschämt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hihi, du hast Sorgen :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.