Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Bascom 2.0.5.0][ATMEGA8] Zegar RTC-zmienna textowa TIME$ nie ulega zmianie

bipolunipol 03 Wrz 2012 00:52 1386 4
  • #1 03 Wrz 2012 00:52
    bipolunipol
    Poziom 19  

    Witam.
    Stworzyłem na mikrokontrolerze ATMEGA8 zegar RTC. Do procesora został podpięty kwarc zegarkowy - timer2 pracuje w trybie asynchronicznym.
    Program powstał z wykorzystaniem instrukcji BASCOMOWEJ Config Clock = soft:

    Kod:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod




    Zauważyłem, że zmienna Time$ się nie zmienia, w przeciwieństwie do zmiennych _sec,
    _min , _hour
    które są odpowiednio inkrementowane (np. zmienna sec zwiększa prawidłowo swą wartość co sekundę). Dlaczego tak jest - przecież są ze sobą powiązane?
    Zmiana ręczna tych zmiennych bajtowych (_sec, _min i _hour) nie powoduje także zmiany czasu w time$ i na odwrót - ustawiam zmienną time np. na "00:01:03" - a w zmiennych bajtowych wartości nie ulegają zmianie. Dlaczego?

    Bowiem według pomocy BASCOM:
    Cytat:

    "Jeśli w programie użyto instrukcji CONFIG CLOCK, kompilator automatycznie generuje specjalne zmienne nazwane: _sec , _min , _hour, _day , _month , _year.
    W ten sam sposób są definiowane specjalne zmienne TIME$ oraz DATE$. Jest w nich pamiętany zliczany czas i data, w postaci tekstowej. Zobacz opis TIME$ oraz DATE$ by poznać więcej szczegółów.
    Zmienne _sec, _min i inne definiowane przez tą instrukcje, mogą być odczytywane i modyfikowane przez program. Oczywiście zmiana jednej z nich powoduje także zmianę zmiennych specjalnych DATE$ i TIME$.

    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005"

    0 4
  • #2 09 Wrz 2012 20:19
    cyberdar
    Poziom 31  

    Witam

    Przedstawiony zapis powoduje ustawienie zegara i "datownika" na wartości w tejże instrukcji czyli spowodowałeś, że zegar został ustawiony na 14:33:00 a datę na 01/01/2012. Jeśli chciałbyś widzieć zmiany używając tej dyrektywy to napisz:

    Code:

    Lcd Date$ ; "  " ; Time$                                 


    lub

    Code:

    Lcd _hour ; _min ; _sec                                 


    przy czym nie jestem teraz pewien ale, żeby czas był wyświetlany prawidłowo to należałoby go sformatować do odpowiedniej postaci.

    --
    pozdrawiam

    0
  • #3 09 Wrz 2012 22:23
    bipolunipol
    Poziom 19  

    cyberdar napisał:
    lub

    Kod:

    Lcd _hour ; _min ; _sec


    Tylko te zmienne mają mimo nastawienia wcześniejszej wartości zegara na 14:33:00 i daty na 01/01/2012 wartość 0, 0 i 0. W trakcie pracy zegara zmieniają już swą wartość, jednak tekstowa wcześniej ustawiona się nie zmienia.

    0
  • #5 10 Wrz 2012 23:09
    bipolunipol
    Poziom 19  

    piotrva napisał:
    Sprawdzałeś na starszej wersji BASCOM'a?

    Nie, sprawdzę.
    Ogólnie Bascomowe kompilatory zawierają dużo błędów... (wynika to z moich obserwacji).

    0