Hallo Zusammen, kann der 16Bit Timer 1 des Atmega88 gleichzeitig hochzählen, wenn er nicht zurück gesetzt wird einen Interrupt auslöst aber auch über den ICP ein PPM Signal einlesen? Vielen Dank. Gruß Steffen
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 | }
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.