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



Teraz jest 4 cze 2026, o 10:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 4 kwi 2014, o 20:41 
Offline
Nowy

Dołączył(a): 04 lut 2014
Posty: 4
Pomógł: 0

Witam

Zrobiłem układ do sterowania 12 przekaźnikami z 12 różnych wejść.
Klawisze 1-4 - PORTC
Klawisze 5-12 - PORTD
Do tego celu wykorzystuję funkcję SuperDebounce autorstwa Pana Mirka.

Wywołanie funkcji:

Kod:
SuperDebounce(&PINC, KL1, 1, 100, kl1_press,kl1_long);
SuperDebounce(&PINC, KL2, 1, 100, kl2_press,kl2_long);
SuperDebounce(&PINC, KL3, 1, 100, kl3_press,kl3_long);
SuperDebounce(&PINC, KL4, 1, 100, kl4_press,kl4_long);
SuperDebounce(&PIND, KL5, 1, 100, kl5_press,kl5_long);
.....


I niestety od klawisza nr 5 zaczynają się schody ponieważ jest on podłączony do innego portu niż klawisze 1-4.
Powoduje to dziwne zachowanie wszystkich pinów. Po wyrzuceniu wywołania metody z klawiszem 5 wszystko wraca do normy.

Podsumowując program działa poprawnie tylko wtedy gdy używam przycisków 1-4 lub 5-12, przy użytkowaniu obu portów funkcja się nie sprawdza. Czy ktoś ma pomysł jak to naprawić ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 21:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Zakładam że port D masz ustawiony jako wyjścia i podciągnięty do VCC (wewnętrznie)?

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 21:08 
Offline
Nowy

Dołączył(a): 04 lut 2014
Posty: 4
Pomógł: 0

PORTD ustawiony jako wejścia, z podciągnięciem do VCC. Tak jak pisałem wejścia na porcie C jak i D osobno działają lecz przy użyciu ich razem zakłócają się wzajemnie. Obstawiam że problem leży w samej funkcji SuperDebounce, możliwe że w warunku
Kod:
if( last_key && last_key != key_mask ) return;

Ale nie jestem pewny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 21:13 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

mike660 napisał(a):
Czy ktoś ma pomysł jak to naprawić ?


Skorzystaj z tej poprawionej wersji funkcji gdzie jest przekazywany jeszcze jeden argument na początku

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


chodzi o:

Cytuj:
*key_state - wskaźnik na zmienną w pamięci RAM (1 bajt) - do przechowywania stanu klawisza

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Sorki za małą pomyłkę oczywiście miały to być wejścia.
A co do warunku to dałbym dodatkowe nawiasy aby określić kolejność wykonywania porównania tak dla czytelności.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 22:00 
Offline
Nowy

Dołączył(a): 04 lut 2014
Posty: 4
Pomógł: 0

Panie Mikru jest Pan genialny :)
Dziękuję za pomoc.



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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