waldek454_33 napisał: Witam,
Mam pytanie bardziej teoretyczne. Czy lepiej dla procesora przy każdej sekundzie dzielić i przeliczać na minuty i godziny czy kontrolować zwiększanie licznika sekund i jak będzie 60 sekunda to zerować sekundy a zwiększać minuty i analogicznie dla godzin?
Napisz o jaką konkretnie sytuację chodzi. Bo tylko w bardzo szczególnych przypadkach to o co pytasz ma znaczenie. W 99,99% przypadków zrób tak jak ci wygodniej. Teoretycznie trzymanie czasu w postaci hh:mm:ss jest szybsze, ale nie zawsze - np. liczenie różnicy dwóch czasów w tym formacie jest dosyć koszmarne (a jak jeszcze dojdą daty to w ogóle jest źle). Podobnie przy zasilaniu bateryjnym i wykorzystywaniu trybów uśpienia procka efektywniejsze jest wykorzystanie licznika 16/32 bitowego i konwersja, niż ciągłe budzenie MCU. Z drugiej strony jeśli to tylko prosty zegarek to można liczyć od razu w BCD z rozbiciem na hh, mm i ss.
PS1. Nie każdy AVR ma sprzętowe mnożenie.
PS2. Operacje na słowach i podwójnych słowach są w 99% przypadków rozbijane na podoperacje bajtowe - istnienie instrukcji ADIW/SBIW niewiele wnosi. Z drugiej strony dla porównania np. dodawanie 8 i 16-bitowe to kwestia 1 cyklu vs. 2 cykle. Oczywiście dla operacji np. mnożenia, czy dzielenia jest gorzej, ale też bez przesady.