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



Teraz jest 11 paź 2025, o 22:53


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: 1988
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: 1988
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 4 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO

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? 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.