AVR: Anfänger - Frage zur Ansteuerung vieler Ein- und Ausgänge

OP #3074666
Lesenswert?

Hi liebes Forum!

Kurz zu mir, um klar zu stellen, meine Fragen werden vermutlich vielen 
Praktikern dämlich vorkommen: Ich bin Jens, ich habe Physik studiert im 
theoretischen Bereich, habe fast 0 Ahnung von Elektronik, bin aber recht 
fit bei Computern und kann auch bissi programmieren (C, C++, Python, 
damals auf dem 6502 Assembler). Ich möchte mit meinem Kumpel uC 
programmieren. Er ist "klassischer" Elektroniker, hat in seiner 
Ausbildung niemals mit uC gearbeitet und hat echt 0 Ahnung von 
Programmiersprachen, ist nicht seine Welt. Also: Aus dieser Symbiose 
heraus werden wir hoffen, ihr könnt uns helfen.

Meine erste Frage:
Ich möchte einen Atmega16 nehmen. Aber das ist vielleicht unwichtig. Nun 
möchte ich zum Beispiel 50 Tastschalter anbauen, die 50 Leuchtdioden an- 
oder ausschalten. Der Chip hat 4 Ports mit 8 bit. Wenn ich nur einen 
einzigen Port für Ausgang nehme, dann habe ich doch 256 Zustände. In 
meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten. Was 
man also braucht, ist sowas wie eine Logik hinter dem Ausgang (oder 
Eingang). Ich bin da auf Logik-ICs gestoßen... keine Ahnung. Ist das die 
Lösung? Also, so ganz theoretisch, ein Logik-Baustein, der 8 
Eingangs-Pins, und halt zum Beispiel 50 Ausgangs-Pins ;) Ihr versteht 
hoffentlich, was ich meine... wie läuft das in der Praxis? Danke für 
wohlwollende Kommentare!

Liebe Grüße,
Jens
Gast #3074709
Lesenswert?

Volker Kohl schrieb:
> Jeder Port kann 0 oder 1 werden. Mehrere Ports konnen ein Bitmuster
> ergeben. Das kann man natürlich wieder zerlegen und einen diskreten
> Ausgang draus machen. Thema Multiplexer auch denkbar. Das wird aber ne
> mords Schaltung. Was habt ihr denn vor?

Aber wie schließt man denn 50 LEDs an weniger als 40 Pins an?
#3074719
Lesenswert?

J. W. schrieb:

> Wenn ich nur einen
> einzigen Port für Ausgang nehme, dann habe ich doch 256 Zustände. In
> meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten.

Nö. das funktioniert nicht.
Denn du willst ja mehr als eine LED gleichzeitig brennen oder auch nicht 
brennen lassen.


Was du brauchst ist entweder einen Matrix-Aufbau mit Multiplexing oder 
eine Porterweiterung zb mit SChieberegistern.

AVR-Tutorial: Schieberegister

Für einen Anfänger sind Schieberegister wahrscheinlich einfacher, auch 
wenn der Hardware-Aufwand höher ist.
#3074732
Lesenswert?

Na, das sind doch die allerbesten Voraussetzungen für euch beide, 
unvoreingenommen an die Sache heranzugehen.

J. W. schrieb:
> Was man also braucht, ist sowas wie eine Logik hinter dem Ausgang (oder
> Eingang). Ich bin da auf Logik-ICs gestoßen... keine Ahnung. Ist das die
> Lösung? Also, so ganz theoretisch, ein Logik-Baustein, der 8
> Eingangs-Pins, und halt zum Beispiel 50 Ausgangs-Pins ;)
Wenn das ferig ist, nennt man das TTL-Grab.

Vergiss mal, daß ein Port 8 Pins hat und daß du damit 256 Ausgänge 
adressieren kannst. Das ist ja gerade dein Gedankengang. ICs mit 8 
Eingängen und 256 "geschalteten" Ausgängen gibt es nämlich so nicht.
Die Frage ist erstmal, was das für Leds sein sollen. High-Power für 
Beleuchtungszwecke oder 2- bzw 20mA für Anzeigen.

Für 50 Taster brauchst du eine Matrix. Der Controller in der Tastatur 
unter deinen Fingern hat auch keine 100 und irgenwas Eingänge.
7 x 7 = 49. Also für 49 Tasten benötigst du 7 Eingänge und 7 Ausgänge.

Tastaturmatrix, Multiplexen sind die Stichworte.
Und vorher: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Und dann step by step. 1 Taste, 1 LED.

mfg.
OP #3074819
Lesenswert?

Hey Leute,

danke schon mal!
Das mit dem multiplexen und der Matrix klingt super.
Aber absolut korrekt: Natürlich sind erste Erfahrungen mit nem Testboard 
das a und o. Meines ist hoffentlich vor dem Wochende da.
Dann geht es los! Heute kam ein Buch, von Schäffler, AVR. Da lese ich 
schon mal bissi schlau, will euch ja nicht wegen jedem kleinen Murks 
befragen. Danke!

Bis bald,
Jens
Gast #3074883
Lesenswert?

Nur noch 2 Sachen:
>In meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten
Ja aber immer nur eine zur gleichen Zeit.
Auch bei anderen Lösungen Vorsicht: 128 Leuchtdioden brauchen richtig 
Strom und die Treiber müssen den auch aushalten.
Gast #3074887
Lesenswert?

> In meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten. Was
> man also braucht, ist sowas wie eine Logik hinter dem Ausgang (oder
> Eingang). Ich bin da auf Logik-ICs gestoßen

Dein Logik-IC heisst 74HC259, der speichert den Zustand der LED. Am 
Eingang für die Tasten heisst er 74HC151.

> wie läuft das in der Praxis?

Sowohl bei LEDs als auch bei Tasten macht man es meist anders. Entweder 
Schieberegister wie 74HC595 für Ausgänge und 74HC165 für Eingänge  weil 
die noch weniger I/O Pins vom uC benötigen

Oder Multiplexing sowohl bei LEDs als auch von Tastern in Matrixanordung 
( also x * y )

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren