logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][BASCOM] RC5 i temperatura w zegarze cyfrowym

nunch 16 Lis 2011 01:52 2334 7
  • #1 10143970
    nunch
    Poziom 12  
    Zegarek oprócz funkcji wyświetlania czasu ma pokazywać temperaturę i mieć możliwość sterowania z pilota (RC5).
    Tutaj pierwsze pytanie, czy GETRC5() wprowadza jakieś opóźnienia? Mam na myśli to czy nie zakłóci to zliczania czasu. Dodatkowo obawiam się, że będzie problem z płynnym sterowaniem, a to dlatego, że nie jest podłączony pod INT0 albo INT1[Port D zajęty pod wyświetlacz] i kiedy naciśniemy np. w czasie wykonywania przerwania.. nie zareaguje?
    Timery oba wykorzystane. Timer0 głównie obsługa wyświetlaczy (przerwanie 4ms), Timer1 zliczanie czasu (przerwanie 250ms)

    Dwa to odczyt temperatury na DS18B20.
    Mam tu przykładowy skrypt:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Głównie interesuje mnie to "Waitms 750", bo zegar będzie do.. niczego :D
    Będzie działać poprawnie jeśli cały ten kod umieszczę w kodzie wyrażenia warunkowego gdzie warunek będzie spełniany co 750ms?

    Trochę się pogubiłem, bo poprzednio też miałem problemy w ustawianie czasu przez przyciski, których obsługa znajduje się w przerwaniu(nie zawsze reagowały). Czy w ogóle w takim układzie jest sens dawać odbiornik RC5 i DS18.. pod piny bez przerwań?

    Załączam schemat.
    [Atmega8][BASCOM] RC5 i temperatura w zegarze cyfrowym
    Pozdrawiam
  • Pomocny post
    #2 10144057
    Konto nie istnieje
    Poziom 1  
  • #3 10145883
    xury
    Specjalista automatyka domowa
    nunch napisał:
    Głównie interesuje mnie to "Waitms 750", bo zegar będzie do.. niczego
    Będzie działać poprawnie jeśli cały ten kod umieszczę w kodzie wyrażenia warunkowego gdzie warunek będzie spełniany co 750ms?

    Do tego właśnie można wykorzystać timer i zapomnieć raz na zawsze o wait.
    nunch napisał:
    Czy w ogóle w takim układzie jest sens dawać odbiornik RC5 i DS18.. pod piny bez przerwań?

    RC5 można dać pod przerwanie, ale po co 1wire ?
  • #4 10147487
    nunch
    Poziom 12  
    emarcus napisał:
    więc potrzebujesz skonfigurować Timer2 dla RC5.

    Na timer2 działa OK. O to mi chodziło. Wielkie dzięki
    xury napisał:
    (...) ale po co 1wire ?

    Co masz na myśli?
  • #5 10149747
    nunch
    Poziom 12  
    Czy można przez konwersję BCD wyciągnąć znak (temperatura dodatnia/ ujemna)
    Wynik zczytywany jest do zmiennej Integer(nie Single, żeby od razu odciąć część ułamkową) dalej poprzez BCD uzyskuję liczbę dziesiątek i jedności.
    Wszystko działa tylko jeśli temperatura spadnie poniżej 0, zaczyna liczyć od końca.
    W jaki sposób można oddzielić znak "-" ze zmiennej Integer? Jeśli nie uda się tego zrobić, trzeba będzie zablokować wyświetlacz dla temperatur < 0.
  • #6 10151562
    Konto nie istnieje
    Poziom 1  
  • #7 10158420
    nunch
    Poziom 12  
    Powiem szczerze, że mam trudności w zrozumieniu tego.
    Próbowałem kombinować na różne sposoby, ale nie dojdę do tego bez pewnych informacji. Szukałem ich w internecie, ale nie znalazłem nic bezpośrednio z tym związanego. Nawet w polskim helpie Bascoma nie mogłem doszukać się pewnych informacji np. co to jest Overlay

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Jeśli już wspomniałem, o tym Overlay to w jaki sposób koordynuje ona ze zmienną Temp? Sama nazwa oznacza nakładkę, więc można wnioskować, że jakaś część Scratchpada będzie do niej automatycznie przypisywana?
    Cytat:
    ' Tu musisz odczytać scratchpad.

    Czyli samo to wystarczy? Trzeba jeszcze przesuwać jakieś bity poprzez Shift? :
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Ale co pozostawić w nawiasach? Bo z tego co widzę jeden bit zostanie przypisany do 9 elementu Scratchpada?
    A z tego co mi się wydaje to zapis powinien dotyczyć całej tablicy?
  • #8 10158837
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA