www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I/O Pins einsparen


Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe sieben Leitungen von denen immer nur eine auf Masse gezogen 
wird (die anderen hängen in der Luft).

Bisher wollt ich diese 1:1 zum AVR ziehen, nur gehen mir langsam die I/O 
Pins aus.

Im Moment möchte ich einen ATMega644A nehmen.

Eigentlich müsste ich die 7 Leitungen in BCD (also Codieren) wandeln 
können und würde nur noch 3 Pins brauchen (ld(2) = 2,...).

Nur finde ich kein passendes Bauteil (bevorzugt SMD).

Stefan

Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
prioritätsencoder..

oder diodenmatrix

wenn es taster sind, die die leitung auf low ziehen, dann tastenmatrix 
3x4 =12 tasten...

gruß,
t

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
74HCT138 ist dein Freund;)

Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wohl kaum, jedoch 74151....

Autor: Anton (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

ich würde es mit einem Seriell-Parallel-Schieberegister
versuchen, hier brauchst Du nur 3 Leitungen, Takt, Data und
Strobe um die Daten zu laden. Baustein wäre z.B. 74HC594
oder CD4094.

Diese Art Porterweiterung habe ich an ATMEGAS schon mehrfach
erfolgreich verwendet.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Braucht nur einen Pin und kein IC: Verschiedene Widerstände dran, 
zusätzlich einen nach VCC, und dann per ADC die Spannung messen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wohl kaum, jedoch 74151....

Vieleicht sollte man mal die Frage klären ob Eingang
oder Ausgang?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird das ein TTL-Lotto? Der Prioencoder heisst '147.

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten S. schrieb:
> oder diodenmatrix

Deswegen wollte ich ursprunglich einen µC nehmen.

> 74151

Das sieht nach Programmieraufwand aus.

Aber mit der richtigen Richtung habe ich den 74HC148 gefunden.

Stefan

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Der Prioencoder heisst '147.

148 gibt es auch noch.

MfG Spess

Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...stimmt, jedoch lässt die Satzstellung der Beschreibung für mich erst 
nach deinem jetzigen Hinweis eine 5% ige Chance zu, das es die Ausgänge 
des Ucs sind die die Leitungen auf Low ziehen....

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Kuhne schrieb:
> Aber mit der richtigen Richtung habe ich den 74HC148 gefunden.

Nur brauch dafür Pull-Ups, oder?

Stefan

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten S. schrieb:

> ...stimmt, jedoch lässt die Satzstellung der Beschreibung für mich erst
> nach deinem jetzigen Hinweis eine 5% ige Chance zu, das es die Ausgänge
> des Ucs sind die die Leitungen auf Low ziehen....

Gibt schlechte Noten für's Kaffeesatzlesen. Wenn Leitungen in BCD 
gewandelt werden, codiert statt decodiert werden, dann sind es 
wehrscheinlich Eingänge am Controller. ;-)

Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmieraufwand eine binärzahl an einem Ausgang hochzuzählen und 
einen pin zu überprüfen zwischen jedem Zählschritt ob er low oder high 
ist!? Na Na Na, nun wird aber dramatisch...

Die Lösung mit den Schieberegíster hat übrigens auch eine Menge 
Vorteile...

Gruß,
T.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Kuhne schrieb:

> Nur brauch dafür Pull-Ups, oder?

Klar. Die ADC-Version braucht 1 IC weniger und 1 Widerstand mehr.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber mit der richtigen Richtung habe ich den 74HC148 gefunden.

Dann schmeiß ich noch nen 74165 auf den Markt.

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

um es nochmal klar zustellen.

Die Leitungen gehen zum µC sind also Eingänge.
Ich will dann erfahren, welche Leitung auf Masse gezogen wird.

Ich dachte es sei Klar, dass ich aus 7 Leitungen 3 machen will.
Ob die nun zum µC oder von ihm weg ist da sogar egal.

Stefan

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Kuhne schrieb:

> Ich dachte es sei Klar, dass ich aus 7 Leitungen 3 machen will.

Ok, dann scheidet die ADC-Variante natürlich aus. Denn die braucht nur 
einen Pin, nicht drei.

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten S. schrieb:
> Programmieraufwand eine binärzahl an einem Ausgang hochzuzählen und
> einen pin zu überprüfen zwischen jedem Zählschritt ob er low oder high
> ist!? Na Na Na, nun wird aber dramatisch...

Wenn ich das Datenblatt beim Überfliegen richtig gelesen habe, muss ich 
S0/S1/S2 passend setzen und bekomme dann an Y den Status der 
entsprechenden Leitung.

also muss ich im Programm die S Pins passend setzen und dann immer den 
Pin Prüfen.

Stefan

Autor: Thorsten S. (whitenoise)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nun hast du die Qual der Wahl...

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Ok, dann scheidet die ADC-Variante natürlich aus. Denn die braucht nur
> einen Pin, nicht drei.

Dann erklär bitte etwas ausführlicher.
Am besten mit IC (Datenblatt).

Bin nur halber E-Techniker und die Ausbildung ist noch länger her.

Stefan

Autor: Henk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gar kein IC sondern "Widerstandstreppe".

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Henk schrieb:
> Gar kein IC sondern "Widerstandstreppe".

Also je nachdem welcher auf Low sieht, ist die Spannungs anders.
Wie bringe ich das in einem Pin auf den µC?

Ist das ein A/D drin versteckt.
(Muss doch mal das komplette Datasheet drucken)

Stefan

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Kuhne schrieb:

>> Ok, dann scheidet die ADC-Variante natürlich aus. Denn die braucht nur
>> einen Pin, nicht drei.
>
> Dann erklär bitte etwas ausführlicher.
> Am besten mit IC (Datenblatt).
>
> Bin nur halber E-Techniker und die Ausbildung ist noch länger her.

Der Begriff Spannungsteiler ist bekannt?

               VCC
                |
                R0
                |
 ADC-Pin -------+-----R1----- Eingang 1
                |
                +-----R2----- Eingang 2
                |
                +-----R3----- Eingang 3
               usw

R1 != R2 != R3.

Wenn Eingang 2 auf Masse gezogen wird und alle anderen Eingänge offen 
sind, dann entsteht ein Spannungsteiler aus R0 und R2. Da alle 
Widerstände verschieden sind, ergibt sich für jeden Eingang eine andere 
Spannung.

IC wird keines benötigt, den ADC hat der Controller ja schon an Bord.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternative:

               VCC
                |
                R
                |
 ADC-Pin -------+----- Eingang 1
                |
                R
                |
                +----- Eingang 2
                |
                R
                |
                +----- Eingang 3
                |
               usw
                |
                +----- Eingang N

Hier dürfen alle Widerstände gleich sein.

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> IC wird keines benötigt, den ADC hat der Controller ja schon an Bord.

Ich dachte schon, die Pin Beschreibung im Pinout ist falsch.
Ich dachte der PortA ist ein Umwandler, aber das sind 8 A/D Wandler 
drin.
Dann gehen mir ja nicht mal Pins aus. Aber die Idee ist gut.

Muss ich mir im Datasheet ansehen, wie man das im Programm macht.
So ganz vorstellen kann ich mir das noch nicht.

Zu letzt habe ich das über einen externen am SPI machen müssen.

Stefan

PS:
> Der Begriff Spannungsteiler ist bekannt?

Bin Kommunikationselektroniker und werde bald Dipl.-Ing.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm den 74165. Kannste kaskadieren und beliebig viele
Tasten lesen;)

Autor: Stefan Kuhne (sk-ac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Alternative:

So kannte ich das.
Ist auch sicherlich was einfacher weill immer der selbe R bestückt 
werden kann.

Stefan

Autor: Shuzz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht aber nicht mit einer Matrix...

Autor: Spötter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bin Kommunikationselektroniker und werde bald Dipl.-Ing.

Muhahahahahahahhahahaha

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.