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
Um ehrlich zu sein, kann ich dir nicht ganz folgen mit deiner Rechnung bzw. deine Intention ganz verstehen, aber ich glaube, dass du etwas suchst, das sich Multiplexing nennt.
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?
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?
Nur eine kleine Hilfe bei der Suche: Tastatur Beispiel http://www.avr-asm-tutorial.net/avr_de/keypad/keyboard.html Realisierung einer Ansteuerung von vielen LEDs findet ihr z.B. LED Cubes http://www.youtube.com/watch?v=6mXM-oGggrM (Beispielvideo)
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.
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.
al3ko schrieb: > Aber wie schließt man denn 50 LEDs an weniger als 40 Pins an? schliess z.B. nen MAX7219 an drei Pin davon an, an dem kannst du dann 64 LEDs anschliessen. Du kannst die MAX dann kaskadieren und an jedem 64 LED weitere anschliessen, ... es gibt aber auch noch zig andere Lösungen.
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
Auf die Schnelle: Multiplexen, Seriell-/Paralellwandler oder I²C Erweiterungen.
Mal ne Anregung zum Selbergoogeln: Hab ein Projekt zu einem "Sternenhimmel" in Erinnerung, das aus dem universitären Umfeld stammte. Elektronik und µC-Steuerung schön dokumentiert.
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.
> 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 )
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.