Forum: Mikrocontroller und Digitale Elektronik C -> Modulo Abfrage geht in die Hose


von Peter K. (Gast)


Lesenswert?

Nabend,

was kann bei der Abfrage schief gehen?
1
    if ( TimeOld[0] != rx8564.minute )
2
    {
3
      uint8_t Result = rx8564.minute % 10;
4
      if ( Result == 0 )
5
      {
6
        for ( uint8_t ui = 0 ; ui < 8 ; ui++ )
7
        {
8
          LedArrayShiftUpDown( SHIFT_UP , 18 , 32 );
9
          _delay_ms(150);
10
        }
11
      }
12
      TimeOld[0] = rx8564.minute;
13
    }

Es sind alles 8 Bit Variablen..
Bei rx8564.minute == 20, sollte Result = 0 sein oder sehe ich das 
falsch?

von P. S. (namnyef)


Lesenswert?

Bitte kompletten Code posten. Der Datentyp der Struktur ist völlig 
unbekannt.

von A. S. (Gast)


Lesenswert?

Peter K. schrieb:
> Bei rx8564.minute == 20, sollte Result = 0 sein oder sehe ich das falsch

Nein, ist so. Was ist denn dein Problem?

Ein fehlendes volatile, dass minute konstant erscheinen lässt? Ein 
Schleifenkörper, der nichts tut? Ein interrupt, der Minute nicht erhöht?

von Peter K. (Gast)


Lesenswert?

Also alle Variablen sind uint8.
Die Uhrzeit kommt von einer RTC, auf dem Display sehe ich auch wie sich 
die Minuten ändern.. Er geht nur nicht in die Bedingung rein..

von A. S. (Gast)


Lesenswert?

Peter K. schrieb:
> Er geht nur nicht in die Bedingung rein..

Das liegt aber nicht am Code.

Debugger? Oder eine Led toggeln lassen?

von Teddy (Gast)


Lesenswert?

Die Variable Result brauchst du eigentlich nicht.
Versuch es doch mal so.
if (!(rx8564.minute % 10))
{

}

von Thomas E. (thomase)


Lesenswert?

Teddy schrieb:
> Versuch es doch mal so.
> if (!(rx8564.minute % 10))

Und dann geht das plötzlich?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nö, damit entfällt nur die zusätzliche Variable "result", die man sich 
im Debugger hätte ansehen können.

von Thomas E. (thomase)


Lesenswert?

Rufus Τ. F. schrieb:
> die man sich
> im Debugger hätte ansehen können.

Aber nur, wenn man die Optimierung abschaltet. Dann läuft das ganze 
Programm aber wahrscheinlich nicht mehr vernünftig.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Thomas E. schrieb:
> Dann läuft das ganze Programm aber wahrscheinlich nicht mehr
> vernünftig.

Interessante Sichtweise. Damit wären Debugger also komplett sinnlose 
Werkzeuge?

von Thomas E. (thomase)


Lesenswert?

Rufus Τ. F. schrieb:
> Damit wären Debugger also komplett sinnlose
> Werkzeuge?

Du hast nur keine Ahnung, wie man sie benutzt.

von A. S. (Gast)


Lesenswert?

Thomas E. schrieb:
> Du hast nur keine Ahnung, wie man sie benutzt.

Meine Güte, hier ist ein absoluter Beginner, der vermutlich noch nie 
einen Debugger benutzt hat, der einen völlig sinnfreien Codeausschnitt 
postet, und ihr duelliert euch hier auf Expertenniveau, noch bevor 
irgendwer weiss, wie man dem TO dazu bringen kann,  einfachste 
Informationen zu liefern.

von Hannes J (Gast)


Lesenswert?

Thomas E. schrieb:
> Rufus Τ. F. schrieb:
> Damit wären Debugger also komplett sinnlose
> Werkzeuge?
>
> Du hast nur keine Ahnung, wie man sie benutzt.

Was läuft denn bei dir schief?

von Teo D. (teoderix)


Lesenswert?

Hannes J schrieb:
> Was läuft denn bei dir schief?

Urlaubswoche! Cheffe hat Stress. ;)

von datenpumpe (Gast)


Lesenswert?

Schau dir mal an, was BCD bedeutet, dann weißt du,
warum modulo 10 nicht klappt

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.