STM32 TIM_ICPolarity nachträglich ermitteln?

Gast #3888409
Lesenswert?
• ▲
▼
Timer Input capture kann m.W. auf "TIM_ICPolarity_Rising", 
"TIM_ICPolarity_Falling", "TIM_ICPolarity_BothEdge" eingestellt werden. 
Ist es bei "TIM_ICPolarity_BothEdge" möglich, im Interrupt 
herauszufinden, welche Flanke ihn ausgelöst hat? Gibt es evtl. ein 
Zwischenregister oder bleibt nur, den Pinstatus einzulesen?
(Firma: matzetronics) #3888495
Lesenswert?
• ▲
▼
Hans schrieb:
> Es ist zwar unwahrscheinlich anders, aber: man kann nicht sicher sein,
> dass der eingelesene Zustand der auslösenden Flanke entspricht.

Wie meinst du das? In der o.a. Sensorplausibilitätsprüfung klappt das 
immer, denn die Flanke hat ja auf jeden Fall den Interrupt ausgelöst, 
muss also da gewesen sein.
Der STM32F100 jedenfalls findet daran nichts ungewöhnlich:
1
// es gibt noch 2 andere IRQ Lines, hier mal nur eine
2
void EXTI0_IRQHandler(void)
3
{
4
  if(EXTI_GetITStatus(HALL1_EXTI_LINE) != RESET)
5
  {
6
    /* Clear the EXTI line pending bit */
7
    EXTI_ClearITPendingBit(HALL1_EXTI_LINE);
8
     HallIRQ();
9
  }
10
}
11
// hier werden Events aller 3 Sensoren behandelt
12
void HallIRQ() {
13
  EXTI_ClearFlag(EXTI_Line0 | EXTI_Line1 | EXTI_Line2);
14
volatile uint16_t hall = GetHall();
15
    // spurious trap - this routine should only be fired if we have a
16
    // valid sensor change
17
if (lastHall != hall ) {
18
// hier passieren motorspezifische Dinge
19
}
20
// und hier das nochmalige Abfragen der IRQ Lines
21
uint16_t GetHall(void) {
22
volatile uint16_t hall;
23
        hall = HALL_GPIO_PORT->IDR & HALLMASK;
24
// wieder die tollen Dinge meiner Motorcontrol
25
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.