Forum: Mikrocontroller und Digitale Elektronik Wertezuweisung an Variable funzt nicht


von Rush .. (rush)


Lesenswert?

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

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Das übliche: volatile?

ansonsten: kompletten Code bitte, soweit vereinfacht, dass der Fehler 
noch auftritt. Alles andere ist Glaskugellesen (und das tut sich am 
Sonntag keiner an)

von Georg G. (df2au)


Lesenswert?

In Funktion "void Glaskugel()" ist ein Fehler in Zeile 42.

(Zeig das ganze Programm oder such allein. So wird das nichts)

von hawk_2k (Gast)


Lesenswert?

sind die globalen variablen, die in interrupts verändert werden, 
volatile?

von Rush .. (rush)


Lesenswert?

Jaja das gute alte volatile....

Danke :-D    Schon lächerlich sich wegen so einer Kleinigkeit so lange 
aufhalten zu lassen :-D

Dankeschön und einen schönen Sonntag wünsche ich.

von leluno (Gast)


Lesenswert?

Rush ... schrieb:
> PORTA = ~128;

Was soll das bewirken?

von Rush .. (rush)


Lesenswert?

Da hatte ich mir nur eine LED anzeigen lassen wenn die Schleife betreten 
wurde. Nach der Schleife hatte ich die LED wieder abgeschaltet, ist hier 
nicht mit dabei gewesen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

leluno schrieb:
> Rush ... schrieb:
>> PORTA = ~128;
> Was soll das bewirken?
Alle Bits bis auf das MSB werden gesetzt.

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
Noch kein Account? Hier anmelden.