www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik zwei Taster mit unterschiedlicher Funktion an einem I/O Pin


Autor: Parity 231a (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie ist soetwas moeglich?
ich moechte an einem I/O Pin zwei Taster anschliessen, die jeweils
etwas anderes bewirken, also der uC entscheiden kann welche Taste
gedrueckt wurde.
Geht das eventuel mit Kondensatoren (oder etwas ähnlichem), das wenn
ein Taster gedrückt wurde, er ein längeres Signal erzeugt als der
andere bei normalem Druck?
Ansonsten wuerde ja auch ein Schieberegister gehen, was ständig
abgefragt wird, aber das würde relativ viel Strom verbrauchen und etwas
unflexibel sein, denke ich, oder?

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du einen ADC-Eingang hast, kannst Du mit verschiedenen geschaltenen
Rs Spannungsteiler machen.

Oder Du schaltest einen C dran, schaltest auf Ausgang, gibst high aus,
schaltest auf Eingang und misst die Zeit, bis er low wird.
Je nach Belastungs-R wird das verschieden lange dauern.
Mit 2 Tastern gibt es ja 4 Möglichkeiten.

Autor: Parity 231a (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe keinen ADC-Eingang, sondern es ist nur ein normaler Pin am uC.
Die anderen Pins sind bereits belegt.
Also mit einem C wuerde das gehen? Das er eine Taster z.B. keinen C
hat, bei dem anderen zwischen uC und Taster ein C ist und bei Druck der
Tasten, der Taster mit dem C laenger high ist, bei gleicher
tasterdrueckzeit im Vergleich zum anderen Taster? oder habe ich das
falsch verstanden?

Autor: Ingo Henze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas ähnliches hatten wir schon mal.
Es gibt da einen Trick unter Ausnutzung des internen
Pullup-Widerstandes:
http://www.mikrocontroller.net/forum/read-1-87272.html

Das ganz funktioniert prinzipiell auch in der umgekehrten Richtung,
also mit einem I/O zwei unterschiedliche Sachen schalten.

Gruß
Ingo

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal:
Pin  -  C       - Gnd
Pin  -  R1 - T1 - Gnd
Pin  -  R2 - T2 - Gnd
R1!=R2 z.B. R1=1kOhm   R2=2kOhm
Wenn Du Pin auf Ausgang setzt, wird der C geladen.
Dann auf Eingang schalten.
Wenn Eingang nach Zeit1 low: beide Taster waren gedrückt (R1 und R2
parallel haben den C schnell entladen)
Wenn Eingang nach Zeit2 low: T1 war gedrückt
Wenn Eingang nach Zeit3 low: T2 war gedrückt
Wenn Eingang nach Zeit4 immer noch high: kein Taster war gedrückt

Es gibt noch eine andere Möglichkeit, kommt darauf an, was an den
anderen Pins hängt:
kannst Du einen Ausgang evtl. kurz auf Eingang schalten, einen Taster
(liegt über einen R dran, damit es keinen Kurzschluss gibt) einlesen
und gleich wieder auf Ausgang?

Autor: Parity 231a (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah, okay, vielen Dank,
werde ich nachher mal ausprobieren.
Wie groß muesste der Kondensator ungefaehr sein?
Wie schnell kann man so die taster abfragen?

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probier mal im Bereich 1-100nF, kommt auf die Rs an.
Die Zeit musst Du mir einer Schleife messen und die mittleren Werte zum
Vergleichen verwenden.

Aber schau Dir auch mal das pdf im o.g. Thread an.

Die haben zwar auch einen C am Eingang, aber der hat eher die Aufgabe,
Spikes (kapazitive Kopplung) bei offenem Eingang zu glätten.
Du brauchst keine Timer, evtl nur ein paar NOPs, damit der C über den
internen PullUp geladen werden kann.

Und überleg, ob Du nicht ein anderes Pin ab und zu für ein paar µs als
Eingang für einen Taster missbrauchen kannst.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.