Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega32][bascom] - Program do sterownika pieca CO (sprawdzenie)

30 Wrz 2015 22:55 1734 10
  • Poziom 23  
    Witam. Jestem w trakcie pisania programu i jednocześnie projektowania sterownika do pieca CO. Chciałbym dowiedzieć się czy program jest napisany jak na razie przejrzyście i nie ma jakichś krytycznych błędów. Najbardziej irytuje mnie miganie lcd przy zmianie pozycji menu za pomocą enkodera. Cls'y w menu starałem się nie używać, jedynie przy przejściach do podmenu. Zamieszczam program, proszę o ogólne sprawdzenie, wskazanie ewentualnych nieprawidłowości.
    Pozdrawiam.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 28  
    W tytule masz atmega 8 a w programie 32?
  • Pomocny post
    Użytkownik usunął konto  
  • Poziom 23  
    niveasoft napisał:
    Kursor jest zawsze na 1,1 i tylko piszesz LCD...

    Ale... W programie kiedy kręcisz enkoderem i coś ma sie zmienić to na końcu piszesz Call Odswiez_lcd a sub sam okresla co bedzie wyswietlał


    Użyłem zmennej refresh, jeśli 1 to ma wyświetlić, a to "home" mam ustawić tak jakby przed warunkami case, tak? Zrobiłem właśnie tak i teraz jest świetnie! Nic nie miga, enkoder nie gubi sygnałów ale chyba zostawię go w pętli głównej bo przerwanie mam co 16ms i gdy go co tyle wywołuję to jeszcze zbyt rzadko, trzeba częściej.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    I przykładowe wywołanie odświeżenia:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    niveasoft napisał:
    Pomyśl co bedzie jak ERR będzie wynosiło 1? Nawet jeśłi poprzedni odczyt był poprawny i na przykład T1 = 16st to teraz nawet jeśli nie będzie odczytu znów 16 zostanie pomnożone *10 i podzielone /16 - i na wyświetlaczu masz śmieci.

    Jeśli nastapił bład odczytu to nie dotykaj zmiennych temperatury - poczekaj na poprawny odczyt - sekunda Cię nie zbawi


    Odnośnie tego to było celowe, abym widział który czujnik nie działa i bym mógł szybko podmienić w razie czego. Na razie przy błędzie odczytu jest tylko "set buzzer", w przyszłości będzie więcej.


    Jeszcze jedno pytanie. Ustawiam temperatury i wyświetlam wstawiając sztuczny przecinek, więc 200 to jest 20*C. Chcę ustawiać temperaturę w liczbach całkowitych, np 21 , 22 , 23. Jak przyciąć to ostatnie zero żeby się nie wyświetlało oprócz dzielenia? Próbowałem użyć funkcji Fusing ale to chyba wiąże się z użyciem kolejnej zmiennej, a chcę by program nie był przeładowany zmiennymi które nie są konieczne.
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Użytkownik usunął konto  
  • Poziom 23  
    Bardzo dziękuję, to bardzo cenne uwagi jak dla mnie ;) Obecnie walczę z próbą pozbycia się przycisków menu i exit i pozostanie przy samym enkoderze. Jeśli mam włączone drganie styków (debounce) to w jaki sposób mogę sprawdzić jak długo jest wciśnięty przycisk?
  • Użytkownik usunął konto  
  • Poziom 23  
    Coś świruje mi odczyt temperatury na T2. Co chwile weryfikacja jest niepoprawna. wiec widzę ze nie ma odczytu i spadek temp o połowę.

    Dodano po 2 [minuty]:

    Naprawione ;) Po zwiększeniu ilości przerwań i czasu co ile jest wywoływane natrafiało ono na odczyt temperatury. Disable interrupts podczas pomiaru i przeliczeń i jest już dobrze ;) Chyba, że jest jakiś inny sposób.