Ressourcen sparendes LED-Array gelatched unter BASCOM-AVR

Markus

BASCOM-Experte
11. Jan. 2008
1.190
6
38
Lonsee
Sprachen
Hallo zusammen, guten Abend,

schon fast am Ende meiner Prototypen-Phase für meine Wintergarten-Steuerung angekommen kam ich auf die Idee, einige Stati des System sowie die einzelnen Tasten meiner 3x3 Tastenmatrix mit LED's zu versehen. Beim Durchzählen der benötigten LED's kam ich auf 16 Stück. Uff!
Nur dumm, dass bei den verbleibenden Ressourcen meines ATmega128 kaum mehr freie PINs übrig waren und schon garkeine 16 Stück mehr.

Also überlegte ich mir eine Lösung die ich Euch hier kurz vorstellen möchte.

Zum Einsatz kam nach kurzer Recherche im Internet ein Baustein der sich SN74116 schimpft und bei dem es sich um ein 4-Bittiges Duo-Latch handelt welches über zwei Adress-Eingänge und einen Latch-Clear Eingang verfügt. Davon habe ich zwei Stück auf mein PCB geschnallt. Hinzu kommt noch ein NOT-Gatter für die Adresslogik und schon war die Lösung fertig.

Ressourcen:
- 4 freie Ausgänge für die Datenbits Data0 bis Data4
- 2 freie Ausgänge für die Adressen Adr0 und Adr1
- 1 freier Ausgang für Clear Latch auf den ggf. auch noch verzichtet werden könnte.

Lösung:
Damit ist eine sehr Ressourcen sparende Lösung entstanden, welche aber ganz gut funktioniert.
In meinem Beispielcode der zum großen Teil wieder aus Testsequenzen und Kommentaren besteht findet Ihr eine Funktion Led_update_array welche zentrale Schlüsselstelle ist. Mit ihrer Hilfe wird eine 16-Bit Variable auf das Latch geballert.
Damit ergibt sich für das restliche Programm eine schöne Methode. Mit SET und RESET können einzelne Bits in der Word-Variable gesetzt und rückgesetzt werden. Wann immer man ein Update der LED's benötigt wird die Funktion Led_update_array aufgerufen. Fertig!

Die Lösung hat einen Schönheitsfehler. Durch die Belegung der restlichen PIN's auf meinem Mega war e smir nicht möglich die Adressen zusammen auf einen Port zu legen. Somit mussich immer sequentiell zuerst das eine oder das andere Bit schalten. Dies führt zu unschönen "Flackereffekten" bei denen man genau wissen sollte was man tut weil man sich sonst entweder das Low-Nibble oder Nibble 2 überschreibt. Wenn Ihr also die Möglichkeit habt zwei PINs in einem Port zu spendieren dann macht es über direkte Portzugriffe und schreibt die Adresse auf einmal auf den Port. Kommentare zu dem Thema sind noch an diversen Stellen im Programmcode enthalten.

Und noch was:
So, in Betrieb genommen habe ich das ganze mit einem ATmega128 auf einem STK500 + STK501 mit 16 MHz extern unter BASCOM-AVR.

Vielleicht kanns ja jemand brauchen.

Wie gewohnt findet Ihr im Anhang Sourc-Code, Schaltplan und Listing.

Damit sind meine Einzelteile als Prototypen soweit fertig und am Laufen. Die Einzelteile habe ich alle hier im Forum veröffentlicht. Jetzt werde ich micht ersmal einEAGLEn und alles zusammensetzen bis letzlich die eigentliche Wintergartensteuerung fertig dabei rauskommt. Wir werden sehen :D

Grüße,
Markus
 

Anhänge

  • LED-Array.zip
    4,8 KB · Aufrufe: 25
  • LED-Array_SCH.gif
    LED-Array_SCH.gif
    47,2 KB · Aufrufe: 82
  • LED-Array.gif
    LED-Array.gif
    78,5 KB · Aufrufe: 55

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)