Forum: Mikrocontroller und Digitale Elektronik Portsparend und Bauteilsparend Tasten/Schalter und Status LEDs an AVR anschließen


von Marc (Gast)


Lesenswert?

Hi.

Ich will an einen AVR 12 Tasten und 4 Schalter anschließen und dafür 
möglichst wenige Portpins verbrauchen.
Ich will aber auch möglichst wenig "spezielle" Bauteile verwenden. Es 
sollten möglichst nur "standardbauteile" benutzt werden.

Die Tasten sollten nicht-blockierend sein, der Controller soll also in 
der Lage sein, Tastenkombinationen und das halten von Tasten zu 
erkennen.


Außerdem sollen 16 Status LED an den Controller angeschlossen werden.

Ich hatte nun vor, das alles über Schieberegister IC's zu machen, und 
alle 10 ms das Schieberegister "durchzutakten".

Oder gibts dafür auch ein einzelnes ic?

Könnte man das Tastenfeld und die LEDs auch noch mit einem kleinen 
128x64 G-LCD so kombinieren, dass alles nicht mehr als 8 Ports am uC 
braucht?

von Falk B. (falk)


Lesenswert?

@ Marc (Gast)

>Ich will an einen AVR 12 Tasten und 4 Schalter anschließen und dafür
>möglichst wenige Portpins verbrauchen.

Also 16 Pins (Muxen lohnt hier kaum).

>Ich will aber auch möglichst wenig "spezielle" Bauteile verwenden. Es
>sollten möglichst nur "standardbauteile" benutzt werden.

https://www.mikrocontroller.net/articles/Port-Expander_PCF8574

Braucht nur 2 Pins! Oder den großen 16 Bit Bruder, PCF????

>Außerdem sollen 16 Status LED an den Controller angeschlossen werden.

Auch kein Thema.

>Ich hatte nun vor, das alles über Schieberegister IC's zu machen, und
>alle 10 ms das Schieberegister "durchzutakten".

Geht auch.

https://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

>Könnte man das Tastenfeld und die LEDs auch noch mit einem kleinen
>128x64 G-LCD so kombinieren, dass alles nicht mehr als 8 Ports am uC
>braucht?

Seriell kannst du nahezu endlos viele IOs ansprechen. Viele LCDs haben 
I2C oder SPI.

von c-hater (Gast)


Lesenswert?

Marc schrieb:

> Ich will an einen AVR 12 Tasten und 4 Schalter anschließen und dafür
> möglichst wenige Portpins verbrauchen.
> Ich will aber auch möglichst wenig "spezielle" Bauteile verwenden. Es
> sollten möglichst nur "standardbauteile" benutzt werden.
>
> Die Tasten sollten nicht-blockierend sein, der Controller soll also in
> der Lage sein, Tastenkombinationen und das halten von Tasten zu
> erkennen.
>
>
> Außerdem sollen 16 Status LED an den Controller angeschlossen werden.

Dafür braucht man zusammen genau 12 Pins am µC. 2 Stück 4x4 Matrizen, 
für eine Dimension können die Pins zwischen beiden Matrizen "geshared" 
werden.

> Ich hatte nun vor, das alles über Schieberegister IC's zu machen, und
> alle 10 ms das Schieberegister "durchzutakten".

Ob das lohnt? Ich würde einfach einen µC mit genug Pins nehmen. Sowohl 
flächen- als auch kostenmäßig dürfte das am Ende deutlich günstiger 
sein...

von Marc (Gast)


Lesenswert?

Ich hatte ja schon überlegt, einen separaten AVR nur für die Tasten/LEDs 
und GLCD Ansteuerung zu nehmen und diesen einfach per TTL-RS232 an den 
Controller anzubinden, welcher dann die Steuerung des Gerätes übernimmt.

Dann hätte ich für das "user interface" ein "abgeschlossenes" 
Teilprojekt und am Steuercontroller einen geringen Pin Verbrauch. Aber 
man müsste später im Gerät 2 verschiedene Controller flashen, wenn man 
ein Update machen wollte.

von Michael U. (amiga)


Lesenswert?

Warum beide flashen?
Solange Du Anzahl der Tasten und Schalter nicht änderst und den 
Displaytyp beibehälst, brauchst Du doch da nie wieder ran.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Marc schrieb:

> Ich hatte ja schon überlegt, einen separaten AVR nur für die Tasten/LEDs
> und GLCD Ansteuerung zu nehmen und diesen einfach per TTL-RS232 an den
> Controller anzubinden, welcher dann die Steuerung des Gerätes übernimmt.

Das macht man nur, wenn irgendwelche Timing-Probleme drohen. Aber das 
Muxen von 1 1/2 4x4 Matrizen für manuelles IO dürfte nur bei sehr 
speziellen Projekten zu unlösbaren Timingproblemen führen...

> Dann hätte ich für das "user interface" ein "abgeschlossenes"
> Teilprojekt und am Steuercontroller einen geringen Pin Verbrauch.

Ja. Manchmal kann das tatsächlich sinnvoll sein. Nämlich dann, wenn 
wenigstens eine der beiden Einheiten in (wirklich vielen) 
unterschiedlichen Projekten eingesetzt wird.

> Aber
> man müsste später im Gerät 2 verschiedene Controller flashen, wenn man
> ein Update machen wollte.

Nichtmal das ist wirklich so. Das Pollen von Matrizen ist algorithmisch 
nicht gerade sehr anspruchsvoll, i.d.R. wird also auf einem dedizierten 
IO-Controller reichlich Flashspace "über" sein. Da kann man dann auch 
einen schicken Bootloader drin plazieren...

Das wäre dann etwa wie ein Treiberupdate für ein heutiges OS. Oft ist 
darin auch neue Firmware für die Prozessoren der Geräte enthalten, für 
die der Treiber zuständig ist.

von Klaus (Gast)


Lesenswert?

Marc schrieb:
> Ich hatte ja schon überlegt, einen separaten AVR nur für die Tasten/LEDs
> und GLCD Ansteuerung zu nehmen und diesen einfach per TTL-RS232 an den
> Controller anzubinden, welcher dann die Steuerung des Gerätes übernimmt.

Eine Art eigenen I2C Portexpander bauen, mit Tastenentprellen usw und 
GLDC. Möglicherweise zusätzlich ein Alert-Signal wie beim SMBus als 
Interrupt. Kann auch ein eigenes Board werden, wenn es konstruktiv Sinn 
macht, und läßt sich für mehrere Projekte einsetzen.

Michael U. schrieb:
> Warum beide flashen?
> Solange Du Anzahl der Tasten und Schalter nicht änderst und den
> Displaytyp beibehälst, brauchst Du doch da nie wieder ran.

PICs z.B. kann man fertig programmiert kaufen.

MfG Klaus

von Marc (Gast)


Lesenswert?

Also eine abgesetzte Bedieneinheit hätte schon was.

Dann braucht man mit Tasten usw auch nicht zu geizen. Und man kann mit 
Grafik-LCD die Messwertausgabe auch grafisch etwas aufpeppen. Man 
braucht dann ja nicht so aufs Timing oder Flash Verbrauch für die 
Anzeige zu schauen und in der Anlage kann man sich auf das wesentliche 
konzentrieren.

Parametrieren geht dann eben nur mit dem optionalen Bedienteil oder 
alternativ per PC und RS232.

An der Anlage selbst könnt ich dann mit weniger Tasten und LED 
auskommen.
Ich brauch dann eigentlich nur Start/Stop/Reset als Taste und als LED 
Power (Status), Run, und Alert.
Bei 6 Ports kann ich auch noch direkt anschließen.

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.