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

Gotronika: Termometr DS, zegar RTC PCF8583, wyświetlacz LCD i LED - synchronizacja wyświetlania

thexaw 23 Lis 2021 11:48 531 4
  • #1 19725025
    thexaw
    Poziom 10  
    Witam. Pracuję na uniwersalnej płytce Gotronika. Bazując na książce i internecie postanowiłem zrobić sobie termometr z zegarem RTC. Sam termometr pracuje poprawnie, wyświetla temperatury z dwóch czujników DS, w dwóch liniach na LCD. Potem dorobiłem do tego zegar RTC oparty na wbudowanym w płytkę PCF8583. Sam zegar, z pominięciem daty również wyświetla prawidłowo. Kolejnym krokiem było umieszczenie temperatury na LCD a zegara na poczwórnym, 7-segmentowym wyświetlaczu LED. Sam zegar na LED również pracuje prawidłowo, problem pojawia się w momencie dorzucenia czegokolwiek na LCD. W ramach testów chciałem na początek wyświetlić czas na LCD i LED równocześnie, jednak wyświetlenie czegokolwiek na LCD zajmuje "tyle" czasu, że wyświetlacz LED zaczyna "migać", za wolno się odświeża i wyświetla cyfry jedna po drugiej (pierwsza gaśnie, zapala się druga, druga gaśnie, zapala trzecia itd.). Na próbę wysyłałem na LED zwykłe napisy i im dłuższy napis, tym wolniejsze odświeżanie. Jeśli dołożyć do tego odczyt temperatury, to LED jest w ogólnie nie do odczytu, bo z tego co wszędzie widziałem, DS musi mieć na końcu "wait 1", co już absolutnie pauzuje LED.
    Czy możliwe jest w ogóle wyświetlanie na LCD i LED równocześnie? Może to tylko błędy w programie. Nie mam programowania w jednym palcu, więc...
    Poniżej powycinany do minimum listing samego zegara, zapewne sporo bałaganu, ale na razie wszystko "w trakcie".

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #2 19725579
    mpier
    Poziom 29  
    Z bascomem nie pomogę, ale zasady pewnie są podobne. Przenieś multipleksowanie wyświetlacza do przerwania timera.
  • #3 19725667
    miroskop
    Poziom 23  
    thexaw napisał:
    DS musi mieć na końcu "wait 1"

    Z tego co pamiętam to czas pomiędzy zapytaniem czujnika a odpowiedzią ma wynosić co najmniej 750ms ale nie rób tego na instrukcji "Wait" ale w przerwaniu. Ja to robię tak, że w jednym przerwaniu (np. co sekundę) najpierw odbieram dane z DS-a, wykonuję obliczenia temperatury i od razu wysyłam do czujnika "zapytanie". W następnym przerwaniu DS jest gotowy na odbiór :) Możesz do tego wykorzystać "tyknięcia" do multipleksowania LED. Wprowadzasz zmienną która zlicza te tyknięcia i gdy minie 1 sekunda to zerujesz zmienną i skaczesz do obsługi DS-a.
    Obsługę zegara RTC też proponuję wyrzucić z pętli głównej i obsługiwać w przerwaniu, bo teraz procesor non-stop zajmuje się zegarem i wyświetlaczem.
  • #4 19725779
    bart-projects
    Poziom 29  
    Oczywiście można jednocześnie multipleksować wyświetlacze 7segment, obsługiwać RTC i LCD oraz Dallasy, lepiej jednak zamieść jakiś obszerniejszy kod to będzie można dobrać optymalną metodę. Teraz nie wiadomo czy Dallasy obsługujesz każdy na osobnym pinie czy obydwa na jednym.

    Po wyświetlaczach LCD opłaca się "pisać" tylko jak coś się zmieniło. Inaczej to strata czasu. Warto więc dodać zmienną pamiętającą ostatni pomiar.

    Zupełnie bezsensownie zerujesz bity 0-3
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod

    Po pierwsze wystarczyłoby "Godzinyd = Godziny And &B1111_0000" ale i to nie ma sensu bo przy przesunięciu w prawo o cztery te bity i tak wypadają hahahaha :D

    Ten zegarek możesz łatwo zintegrować z Bascomowymi funkcjami Datetime kodami z tej biblioteki ->Link
  • #5 19729893
    kots
    Poziom 12  
    "Czy możliwe jest w ogóle wyświetlanie na LCD i LED równocześnie? Może to tylko błędy w programie."

    Standardowe LCD mają wewnętrzną obsługę wyświetlania, wysyła się do nich tylko dane konfiguracyjne i dane do wyświetlenia, co zajmuje znikomy czas i przy poprawnie skonstruowanym programie nie ma znaczenia. Z załączonego kodu nie widać jak obsługiwany jest wyświtlacz LED, czy to jest obsługiwane przez AVR, czy przez zegar, statycznie czy dynamicznie?

    jedna z moich konstrukcji obsługiwała 30 DS1820 na jednej linii z możliwością przeglądania na LCD, do tego transmisja i działało bez mrugania.
REKLAMA