mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 IC mit DMA


Autor: Bert S. (kautschuck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe bereits Input Capture mit Interrupts erfolgreich programmiert 
und will nun IC mit dem DMA auf einem STM32F405 probieren. Nun kann ich 
mit folgender HAL Funktion beginnen, welche mir die Periode gibt, wenn 
ich Sample[i+1]-Sample[i] subtrahiere:

HAL_TIM_IC_Start_DMA(tim1,TIM_CHANNEL_4,ic_buf,IC_BUF_SIZE);

Jedoch brauche ich ja wie bei der Interrupt Methode die Periodendauer, 
als auch den Duty. Doch wie bekomme ich nun den Duty Cycle mit dem DMA, 
wenn ich wie oben das ganze in einen Buffer lese?

: Bearbeitet durch User
Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Handler tim1 für den jeweiligen Timer wird ganz normal 
initialisiert,
oder wie meinst du das?

Autor: Bert S. (kautschuck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Der Handler tim1 für den jeweiligen Timer wird ganz normal
> initialisiert,
> oder wie meinst du das?

Das schon, aber ich habe Probleme die Periode und den Duty Cycle des PWM 
input Signals zu rekonstruieren.

Ich habe nun raus gefunden, dass ich auf rising und falling edge 
triggern kann und so diese Punkte mit dem DMA in einen Buffer einlesen 
kann. Nun weiss ich aber nicht wirklich, ob die eingelesenen Punkte nun 
für die rising oder die falling edge waren und somit ist unter Umständen 
der berechnete Duty Cycle gerade 1-Duty Cycle.

Autor: Darth Moan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

nimm doch 2 CCR. Die Input Filter & Edge Detection hat 2 Ausgänge.
Den einen auf IC1 den anderen auf IC2. Dann braucht es zwar 2 DMA
Kanäle, aber einer kriegt immer die steigende Flanke und der andere
immer die Fallende.
Ich hab das allerding bisher nur beim F746 gemacht, wo ich zwei Pulse
ausmessen muss, in Länge und Lage zueinander -> 2 Eingangspins auf 4
IC mit 4 DMA Kanäle. Muss man allerdings vorher checken, ob die Kanäle
nicht anderweitig gebraucht werden.
Aber im F4xx Ref Man sehen die Timer eigentlich ziemlich genauso aus.

Autor: Bert S. (kautschuck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Darth Moan schrieb:
> Moin,
>
> nimm doch 2 CCR. Die Input Filter & Edge Detection hat 2 Ausgänge.
> Den einen auf IC1 den anderen auf IC2. Dann braucht es zwar 2 DMA
> Kanäle, aber einer kriegt immer die steigende Flanke und der andere
> immer die Fallende.
> Ich hab das allerding bisher nur beim F746 gemacht, wo ich zwei Pulse
> ausmessen muss, in Länge und Lage zueinander -> 2 Eingangspins auf 4
> IC mit 4 DMA Kanäle. Muss man allerdings vorher checken, ob die Kanäle
> nicht anderweitig gebraucht werden.
> Aber im F4xx Ref Man sehen die Timer eigentlich ziemlich genauso aus.

Ok, danke, ich denke das ist genau das was ich machen sollte.

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.

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