Hallo alle Zusammen...
ich hoffe ihr könnt mir helfen. Erstmal ein Codeausschnitt:
1 | while (seconds)
|
2 | {
|
3 | PORTA = ~128;
|
4 | while(!f_first_pulse)
|
5 | {
|
6 | if (pulse_time)
|
7 | {
|
8 | min_pulse = pulse_time;
|
9 | max_pulse = pulse_time;
|
10 | f_first_pulse = 1; // Der Wert wird hier nicht gesetzt
|
11 | }
|
12 | }
|
13 |
|
14 | if (pulse_time > max_pulse) max_pulse = pulse_time;
|
15 | if (pulse_time < min_pulse) min_pulse = pulse_time;
|
16 | mid_pulse = ((max_pulse - min_pulse) / 2) + min_pulse;
|
17 |
|
18 | eeprom_write_byte(&eeInit, 1); // flag das Erstkalibierung durchgeführt wurde
|
19 | }
|
Aus irgendeinem Grund wird die Variable "f_first_pulse" nicht bzw. nach
Lust und Laune geschrieben. Wenn die if-Bedingung erfüllt ist, werden
dei Werte für "min_pulse" und "max_pulse" zugewiesen. Aber
"f_first_pulse" bleibt unverändert.
seconds wird im Timer Overflow Interrupt runtergezählt und pulstime wird
mit INT0 und einem zweiten Timer ermittelt.
Ich bekomme langsam die Kriese mit dem Kram...
Achso, noch ein paar Daten:
ATmega32
Atmel Studio 6.2
AVRdragon