Hallo,
ich möchte gerne ein PWM Signal 50kHZ 1-2ms mit einem ATMega32 auslesen.
Mein Programm ist meiner Meinung nach ok, ich zweifle eher daran, wie
ich den RC-Empfänger an den ATMega angeschlossen habe.
Der Empfänger und der Atmega werden von verschiedenen Spannungsquellen
betrieben. Jetzt habe ich GND des Empfängers mit GND des Controllers
verbunden. Das PWM Signal habe ich an PD6 (ICP PIN) gelegt, um die Input
Capture Funktion von Timer 1 nutzen zu können.
Das rote Kabel (Plus) ist nicht weiter verbunden, hat also keine
Verbindung zum Controller.
Ist das soweit einigermaßen richtig?
Hier nocheinmal der wesentliche Teil meines Programms. Bei mir tritt
leider immer ein Overflow ein und die entsprechende LED auf meiner
Platine leuchtet auf.
1 | void PWM_read_start()
|
2 | {
|
3 | TCCR1B |= (1 << ICNC1); //Rauschunterdrückung
|
4 | TCCR1B |= (1 << ICES1); //Steigende Flanke
|
5 | TCCR1B |= (1 << CS12); //256 Prescaler
|
6 | TIMSK |= (1 << TICIE1); //Input Capture Event aktivieren
|
7 | TIMSK |= (1 << TOIE1); //Overflow aktivieren
|
8 | }
|
9 |
|
10 | double get_timer()
|
11 | {
|
12 | time_difference = (timer2 - timer1)/312; //um in ms umzurechnen
|
13 | return time_difference;
|
14 | }
|
15 |
|
16 | //////////////////////////////////////////////////////////////////////////
|
17 | ISR (TIMER1_OVF_vect)
|
18 | {
|
19 | overflow_timer1 = 1; //schaltet später einen LED an
|
20 | }
|
21 |
|
22 | ISR (TIMER1_CAPT_vect)
|
23 | {
|
24 | if(counting)
|
25 | {
|
26 | TIFR |= (1 << ICF1); //Flag löschen
|
27 | TCCR1B &= ~(1 << ICES1); //Fallende Flanke
|
28 | timer1 = ICR1;
|
29 | overflow_timer1 = 0; //Led würde dann später wieder ausgeschaltet werden
|
30 | counting = 0;
|
31 | }
|
32 | else
|
33 | {
|
34 | TIFR |= (1 << ICF1); //Flag löschen
|
35 | TCCR1B |= (1 << ICES1); //Fallende Flanke
|
36 | timer2 = ICR1;
|
37 | overflow_timer1 = 0;
|
38 | counting = 1;
|
39 |
|
40 | }
|
41 |
|
42 |
|
43 | }
|
Wie gesagt, das Programm würde ich als ok bewerten, bin mir aber nicht
sicher.
Hoffentlich gibt es eine einfache Lösung und ich stolper einfach nicht
drüber.
Viele Grüße