Forum: Mikrocontroller und Digitale Elektronik Fehler im Betrieb


von cap (Gast)


Lesenswert?

Hallo,

ich muß gleich vorweg sagen, dass ich beim Programmieren der Controller 
nicht sehr erfahren bin. Dies ist eines meiner ersten Projekte.
Der Controller soll als Stundenzähler für eine Heizkanone dienen. 
Mittels Schlüsselschalter können die einzelen Benutzer die Heizung 
einschalten und die Betriebsstunden werden pro Person gezählt. Werden 
zwei Schlüssel gedreht, wird die Zeit entsprechend gerechnet. Werden 
drei Schlüssel gedreht, läuft die Zeit auf ein gemeinschafts Konto. 
Soweit läuft die ganze Sache auch ganz gut. Folgendes Problem tritt erst 
nach einigen Stunden auf.
Es werden falsche Werte berechnet, angezeigt und in den Speicher 
geschrieben.
z.B: spring der Minutenzähler auf werte über 60, oder die Anzeige im 
Display verschiebt sich.

Vielleicht hat jemand einen Tip für mich, ich weiß jedenfalls nicht mehr 
weiter.

Mfg
Martin

: Verschoben durch User
von Vilex (Gast)


Lesenswert?

check mal codezeile 42!!!

von Uwe (Gast)


Lesenswert?

> Fehler im Betrieb
Ist der Fehler weg wenn du es nicht betreibst ?

von 123 (Gast)


Lesenswert?

Falsches forum.
Oder willst du es hier veröffentlichen?

von cap (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

Zeile 42? uint16_t Stunden5_ee EEMEM;?

Der Fehler tritt glaube ich auch auf wenn keiner der Schlüsser 
eingeschalten ist. Werd ich aber gleich noch mal cheken.

Mfg
Martin

von Mike (Gast)


Lesenswert?

cap schrieb:
> z.B: spring der Minutenzähler auf werte über 60

Das solltest du vermeiden, indem du schon in dem Moment, wo er auf 60 
schaltet, ihn automatisch auf 00 zurücksetzt und dafür den Stundenzähler 
um eins erhöhst. In der Fachsprache heißt das "Übertrag".

von cap (Gast)


Lesenswert?

Hab ich das nicht?

 if (Minuten1 > 59)
      {
        Stunden1 = Stunden1 + 1;
        Minuten1 = 0;
        if ((Stunden1 > 0) && (Stunden1 < 999))
        {
         eeprom_write_word(&Stunden1_ee,eeprom_read_word(&Stunden1_ee) + 
1 );
        }
      }

von holger (Gast)


Lesenswert?

Bei dem Programm das du gepostet hast wird kein Fehler auftreten.
Da kommt gar nicht erst durch den Compiler;)

int tast0, tast1, tast2, tast2, tast3, tast4, tast5, tast6, tast7;
                  ^^^^^  ^^^^^
                  |||||  |||||

von cap (Gast)


Lesenswert?

Hi,

du recht, dass ist ein fehler. Der Compiler mekert aber nicht. AVR 
Studio 4.19 Build 730

von ho (Gast)


Lesenswert?

if (Minuten_gesamt > 60)

von ho (Gast)


Angehängte Dateien:

Lesenswert?

Wenn man Code mit copy und 6x paste erstellt, dann kann man sich auch 
überlegen, ob eine Schleife sinnvoll ist.
Hier einmal ein erster Ansatz.
Stichworte: Array (Feld, Datenfeld), For-Schleife

von Flohzirkus (Gast)


Lesenswert?

cap schrieb:
> Hab ich das nicht?
1
 
2
  if (Minuten1 > 59)
3
       {
4
         Stunden1 = Stunden1 + 1;
5
         Minuten1 = 0;
6
         if ((Stunden1 > 0) && (Stunden1 < 999))
7
         {
8
          eeprom_write_word(&Stunden1_ee,eeprom_read_word(&Stunden1_ee) +  1 );
9
         }
10
       }

Auf jeden Fall nicht im EEPROM.

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.