Atmega88 Timer und ICP

#3096803
Lesenswert?

Später soll das mal einen BLDC Regler geben. Der Timer 1 ist sowohl für 
die Start Kommutierung, bei verlorem gegangenem BEMF und des ICP 
zuständig. Ich habe eine ISR zum TIMER1_OVF_vect. Der Wert des TCNT1 
wird jedes mal nach einer erfolgreichen Kommutierung in einer Switch 
Case Anweisung auf 1 gesetzt. Sollte das mal nicht der Fall sein kommt 
es ja zu einem Overflow und der Timer löst einen Interrupt aus. Die ISR 
zum TIMER1_CAPT_vect wertet mir das PPM Signal von der Fernsteuerung 
aus. Können die verschiedenen ISR sich ins gehege kommen? Hängt doch 
beides mit dem Timer 1 zusammen.

Danke. Gruß Steffen

1
ISR (TIMER1_OVF_vect)
2
{  
3
  next_commutate_state (1);
4
  rotor_run = 0;
5
  OCR2A = START_PWM;
6
  OCR2B = START_PWM;
7
  OCR0B = START_PWM;
8
}
9

10

11
ISR (TIMER1_CAPT_vect)
12
{
13
  if (flanke==0) {
14
    flankeStart = ICR1;
15
    TCCR1B &= ~(1<<ICES1); // fallende Flanke zur Auswertung des ICP
16
    flanke = 1;
17
  }
18
  else {
19
    rx_pwm = ICR1 - flankeStart;
20
    flanke = 0;
21
    TCCR1B |= (1<<ICES1); // steigende Flanke zur Auswertung des ICP
22
  }
23
  TIFR1 = (1<<ICF1);
24
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren