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?
@ 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.
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...
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.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.