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

[BASCOM] Jak wyświetlić jednocześnie kilka alarmów na LCD?

Mad Jaro 11 Lip 2012 15:48 1810 19
  • #1 11094232
    Mad Jaro
    Poziom 16  
    Mam napisaną taką obsługę wyświetlania:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Mam tam jak widzisz zrobione trzy flagi alarmów:
    oil
    bat
    glaze

    i odpowiednio do nich case 5, case 6, case 7

    I teraz wszystko jest w porządku do puki włącza się tylko jeden alarm, wtedy na LCD miga mi co sekundę na zmianę napis alarmu (case 7) i zapamiętana pozycja wyswietlacza Cas (od 0-4)

    Sprawa komplikuje się gdy włączone są 2 lub 3 alarmy. wtedy w sekundę przelatują mi te 3 wartości (case 5,6,7) i zapamiętana pozycja wyświetlacza Cas (od 0-4)

    Chciałbym to rozwiązać tak, aby w przypadku jednego alarmu pojawił się np:
    1sek napis alarmu (case 5)
    2sek zapamiętana pozycja wyświetlacza Cas (od 0-4)
    3sek napis alarmu (case 5) i tak w kółko

    W przypadku 2 i 3 alarmów analogicznie:
    1sek napis alarmu (case 5)
    2sek zapamiętana pozycja wyświetlacza Cas
    3sek napis alarmu (case 6)
    4sek zapamiętana pozycja wyświetlacza Cas
    5sek napis alarmu (case 7)
    6sek zapamiętana pozycja wyświetlacza Cas
    5sek napis alarmu (case 5) i tak w kółko

    Nie wiem jak sobie z tym poradzić.
  • #2 11094285
    Konto nie istnieje
    Poziom 1  
  • #3 11094497
    Mad Jaro
    Poziom 16  
    Procedury wait kompletnie odpadaja, opozniaja program, pozatym mam tam przerwania i zaklucaly by mi odczyty. Ogolnie jest to prosty program z prostym wyswietlaniem na select case wlasnie. Case 0 pokazuje temperature oleju, case 1 temp powietrza, case 2 paliwo, case 3 napiecie, case 4 obroty. Normalnie podczas pracy operuje tylko na tych case'ach od 0 do 4. Przelaczam miedzy nimi przyciskiem (mam tylko jeden przycisk). Natomiast case od 5 do 7 pojawiac maja sie tylko gdy spelniony jest warunek i flaga aktywna. Gdy pojawia sie jeden alarm czyli flaga_alarm_oil i case pozostawione bylo powiedzmy na 2 to po prostu miga mi na przemian: case 2, case 5.....
    Zas gdy sa dwie flagi alarmow i wiecej to przelatuja wszystkie naraz a potrzebuje aby migaly na przemian tak jak pisalem wczesniej.
    Sory ze tak mieszam ale ciezko to tak wytlumaczyc w slowach.
  • #4 11094533
    Konto nie istnieje
    Poziom 1  
  • #5 11098138
    Mad Jaro
    Poziom 16  
    Czyli mówisz cały sekect case display_lcd przenieść do pętli głównej ?

    I wtedy napisać tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ale czy te waity nie będą zatrzymywać programu ?
  • #6 11098207
    Konto nie istnieje
    Poziom 1  
  • #7 11098240
    Mad Jaro
    Poziom 16  
    Rozumiem, ale co z moimi pozostałymi wyświetlaniami, wspominałem wcześniej, że mam jeszcze case od 0 do 4 i je przełączam przyciskiem. A gdy wyrzucę mój select case display_lcd to nie będę miał możliwości ich wyświetlania...
  • #8 11098277
    Konto nie istnieje
    Poziom 1  
  • #9 11098371
    Mad Jaro
    Poziom 16  
    Nie, wkradł się błąd jednak. Poprawny kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #10 11098486
    Konto nie istnieje
    Poziom 1  
  • #11 11098766
    Mad Jaro
    Poziom 16  
    Trochę się zagmatwałem, jak miałbyś chwilkę przybliżyć coś w kodzie.
  • #12 11099098
    Konto nie istnieje
    Poziom 1  
  • #13 11100292
    Mad Jaro
    Poziom 16  
    Kwarc wewnetrzny atmegi16 czyli 8000000. Button sprawdzam co 100ms aby szybko reagowal na wcisniecie. Wczesniej jak mialem co 1s to przelaczal za wolno.
  • #14 11100528
    Konto nie istnieje
    Poziom 1  
  • #15 11100595
    LordBlick
    VIP Zasłużony dla elektroda
    MArSTER_1 napisał:
    Aby ten program, który napisałem zadziałał, trzeba urchomić dwa Timery. Timer0 do odliczania 100 milisekund a Timer1 do odliczania 1 sekundy.
    Albo tylko 1 timer cyklicznie co 100 ms i liczymy do 10... ;)
  • #16 11100835
    Konto nie istnieje
    Poziom 1  
  • #17 11101886
    Mad Jaro
    Poziom 16  
    Sprawa jest tego typu, że Timer1 mam już użyty do Capture na ICP.
  • #18 11102163
    Konto nie istnieje
    Poziom 1  
  • #19 11112137
    Mad Jaro
    Poziom 16  
    Zobaczcie, a gdyby zastosować takie warunki ?
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Tylko martwią mnie te wait w instrukcji wait wyrażnie napisano:
    "Instrukcja wstrzymuje działanie programu na podaną ilość sekund"
    Czyli program się zatrzyma...a tego chce uniknąć, ponieważ rozjedzie mi się reszta.
  • #20 11112478
    Konto nie istnieje
    Poziom 1  
REKLAMA