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

Atmega8A - [BASCOM] Źle działający program zliczający

Sebastian.R 08 Sty 2013 11:40 2856 10
REKLAMA
  • #1 11759032
    Sebastian.R
    Poziom 20  
    Witam.
    Sprawa banalna dla kogoś kto często programuje w BASCOM.
    Ja niestety należę do tych "niedzielnych" programistów.
    Otóż, napisałem nieduży programik w BASCOMie - menu z pomiarem na wyświetlacz 2x8 znaków czyli 16*1a i mam kłopot, bo raz jest jedna cyfra po przecinku a raz dwie (z czego ta druga jest jakby cieniem poprzedniego stanu - zostaje a ma zniknąć).
    Układ mierzy poprzez LM358 temperaturę na czujniku PT100, która ma wpływ na załączenie wyłączenie grzałki/grzałek.
    Ustawiamy na początku temperaturę główną T, potem granicę górną oraz dolną a następnie przechodzimy do pomiaru.
    W kodzie brakuje uwarunkowania, kiedy ma włączyć/wyłączyć (PINC.0 i PINC.1 - jako wyjścia , reszta jako wejścia z czego PINC.2 do 5 jako klawisze sterowania w Menu).

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Menu prezentuje się tak :
    Atmega8A - [BASCOM] Źle działający program zliczający Atmega8A - [BASCOM] Źle działający program zliczający
    Atmega8A - [BASCOM] Źle działający program zliczający Atmega8A - [BASCOM] Źle działający program zliczający

    W ostatnim zdjęciu "Pomiar T" widać, że mierzy ale problem jest z tą drugą cyfrą po przecinku, która się pojawia jak pomiar zmaleje do dwucyfrowej.
    Co zrobić by dojść z tym do ładu?
    Próbowałem Waitms 50 i CLS ale strasznie migotało.
    W sumie mógłbym na to nie zwracać uwagi ale jak coś robić to możliwie najlepiej.
    Dzięki za wszelkie sensowne rady.
  • REKLAMA
  • #2 11759059
    BlueDraco
    Specjalista - Mikrokontrolery
    Tzn. co widać na tym zdjęciu, gdzie i jaki jest problem? Ja widzę 245.6 stopnia i żadnej drugiej cyfry po przecinku nie dostrzegam.
  • REKLAMA
  • #3 11759285
    Sebastian.R
    Poziom 20  
    Chodzi o to że przy spadku temperatury np z 100.0 robi się 99.90 zamiast pojawić się tylko 99.9.
    Drugie pytanie co wyszło : co trzeba zmodyfikować / dopisać by pomiar się nie zatrzymywał? Bo się zatrzymuje dopóki nie wyjdę z powrotem do ustawienia temperatury T (pierwsza fotka). Myślałem, że jak nie nacisnę PINC.5 to wszystko będzie hulać w pętli Do-Loop a tu jakby pętelka się wykonuje raz i ...czeka zamiast mierzyć w pętli.

    No kurczę , nie działa jak na leży. Po przejściu ma ciągle mierzyć (spadki /wzrosty temperatury) a nie zmierzyć raz i czekać kiedy nacisnę klawisz. Jak z tym dojść do ładu ?
  • Pomocny post
    #4 11759362
    Mundi1970
    Poziom 24  
    Cytat:
    Chodzi o to że przy spadku temperatury np z 100.0 robi się 99.90 zamiast pojawić się tylko 99.9.

    Można tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #6 11760041
    jousto
    Poziom 17  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    bo Pinc.5 zawsze się =1 gdy nie wciśnięty (oczywiście pod warunkiem że wciśnięcie powoduje przyłączenie tegoż do masy)[/code]
  • REKLAMA
  • #7 11760061
    Sebastian.R
    Poziom 20  
    jousto napisał:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    bo Pinc.5 zawsze się =1 gdy nie wciśnięty (oczywiście pod warunkiem że wciśnięcie powoduje przyłączenie tegoż do masy)[/code]

    Zgadza się.Każdy przycisk jest podciągnięty do zasilania rezystorem 3K , więc nie wciśnięty powoduje że jest zawsze na nim stan wysoki, a wciśnięcie powoduje stan niski.
    I wszystko byłoby OK gdyby nie to że czy mam
    Loop Until Pinc.5 = 1
    czy też
    Loop Until Pinc.5 = 0
    Pomiar pokazuje tylko jedną zmierzoną wartość a nie , jak to powinno być, mierzyć w kółko w pętli.
  • Pomocny post
    #8 11760128
    jousto
    Poziom 17  
    brakuje Ci jeszcze jednej malutkiej instrukcji

    Kod: text
    Zaloguj się, aby zobaczyć kod


    u mnie zawsze to działa
  • #9 11760164
    Sebastian.R
    Poziom 20  
    jousto napisał:
    brakuje Ci jeszcze jednej malutkiej instrukcji

    Kod: text
    Zaloguj się, aby zobaczyć kod


    u mnie zawsze to działa

    Czyli że przed Loop Until ... powinienem wstawić jeszcze Set Portc.5 ?
  • Pomocny post
    #10 11760284
    jousto
    Poziom 17  
    Nie !!!!
    Nie w środku pętli to byłoby bez sensu.

    Ale ja to bym zrobił inaczej

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Rozumiem, że wywołanie Menu3: jest zawsze z pętli głównej wykonywane.
  • #11 11760303
    Sebastian.R
    Poziom 20  
    Ok , sprawdzę to , czy u mnie ruszy :) DZIĘKI

    -------------------------------------------------------------
    Dzięki w/w wskazówkom sprawa ruszyła z miejsca.
    Nie wszystko wpisałem ale większość. Oto co wpisałem:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Dziękuję bardzo za odpowiedzi :) , "pomógł" oczywiście poszło :)

    Teraz jest tak że po dotarciu do Menu3 wszystko mierzy jak trzeba, a po naciśnięciu raz PinC.5 przestaje , a jak się znowu naciśnie to przechodzi do menu głównego.
REKLAMA