Forum: Mikrocontroller und Digitale Elektronik Attiny 2313 Uhr zählt zu schnell


von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo miteinander,
mein ziel ist es eine Uhrfunktion zu implementieren und die uhrzeit auf 
ein display anzuzeigen. Der Algorithmus für die Uhr funktioniert, aber 
leider zu schnell.
Ablauf:
-Die Uhrzeit wird in einem dreistelligen array mit Startwert 
initialisiert
-Timer 0 (8Bit) wird gestartet und bei Overflow wird eine Variable 
(tick) hochgezählt
-Sobald die Variable tick einen bestimmten Wert erreicht hat wird zur 
Uhrzeit eine Sekunde addiert. Bei 8Mhz (externes Quarz) und 8Bit Timer 
müsste die Sekunde, nach 31250 Oerflows erreicht sein. Aber sobald ich 
den Controller flashe rast mir die Zeit auf dem Display davon, egal 
welchen Wert ich für die Overflows angebe.
Bitte schaut mal über den Code im Anhang. Da kann nur ein riesen 
Denkfehler von mir drin sein!

von Nico (nico123)


Lesenswert?

Ohne mir deinen Code anzusehen, hast Du deinem Compiler deine 
Taktfrequenz mitgeteilt? Und sind die Fuses richtig eingestellt?

von c.m. (Gast)


Lesenswert?

müsste tick nicht volatile sein?

von Simon B. (nomis)


Lesenswert?

Klaus schrieb:
> Bitte schaut mal über den Code im Anhang. Da kann nur ein riesen
> Denkfehler von mir drin sein!

Eher ein klassischer Programmierfehler:
1
    if(tick=31250)

Das ist immer wahr.

Viele Grüße,
        Simon

von Klaus (Gast)


Lesenswert?

Vielen Dank. Peinlich Peinlich. Jetzt läufts.

von c.m. (Gast)


Lesenswert?

find ich nicht peinlich - ist ein fahler den man schnell mal machen kann 
und mir ists beim drüberschauen auch nicht aufgefallen (peinlich! ;)

ich hab mir unter java angewöhnt vergleiche umzustellen, also (1234 = 
var), da gibts bei einer zuweisung einen compilerfehler.

von troll (Gast)


Lesenswert?

Sowas passiert wenn man Compilerwarnungen ignoriert. Der GCC sagt da 
sowas wie "suggest parenthesis around assignment used as truth value" 
oder so.

von g457 (Gast)


Lesenswert?

> Sowas passiert wenn man Compilerwarnungen ignoriert.

Ich bin ja schon länger dafür, -Wall, -Wextra, -Wpedantic und -Werror 
per Default anzustellen.. ;-)

von Ingo (Gast)


Lesenswert?

...und den Optimizer auf -Os sowie einen Button "Flashen". Start without 
debugging funktioniert auf meinem aktuellen AS6 zumindest nicht.


Ingo

von troll (Gast)


Lesenswert?

g457 schrieb:
>> Sowas passiert wenn man Compilerwarnungen ignoriert.
>
> Ich bin ja schon länger dafür, -Wall, -Wextra, -Wpedantic und -Werror
> per Default anzustellen.. ;-)
Also die ersten beiden auf jeden Fall. Wpedantic kenne ich nicht und 
Werror ist mir zu nervig wenn beim Debuggen (mein Debugger heisst 
printf...) mal eine Variable nicht genutzt wird oder so.

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.