Forum: Mikrocontroller und Digitale Elektronik I/O Pins einsparen


von Stefan K. (sk-ac)


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

von Thorsten S. (whitenoise)


Lesenswert?

prioritätsencoder..

oder diodenmatrix

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

gruß,
t

von holger (Gast)


Lesenswert?

74HCT138 ist dein Freund;)

von Thorsten S. (whitenoise)


Lesenswert?

wohl kaum, jedoch 74151....

von Anton (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>wohl kaum, jedoch 74151....

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

von (prx) A. K. (prx)


Lesenswert?

Wird das ein TTL-Lotto? Der Prioencoder heisst '147.

von Stefan K. (sk-ac)


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

von spess53 (Gast)


Lesenswert?

Hi

>Der Prioencoder heisst '147.

148 gibt es auch noch.

MfG Spess

von Thorsten S. (whitenoise)


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

von Stefan K. (sk-ac)


Lesenswert?

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

Nur brauch dafür Pull-Ups, oder?

Stefan

von (prx) A. K. (prx)


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. ;-)

von Thorsten S. (whitenoise)


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.

von (prx) A. K. (prx)


Lesenswert?

Stefan Kuhne schrieb:

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

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

von holger (Gast)


Lesenswert?

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

Dann schmeiß ich noch nen 74165 auf den Markt.

von Stefan K. (sk-ac)


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

von (prx) A. K. (prx)


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.

von Stefan K. (sk-ac)


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

von Thorsten S. (whitenoise)


Lesenswert?

nun hast du die Qual der Wahl...

von Stefan K. (sk-ac)


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

von Henk (Gast)


Lesenswert?

Gar kein IC sondern "Widerstandstreppe".

von Stefan K. (sk-ac)


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

von (prx) A. K. (prx)


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.

von (prx) A. K. (prx)


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.

von Stefan K. (sk-ac)


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.

von holger (Gast)


Lesenswert?

Nimm den 74165. Kannste kaskadieren und beliebig viele
Tasten lesen;)

von Stefan K. (sk-ac)


Lesenswert?

A. K. schrieb:
> Alternative:

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

Stefan

von Shuzz (Gast)


Lesenswert?

Geht aber nicht mit einer Matrix...

von Spötter (Gast)


Lesenswert?

>Bin Kommunikationselektroniker und werde bald Dipl.-Ing.

Muhahahahahahahhahahaha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.