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

BASCOM - Cztery wyświetlacze 7-segmentowe i DS18B20 - migotanie

rekinisko 01 Cze 2016 23:52 1506 17
  • #1 15714909
    rekinisko
    Poziom 22  
    Witam.
    Spłodziłem termometr na czterech wyświetlaczach 7-segmentowych. Obsługa wyświetlaczy odbywa się w przerwaniu i działa poprawnie. Problemy zaczynają się gdy w grę wchodzi wysyłanie komend do DS-a i odbieranie ich. Na czas komunikacji z DS-em wyłączam timer odpowiedzialny za multipleksowanie by nie wnosił błędów przy wysyłaniu i odbieraniu danych. Zabiera to sporo czasu i w tym momencie widać drobne mignięcie jednego z wyświetlaczy. Nie wiem czy obrałem dobrą koncepcję.
  • Pomocny post
    #2 15714984
    lukasixthm
    Poziom 23  
    Przydał by się kod programu...
    Jeżeli wyłączasz timer to po jego ponownym włączeniu zaczynasz pewnie liczyć od 0 pomimo, że nie udało się doliczyć do potrzebnej wartości licznika. Ale to tylko przypuszczenia...
  • Pomocny post
    #3 15715424
    Konto nie istnieje
    Konto nie istnieje  
  • #4 15715603
    rekinisko
    Poziom 22  
    Kod to nie tajemnica :)

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Generalnie bez wyłączania timera wszystko lata bez problemu ale DS czasami wywala bzdury. Czy nie prościej wstawić by było tylko sprawdzanie CRC? Tylko nie wiem jak to zrobić.
  • Pomocny post
    #5 15715722
    Konto nie istnieje
    Konto nie istnieje  
  • #6 15715808
    rekinisko
    Poziom 22  
    Wyświetla błąd i nie przyjmuje parametru. Czyżby inna wersja bascoma?
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #7 15715819
    Konto nie istnieje
    Konto nie istnieje  
  • #8 15718331
    rekinisko
    Poziom 22  
    Program działa wyśmienicie, zmieniłem tylko częstotliwość odświeżania wyświetlacza bo było widać lekkie migotanie. Teraz dodaję sterowanie kolorami wyświetlacza i docelowo komunikację z nRF. Efekty wrzucę niebawem, jeszcze raz dzięki za pomoc.
  • #9 15718378
    Konto nie istnieje
    Konto nie istnieje  
  • #10 15718479
    rekinisko
    Poziom 22  
    Teraz dopiero dopatrzyłem się, że przy starcie raz wywala wartość 85 stopni co nie powinno mieć miejsca.
  • Pomocny post
    #11 15718573
    Konto nie istnieje
    Poziom 1  
  • #12 15718592
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #14 15719643
    wawxx
    Poziom 17  
    Witam!
    1. czas na konwersję 750 ms, jest to maksymalny czas potrzebny tylko wtedy, gdy mamy czujnik podłączony tylko dwoma przewodami, a wiec przy zasilaniu "parazytowym" i przy maksymalnej rozdzielczości pomiaru.
    2. w przypadku kiedy czujnik jest podłączony trzema przewodami, ten czas może być skrócony do około 20 ms.
    3. ten czas nie oznacza, że trzeba czekać na odczyt, oznacza to tylko tyle, że od momentu wydania rozkazu konwersji temperatury do momentu odczytu można wykonywać absolutnie inne operacje, a dopiero potem wrócić do odczytu.
    4. podobnie jest z odczytem +85 stopni. Jest to wartość początkowa zapisana w scratchpadzie, a wiec występująca po załączeniu układu do zasilania lub po resecie. Jeżeli na początku programu, a wiec przed wejściem do pętli programu głównego damy rozkaz konwersji temperatury, to wtedy, jeśli od momentu wejścia do programu, a pierwszym odczytem upłynie te sakramentalne 750 ms, to odczyt bedzie poprawny.
    5. jeśli mamy więcej czujników, to wystarczy je zainicjować wspólnie, a więc wysłać rozkaz do konwersji z pominięciem adresowania, a dopiero potem odczytywać pomiar sekwencyjnie od kolejnych czujników.
    Pozdrawiam
    Wojtek
  • #15 15719688
    Konto nie istnieje
    Konto nie istnieje  
  • #16 15719920
    rekinisko
    Poziom 22  
    Ja dokładnie tak zrobiłem, wyświetlam same 8-ki i po chwili pierwszy odczyt wskakuje. Jeszcze nie mam pomysłu jak rozwiązać problem przecinka w temperaturze np 23,4. Nie wiem czy dobrze myślę, najprościej dostawić mnożenie x10 i wyświetlać jako 234 a przecinek po prostu włączać w odpowiednim momencie, nic innego nie przyszło mi do głowy.
  • #17 15719972
    Konto nie istnieje
    Konto nie istnieje  
  • #18 15721032
    rekinisko
    Poziom 22  
    Ładnie to rozegrałeś ;) muszę się zapisać do Ciebie na lekcje.
REKLAMA