Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 12:31


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 50 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 17 lis 2013, o 11:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    jak w temacie

    czyli niby wszystko dziala ok ... programy mi sie zalaczaja moge ustawiac czas kasowac pamiec temperatur itp...

    ale zdarza sie ze raz na ruski czas klawisz dziwnie sie zachowuje ... chcialbym pozbyc sie delay i nie moge wykombinowac jak sie tego cuda pozbyc .... moze ktos podpowiedziec ?

    generalnie mam dwa zalozenia ...

    1. Pozbyc sie delay
    2. kazde wcisniecie klawisza procz tego ze zwraca return 1 to jeszcze na 10 ms musialoby zalaczac PB0

    oto moj koci kod

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    wywoluje go w petli main w ten sposob :

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:23 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 208
    Lokalizacja: Kraków
    Pomógł: 16

    W bluebooku masz przecież wspaniałą obsługę klawiszy w funckji super_debounce. Podejrzyj sobie tamten kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:24 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sty 2013
    Posty: 272
    Pomógł: 3

    Temat był poruszany na forum setki razy, wystarczy poszukać. Podpowiem, że w ogóle delay się nie używa, a timerki. W bluebooku masz to ładnie opisane przecież i masz gotowa fukcję do obsługi przycisków.


    Wysyłane z mojego iPad przy użyciu Tapatalk HD

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    timery mam zaktywowane mam blue booka ale za mocno kombinowalem i juz mam leb zryty ... bez typowej pomocy juz w tym momencie raczej sobie nie poradze :/ za duzo w glowie namieszalem

    ------------------------ [ Dodano po: 1 minucie ]

    Juffre napisał(a):
    W bluebooku masz przecież wspaniałą obsługę klawiszy w funckji super_debounce. Podejrzyj sobie tamten kod.



    hmm widzę że zaczyna się robić elektroda tylko oni odsyłają do google wy do blue booka ...

    mam blue booka czytalem i gdybym sobie poradzil sam to bym nie pisal na forum ....

    walcze juz 7h lacznie przy tym ... i klapa za duzo juz w glowie sobie namieszalem

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 lut 2013
    Posty: 376
    Lokalizacja: Kłopoty-Stanisławy
    Pomógł: 33

    http://mirekk36.blogspot.com/2012/10/dr ... ak-to.html

    http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

    http://mirekk36.blogspot.com/2012/10/ob ... a-cd3.html

    a tu masz najprostszą funkcję obsługi przycisków z ww. poradnika:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    50 znaków Atnela ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    te poradniki tez czytalem ..... lecz reakcja na prass .... mnie nie trybi nie czytales wyzej jak wywoluje funkcje ....

    1 klawisz w roznych momentach pelni inna role ... wiec tak mnie to nie bedzie dzialalo a poradniki czytalem juz kilka razy i tak sobie w glowie namieszalem ze juz sam nie dam rady :/

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 lut 2013
    Posty: 376
    Lokalizacja: Kłopoty-Stanisławy
    Pomógł: 33

    Majster, chyba rzeczywiście za długo już nad tym siedzisz bo ja kompletnie nie rozumiem o co chodzi.

    Dałem Ci gotowy przykład jak pozbyć się _delay_ms().

    majster napisał(a):
    uint8_t sprawdz_przycisk( uint8_t klawisz ){
            if( ! ( PINA & klawisz ) ){
                    _delay_ms(100);
                    if( ! ( PINA & klawisz ) )  {
                            return 1;
                    }
            }
             return 0;
    }


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    jeśli nie o to chodziło to sorki ale więcej nie pomogę....

    ------------------------ [ Dodano po: 7 minutach ]

    Poza tym czy ta Twoja funkcja sprawdz_przycisk, przypadkiem zawsze nie bedzie zwracała 0 ?

    Czy to nie powinno być coś takiego:

    [SYNTAX=PSEUDOKOD]

    Jeśli przycisk to zmienna = 1 inaczej zmienna = 0;
    return zmienna;


    [KONIEC PSEUDOKODU]

    _________________
    50 znaków Atnela ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 11:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    w ten sposob ... jak masz z key_lock probowalem i przyciski same zawsze sie wlaczaja :/

    ------------------------ [ Dodano po: 1 minucie ]

    i jest warning

    Description Resource Path Location Type
    No return, in function returning non-void przyciski.c /06.time_data_temp_menu_2timers line 29 Code Analysis Problem


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 12:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 lut 2013
    Posty: 376
    Lokalizacja: Kłopoty-Stanisławy
    Pomógł: 33

    acid3 napisał(a):
    język c
    uint8_t sprawdz_przycisk( uint8_t klawisz ){
     if( !key_lock && !(PINA & klawisz ) ) {
      key_lock=1;
     
      // reakcja na PRESS (wcinięcie przycisku)
      return 1;
     
     } else if( key_lock && (PINA & klawisz ) ) { key_lock++; return 0; }
    }


    no dobra ......
    a tak :

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    faktycznie, tu nie było return i kompilator miał rację

    _________________
    50 znaków Atnela ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 12:10 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 208
    Lokalizacja: Kraków
    Pomógł: 16

    Podstawą sukcesu sprawnie działającej klawiatury są timery programowe. Zacznij od tego.
    Wieczorem może będę miał trochę wolnego czasu to coś skrobnę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 12:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 lut 2013
    Posty: 376
    Lokalizacja: Kłopoty-Stanisławy
    Pomógł: 33

    Juffre napisał(a):
    Podstawą sukcesu sprawnie działającej klawiatury są timery programowe. Zacznij od tego.
    Wieczorem może będę miał trochę wolnego czasu to coś skrobnę.


    Są na pewno najlepszym rozwiązaniem, ale aktualnie korzystam z uint16_t key_lock w kodzie przedstawionym wyżej na m16, int.8Mhz i obsługa przycisków (trzech) nie robi najmniejszych nawet problemów, nawet dwóch jednocześnie.

    _________________
    50 znaków Atnela ....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 12:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Mam 2 timery ... jeden tyka co 10 ms na wew oscylatorze 8MHz a kolejny tika co 1sek i jest na kwarcy zegarkowym

    Wysłane z telefonu

    ------------------------ [ Dodano po: 3 minutach ]

    acid3 napisał(a):

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    faktycznie, tu nie było return i kompilator miał rację



    tak tez klawisz robi co chce mimo ze nie ma bledow kompilacji

    ------------------------ [ Dodano po: 6 minutach ]

    a w moim wykonaniu ... nie zawsze klawisz zadziala czasem trzeba go wcisnac 2 razy ale reaguje prawidlowo i zaleznie od sytuacji zalacza prawidlowe funkcje

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 12:46 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Dosłownie parę dni temu pisałem na temat klawiszy tutaj: http://forum.atnel.pl/topic4763.html
    Może coś wykorzystasz...

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 12:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    czytalem juz wczesniej i wydaje mi sie ze nie opanuje juz za duzo w glowie sobie namieszalem ... klawisz musi mi zwracaj return 1 gdy wcisniety return 0 gdy nie wcisniety

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 13:31 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1971
    Lokalizacja: Lipsko
    Pomógł: 125

    Spróbuj tak:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    To jedna z przeróbek odnośnie mojego tematu. Kiedy będziesz wywoływał ten fragment to póki klawisz nie zostanie puszczony zawsze będzie powracał z return 1. Oczywiście debounce zaaplikowane.
    Zapomniałem dopisać - return 1 wykona się tylko raz, kiedy licznik dobije do 3. Można to jeszcze przerobić i jako argument w return wstawiać po prostu Lk, które to przyjmie wartość PRAWDA dopiero po doliczeniu do 3 (możesz tam wtedy wstawić znak większości: if Lk=>3)

    _________________
    http://www.sylwekkuna.com



    Ostatnio edytowano 17 lis 2013, o 13:42 przez SylwekK, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 13:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    no niestety klawisz nie dziala ...

    to jest naprzyklad wywolanie klawisza 1


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    z moim kocim kodem z delay chodzi ale nie zawsze za 1 klikiem ... czasem musze 2x kliknac :/ i glownie o to mi chodzi :/

    ------------------------ [ Dodano po: 1 minucie ]

    flagi ustawiam czas i ustawiam date sa po to ... ze jezeli nie ustawiam daty to przycisk wchodzi do menu ... jezeli ja ustawiam to nie dziala ....

    ------------------------ [ Dodano po: 3 minutach ]

    klawisz 2 i 3 sluzy do podgladu pamieci temperatur ... a jezeli ustawiam np czas ... to klawisz 2 minuta ++ wtedy zatwierdzam klawiszem 3cim ... i klawisz 2 daje godzine ++

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 13:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sty 2013
    Posty: 272
    Pomógł: 3

    majster napisał(a):

    hmm widzę że zaczyna się robić elektroda tylko oni odsyłają do google wy do blue booka ...

    mam blue booka czytalem i gdybym sobie poradzil sam to bym nie pisal na forum ....

    walcze juz 7h lacznie przy tym ... i klapa za duzo juz w glowie sobie namieszalem


    Masz funkcje superdebounce, działająca na timerach programowych, wystarczy jej użyć. Skoro masz książkę, czytałeś to nie rozumiem czemu jej nie użyjesz? Obrażasz się, że ktoś cię gdzieś odsyła a tam masz wszystko podane jak na tacy, skopiujesz z płyty kod i już. Niepotrzebnie marnować tyle czasu jeżeli nic się i tak nie uczysz przydatnego (mam na myśli delay)

    Wysyłane z mojego iPad przy użyciu Tapatalk HD

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 14:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Siedze przy tyn juz kolo 9h probowalem wszystkie sposoby z bloga mirka i z ksiezki. Zamotalem sie i w glowie juz mam mentlik dlatego prosze o pomoc. Problem staram sie zawsze sam rozwiazac jak juz glupieje to wtedy pisze. Dlatego uwazam iz ciagle odsylanie do ksiazki po ktora zawszw najpierw siegam. Pozniej wertuje mirka bloga i forum. Jak juz sobie sam rady nie daje wtedy pisze i prosze o pomoc. Dlatego irytuje mnie ciagle odsylanie do ksiazki. Te forum zalozone zostalo jak mniemam po to by pomagac a nie odsylac do biblii jak elektroda do googli.

    Wysłane z telefonu

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 15:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sty 2013
    Posty: 272
    Pomógł: 3

    A jaki masz problem w wykorzystaniu funkcji gotowej z książki? Włóż płytę, znajdź w workspace superdebounce i masz, gotowe, nie musisz się męczyć.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 15:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 maja 2012
    Posty: 471
    Lokalizacja: ZGY/ZS
    Pomógł: 30

    Dostałeś co najmniej kilka prawidłowych rozwiązań pomijając odsyłanie do jeszcze kilku innych. Jeśli siedzisz dzisiaj już długo i masz mętlik w głowie to proponuję odstawić już to na dzisiaj. Wróć do tego jutro, na świeżo, a dzisiaj jakiś relaksik przy filmie i soczku ;)

    _________________
    eDiyCraft.blogspot.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 15:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 lip 2013
    Posty: 143
    Pomógł: 1

    może poszukajmy problemu w innym miejscu... mógłby kolega wrzucić pełny kod? (konkretnie chodzi mi o definicję makr i konfigurację pinów portu) Podobny problem miałem kiedyś gdy nie podciągnąłem switch'y programowo do VCC. z delay'em działało z programowym debouncem już niekoniecznie...

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 15:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 mar 2013
    Posty: 236
    Lokalizacja: Warszawa
    Pomógł: 5

    Tak na szybko mój kawałek programu bez kolejkowania:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Potem w main sobie obrabiasz jakąś pętlą all switche, jako zdarzenie. Czasem pewne rzeczy trzeba zostawic na póżniej Sam wiem po sobie, nie jasne było mi kompletnie jak mirek w przerwaniu ICP obłsugiwał komendy z pilota i opis z transmisji radiowej. Jak zrozumiałem co to jest, to reszta zajęła mi kilka chwil i w 2 dni mam swoja, bardziej rozbudowana wersję tego co mirek zarzucił. Więc jak sie nie rozumie jak działa switch to ciężko, tak samo jak się pisze kod i nie rozumie się jak on działa, to jak potem niby masz go poprawić, żeby działał płynnie?

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 15:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 lip 2013
    Posty: 143
    Pomógł: 1

    Ooo switch'e jako event :) chętnie też z tego skorzystam, bardzo dziękuję :), gdyby kolega podzielił się jeszcze plikiem nagłówkowym to byłoby już idealnie :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 15:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Aktualnie jestem na kawie u rodzinki i tak czytam i coraz gorzej mi w glowie ... juz nic nie rozumie. Dobra przyjade to cos pokombinuje.

    Jak juz pisalem wczesniej. Jak klawisz ma zawsze wykonywac ten sam program to jest ok a jak robi rozne rzeczy zaleznie od sytuacji to juz tylko z delay mi dziala. Nie moge zrozumiec jak zrobic by klawisz zwracal return 1 po wcisnieciu przy uzyciu timerow. Zrobilem zegarek z data i temperaturi. Wchodzisz do menu klikajac klawisz 1. Jak nie jestes w menu to kl2 polazuje pamiec max i min temperatury zewn. Kl3 tak samo ale wewn.
    Jak jestes w menu to klawisz 2 przewija menu. Klawisz 3 zatwierdza. Klawisz 1 cofa. Wchodze naprzyklad w ustawienie daty. Kl2 ustawiam rok. Kl3 potwierdzam. Kl2 ustawiam miesiac. Kl3 potwierdzam kl2 ustawim dzien. Kl3 zapamietuje i wychodzi z menu aktualizujac date.

    Jezeli mam na delay to dziala ale czasem nie reaguje na wcisniecie. Przerabiajac to na timerowe debounce klawisze przestaja dzialac. Wroce do domu nakrece film jak to dziala i pokaze. Caly program oparlem na 3 klawiszach i w tym rzecz ze nie moge wyqolac funkcji po wcisnieciu klawisza a musze uzyskac return 1;

    Wysłane z telefonu

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 16:52 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 lip 2013
    Posty: 143
    Pomógł: 1

    W przypadku takiego zastosowania klawiszy najbardziej oczywistym wyjściem byłoby posłużenie się mechanizmem callback'a i rejestrowania funkcji w poszczególnych poziomach menu... ale może najpierw zobaczymy kompletny kod

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 20:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    w załączniku mój pierwszy program który działa wg moich założeń ... co prawda dużo mi do callbacow i eventow ... ale tak jak chcialem tak dziala ... procz przyciskow ... trzeba czasem kilka razy wcisnac by zadzialaly ....

    ------------------------ [ Dodano po: 21 minutach ]

    jak widac staralem pisac sie sam nie kopiowalem gotowych menu itd ... ucze sie ... chcialem zrobic samemu wg mojego pomyslu moze duzo tych ifow ... ale dziala jak chcialem ... z wyjatkiem przyciskow czasem trzeba 2x wcisnac by zadzialal

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Ostatnio edytowano 17 lis 2013, o 21:11 przez majster, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 20:43 
    Offline
    Użytkownik

    Dołączył(a): 16 maja 2012
    Posty: 349
    Lokalizacja: Legnica
    Zbananowany użytkownik

    Pomógł: 23

    Piszę bez sprawdzania dla tego konkretnego przypadku. Podobne rozwiązanie stosowałem w układzie z przyciskami dzwonkowymi które na prawdę drgają. Skoro upierasz się żeby nie korzystać z propozycji z książki to może taka wersja ci podpasuje :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W programie masz klawisz_timer którego zdaje się nie wykorzystujesz. Proponuję więc procedurę sprawdz_przycisk nie blokować tylko w niej zliczać ile razy powtórzy się ten sam stan przycisku. Jeżeli doliczy do 5 ( można sobie wpisać wedle uznania ) to wystawi 1. Jeżeli nie doliczy do 5 to albo przycisk nie jest wciśnięty albo jeszcze drga styk. Sprawdzanie trwa cyrka w przybliżeniu 50ms po ustaniu drgań i masz załatwioną sprawę "debouncingu" ;-) Zaproponowane rozwiązanie ma wady ale może się sprawdzi na szybko.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 21:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    ok wydłużyłem do licznik 8 i niby działa ale tylko klawisz 1 :/ wejscie i wyjscie z menu :/

    ------------------------ [ Dodano po: 7 minutach ]

    dobra panowie tyle juz przeszedlem i podzialalem wiec sam cos predzej czy pozniej wykombinuje

    ------------------------ [ Dodano po: 35 minutach ]

    tutaj słychać wciskanie switcha

    1 SW wchodzi w menu
    2 SW przewija
    3 SW potwierdza

    jak nie jestes w menu
    SW2 pamiec temp zewn
    SW3 pamiec temp wewn


    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 lis 2013, o 23:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 mar 2013
    Posty: 236
    Lokalizacja: Warszawa
    Pomógł: 5

    W sumie robie cos podobnego, nawet bardzo. Ja to mam 2 switche i kazdy ma po 4 funckje, długi wciskanie powoduje, że smiga po menu, krótkie, że wejdzie w dana opcje.
    A co do main to jest mega prosty dla tamtej opcji:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    A co do zarejestrowania to dowoli możesz, aj sobie walnąłem po prostu:
    callback.c;
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    callback.h
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    A co do twojego probelmu, to nie wiem. Musiałbyś wrzucić cały kod, który masz, a powiem serio, analizowanie czyjegoś kodu, zapewne z kilkaset linijkami to nie dla mnie :). Bo skoro tobie nie działa to i mi by nie działało :).

    Powinieneś moim zdaniem, wyłaczyc all i przetestowac działanie samych keys. Bo bys wiedział, czy tylko masz problem z kodem dla obługi switchy, czy siedzi on gdzieś głębiej. Ja, np. zanim dowaliłem obługe keyów, przetestowałem sobie w najprostszym projekcie, gdzie miałem tylko obługe switchy i lcd, i wciskałem i patrzyłem czy wszystko gra, potem ją dorzuciłem do głównego projektu i też gra.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 lis 2013, o 00:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Właśnie przeczytałem twój post ... wchodząc na forum ... męczą mnie te klawisze ... jedna z najgłupszych rzeczy w AVR :) i nikt nie ma na to gotowego lekarstwa ... a dlaczego tak pisze ?

    Już objaśniam ... na początek kod ... kilka rzeczy jest utaj nie potrzebnych ale przygotowałem sobie do testów.

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    no niby super co ? :)

    zwróćcie uwagę na fragment o klawiszu ... o eliminacji drgań styków

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    ... no tak jest to fragment z mirka poradnika ... ale jakoś wg mirka opisu ... kod jest sprawny ... mnie udało się go ubić ...
    albo ja mam gdzieś bubla ... załączam film ... że często klawisz nie reaguje ... czyli tak jak i w moim programie .... o którym mowa była wcześniej i który jest na wcześniejszym wideo powyżej.

    A tutaj wideo z działania leda po press ... widać że się krzaczy tak samo jak i opis na lcd.




    ------------------------ [ Dodano po: 13 minutach ]

    ale winą tutaj nie jest kod ....

    gdyż podłączając klawisze do

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    portu C a nie jak wczesniej A
    klawisze działają prawidłowo ...

    Jest to Atmega32

    co mogę wyłączyć w fusach albo ustawić w programie by port A działał prawidłowo ... bo wiem że port A 0 - 7 to może być również ADC 0 - 7

    i może właśnie te ADC coś mi broi ?

    ------------------------ [ Dodano po: 18 minutach ]

    Zmieniłem w programie odnośnie temperatury .... z PORT A na PORT C i działa wyśmienicie ... klawisze się nie gubią ...

    ktoś może wytłumaczyć dlaczego na porcie A / ADC klawisze się gubią ??

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 50 ]  Przejdź na stronę 1, 2  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO