Forum: Mikrocontroller und Digitale Elektronik STM32 Input Capture reagoert nicht auf Flanke..


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hans M. (mister)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Bin seit einiger Zeit dabei einen Input Capture zu programmieren. Leider
stimmt etwas bei meiner Definition nicht, da es die Flanke nicht
erkennt. Das Eingangssignal ist ein Rechtecksignal mit der Frequenz von
50Hz. Dies ist vorhanden und auch am richtigen Pin (mehrmals
kontrolliert).
Könntet Ihr meine Definition anschauen und mir helfen dies lauffähig zu
kriegen??

Hier ist Noch der Code:
  // TIM4 for phase detector: input capture on pin 60 PD13 TIM4_CH2
       // TIM4 I/O are remapped to pins PD12-5 , refer to RM0008 p 157,
173, 180
        AFIO->MAPR |= AFIO_MAPR_TIM4_REMAP;
        // TIM4_CR1 control register 1: direction upcounter -> DIR = 0
default, counter enable CEN = 1 done at end of configuration
        // TIM4_CR2 control register 2: default
        // TIM4_SMCR slave mode control register: SMS = 000 default,
slave mode disabled -> TIM4 clocked by internal clock
        // TIM4_DIER DMA/int enable register: CCP2IE = 1 cap/com int
enable in isr
        // TIM4_SR status register: CC2IF = 0 clear cap/com int flag in
isr
        // TIM4_EGR event generation register:
        // TIM4_CCMR1 cap/com mode register 1: IC2F = 0010 input filter
4 clocks,
        // IC2PSC = 00 default no input cap prescaler, CC2S = 01 CC2 is
input and IC2 mapped to TI2,
        TIM4->CCMR1 |= ( TIM_CCMR1_IC2F_1 | TIM_CCMR1_CC2S_1 );
        // TIM4_CCMR2 cap/com mode register 2:
        // TIM4_CCER cap/com enable register: CC2P = 1: polarity falling
edge, CC2E = 1 cap/comp enable in ISR
        TIM4->CCER |= TIM_CCER_CC2P;
        // TIM4_CNT counter value:
        // TIM4_PSC prescaler: PSC = 0x0000 -> 1:1 prescaler
        TIM4->PSC = (uint16_t)0x0000;
        // TIM4_ARR auto reload register =0xffff for up counting from 0
to ffff (must be set!=0 otherwise the timer is blocked)
        TIM4->ARR = (uint16_t)0xFFFF;
        // TIM4_CCR1-4 capture compare register:
        // TIM4_DCR DMA control register:
        // TIM4_DMAR DMA address for full transfer
        TIM4->CR1 |= TIM_CR1_CEN; // counter enable

Danke schon mal im voraus.
Gruss

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Hans Müller schrieb:
> Hier ist Noch der Code:

Das ist kein Code.
Sei nicht so faul und lies die Postingregeln.

Und poste Code so, daß er compilierbar ist (komplette Funktion, alle 
nötigen Deklarationen, Defines, standard Includes).

von Hans Müller (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort, dass ich zu wenig gepostet habe. Da es viel zu 
lange gehen würde alles zu posten vergesse ich am besten hier hilfe zu 
kriegen da keiner noch den überblick hätte

von Frank M. (ukw) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hans Müller schrieb:
> Da es viel zu lange gehen würde alles zu posten [...]

Wie wäre es, Deinen Code auf ein minimales main() abzuspecken, wo Dein 
Problem reproduzierbar ist?

> vergesse ich am besten hier hilfe zu
> kriegen da keiner noch den überblick hätte

Es hat keiner gesagt, dass Du hier alles reinklatschen sollst.

Und noch ein Tipp: Wenn Du den Code in
[c]
   hier Dein Code
[/c]

einschließt, dann ist er auch lesbar und es entstehen keine hässlichen 
Umbrüche.

: Bearbeitet durch Moderator

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.