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

Dwa klawisze na jednym pinie.

10 Cze 2007 11:01 1618 10
  • Poziom 27  
    Kilka lat temu mialem sytuacje, ze musiale podpiac dwa klawisze do jednego pina wejsciowego (AT90S8535). Nie bylo mowy o wiekszych zmianach sprzetowych, a klawiszy musialo byc wiecej. W koncu udalo mi sie znalezc rozwiazanie (dziala do dzisiaj). Ciekaw jestem czy ktos mial podobny problem i czy byly tu na forum podawane jakies rozwiazania? Port normalny, wejsciowy cyfrowy (nie przetwornika A/D).
  • Poziom 27  
    Na szybko wpada mi takie rozwiazanie do głowy:
    Oba klawisze podlaczone do portu poprzez proste układy podtrzymywania impulsu zbudowane na kondensatorze i rezystorze, ew jeszcze dioda. Dla kazdego przycisku, nazwijmy je P1 i P2, inna stała czasowa. Procesor po odebraniu sygnalu z pinu wejsicowego sprawdza czy po ustalonym czasie dalej wystepuje ten stan i przypisuje odpowiednio wcisniecie klawiszowi P1 lub P2 :) Cos takiego ?
  • Poziom 27  
    Hm... wejscia bez schmidta moga miec problemy, ale pomysl jakis jest, jest nawet szansa ze to by dzialalo:) Ale jest prostsze i bardziej eleganckie (oraz pewne) rozwiazanie:)
  • Poziom 18  
    Jeden pin zwierający do masy, a drugi podciągający? Przełączając wewnętrzne podciąganie dałoby się prawidłowo oba rozpoznać.
  • Poziom 27  
    No, widze ze nikt prawie sie nie odezwal:) Zrobilem to tak - dopiolem oba klawisze do tego pina, jeden klawisz do masy, drugi do + (dodatkowo opornik od dowolnej strony np. 200Ohm zabezpieczajacy przed zwarciem w momencie wcisniecia obu klawiszy). Miedzy pin a mase opornik, nie pamietam dokladnie jaki - kilkadziesiat kilo, kilka razy wiekszy od wewnetrznego podciagajacego do +. Program obslugi klawiszy robi tak - wylacza wewnetrzne podciaganie, zostaje zewnetrzne do masy, jezeli zaden klawisz nie nacisniety odczytuje 0. Wlaczam wewnetrzne podciaganie - zewnetrzny opor jest kilka razy wiekszy, wiec na pinie jest napiecie bliskie +, jezeli zaden klawisz nie nacisniety odczytuje 1. Natomiast jezeli nacisniety jest klawisz od masy to oba odczyty sa 00, jezeli nacisniety od + to oba sa 11. Dziala bardzo sprawnie:) Myrcioch byl blisko (mozna powiedziec ze rozwiazal problem).
  • Poziom 31  
    No to użyłeś 2 przycisków i 2 rezystorów. A ten problem można rozwiązać 1 rezystorem. Ciekawe czy wymyślisz jak :)
  • Poziom 35  
    Jeden przycisk bezpośrednio do portu, a drugi przez jakiś b.duży rezystor znacznie większa wartość niż wewnętrzny rezystor podciągający.

    Teraz podczas testów włączając/wyłączając wew. rezystor podciągający możemy sprawdzić stan przycisku z rezystorem (o ile nie jest wciśnięty przycisk podłączony bezpośrednio)
  • Poziom 25  
    Minusem jest jednak to, ze nie ma mozliwosci detekcji wcisniecia obu przyciskow na raz. Ale pomysl ciekawy.

    BF
  • Poziom 27  
    Mysle ze nie da sie jednym - jeden opornik musi byc ZAWSZE dopiety do pina (ten duzy), poniewaz w przypadku jak nie jest wcisniety zaden klawisz a do pina nie bedzie dopiety zaden opornik, to po wylaczeniu wewnetrznego podciagania odczytany stan bedzie przypadkowy - nie da sie odroznic wtedy brak wsisniecia od wcisniecia jednego z przyciskow. Dlatego sposob MirkaCz nie bedzie dzialal.

    Dodano po 8 [minuty]:

    Mozna powiesic np. na 6 pinach 12 klawiszy, podczas gdy w matrycy tylko 9. Na 7 - 14, w matrycy 12, na 8 - 16 w matrycy tez 16, wiec od 8 pinow traci sens.
  • Poziom 31  
    Jeden klawisz do masy, drugi przez mały rezystor (np. 1k) do plusa.

    Pierwszy przycisk testuje się standardowo - port jako wejście z podciąganiem. Stan drugiego klawisza nie wpływa na odczyt pierwszego.

    Drugi klawisz testuje się sekwencją:
    - pin jako wyjście, stan niski
    - pin jako wejście BEZ podciągania (zerowanie 1 bitu)
    - odczyt stanu na wejściu

    Jeśli oba klawisze są puszczone to odczyt wskaże zero (wykorzystuje się tu pojemność wejściową bramki). Jeśli klawisz drugi jest wciśnięty odczyta się jedynka. Niestety klawisz pierwszy również wymusi zero, dlatego nadaje się to tylko dla klawiszy które będą naciskane osobno.
  • Poziom 27  
    William Bonawentura napisał:
    Jeden klawisz do masy, drugi przez mały rezystor (np. 1k) do plusa.

    Pierwszy przycisk testuje się standardowo - port jako wejście z podciąganiem. Stan drugiego klawisza nie wpływa na odczyt pierwszego.

    Drugi klawisz testuje się sekwencją:
    - pin jako wyjście, stan niski
    - pin jako wejście BEZ podciągania (zerowanie 1 bitu)
    - odczyt stanu na wejściu

    Jeśli oba klawisze są puszczone to odczyt wskaże zero (wykorzystuje się tu pojemność wejściową bramki). Jeśli klawisz drugi jest wciśnięty odczyta się jedynka. Niestety klawisz pierwszy również wymusi zero, dlatego nadaje się to tylko dla klawiszy które będą naciskane osobno.


    Ale to tez dosc malo niezawodna metoda, pojemnosc wejsciowa bramki to kilka pf, wystarczy ze klawisze beda na kabelkach wiecej niz 10cm. albo w poblizu elementow silnie promieniujacych (zmienne wieksze prady) i prawdopodobnie beda problemy.