-
-
Erfahrener Benutzer
Robotik Einstein
Diese Portexpander kann man auch über Schieberegister realisieren.
Wir haben bei unserem derzeigiten Projekt ( Klimaanlagensteuerung ) einen ATMEGA 64 verbaut.
Als Schieberegister haben wir da drei 74HC165 ( parallel in , seriell out ) verwendet, um damit 24Taster einzulesen.
Die Kaskade wäre allerdings noch beliebig erweiterbar.
Das Ganze braucht 3 Ports des Controllers ( S-DATA, !EN, Clock ).
Wenn man mag kann man auch noch den INH Pin auf den Controller legen.
Der ATMEGA 64 - und auch andere AVR Controller - haben einen sog. SPI Bus in Hardware realisiert.
Mit diesem Bus kannst Du die Schieberegister, die bei uns in Reihe geschaltet sind wunderbar einlesen.
SPI Bus starten ( Library im Compiler ), 8 Bits aus dem SPI Datenregister abholen. Nächsten Block starten - Einlesen usw.
Es gibt auch Schieberegister mit Seriell in Parallel out, die man auch über SPI ansteuern kann um damit z.B. Leuchdioden zu treiben.
Man kann natürlich so eine SPI auch recht einfach in Software realisieren und somit mehrere Busse realisieren.
Ich würde an deiner Stelle die Hardware SPI für die Tastenabfrage verwenden und eine Software SPI für die Leuchtdioden Ausgabe verwenden. Ein weiterer Tipp von mir wäre Low Current LED's mit 2mA zu verwenden - die kann fast jeder Chip noch direkt treiben.
Die Tastenabfrage starte ich in unserer Anwendung alle 20ms und löse nur eine Aktion aus, wenn sich zum vorherigen Tastenbild was geändert hat. Damit ist dann auch gleich eine Tastenentprellung realisiert.
Die LED - SPI brauchst Du ja nur anzustoßen, wenn sich da was ändert.
Zur Sicherheit kann man aber auch alle 0,5...1 sek das aktuelle LED Bild senden.
I²C verwende ich persönlich nicht so gerne, weil man sich da relativ tief in die Materie einarbeiten muß um die richtigen Steuersequenzen, in der richtigen Reihenfolge zu generieren.
Von der Portanzahl her gibts aber kaum was sparsameres ( 2 Ports [ SDA, SCL ] ). Ein I²C Bus ist auch bei sehr vielen AVR Controllern in Hardware auf dem Chip und heisst dort TWI ( Two Wire Interface ) - Wohl aus lizenzrechlichen Gründen.
Um auch etwas höhere Lasten treiben zu können SSR- Relais oder kleine Motoren, verwende ich gerne ULN 2803.
Wenn Du uns sagst, welche Hardware mit welcher Anzahl Du verwenden willst, könnten wir Dir helfen einen passenden Controller zu finden.
Für mein neuestes Projekt ( MiDi Merger ) hab ich einen ATMEGA 1280 geplant, weil dieser 4 Hardware USART's hat, die ich als MiDi Eingänge verwenden will. Der ATMEGA 64 hat 2 USARTS - falls das interessiert.
Als LCD Display nehm ich gerne die 2x16 Zeichen Dotmatrix Displays von Pollin ( Best.Nr. 120 421 ), weil günstig und "schön" in Blau.
So ein Display braucht einen kompletten Port mit 7 bis 8 Leitungen.
Diese Dotmatrix Displays gibts bis 4*40 Zeichen, die dann aber schon recht teuer werden. Die meisten Compiler haben schon eine fertige Lib für diese Displays dabei.
Wenn Du dein Teil in ein 1HE 19" Gehäuse verfrachten willst, kannst Du z.B. auch ein LCD 204SW DIP von Reichelt nehmen, das aber dann schon mehr kostet.
Eine weitere Alternative wären auch noch rein grafische Displays wie das 120 424 von Pollin, die aber mehr Ports und mehr Rechenleistung vom Controller verlangen, da ja jedes einzelne Pixel des 128x64 Displays angesteuert werden muß.
Für die wirst Du Dir aber eine Library aus dem Internet holen müssen. Ausserdem wird hierbei meistens eine Zeichentabelle benötigt, in der die Form, Aussehen und Größe der Buchstaben und Zahlen festgelegt wird.
Ein einfaches Startbild benötigt da schon mal 1kB.
Nun hast Du ja wieder mal was zu Lesen und zu Recherchieren.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen