Pages: [1] 2 3 4   Go Down
Author Topic: 4 zu 16 Decoder in anderer Form  (Read 2575 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,

Ich suche seit Tagen ein IC, welches folgende Wahrheitstabelle erfüllt:

Code:
INPUT OUTPUT
D C B A Q15 Q14 Q13 Q12 Q11 Q10 Q9 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
0 0 0 0 L L L L L L L L L L L L L L L H
0 0 0 1 L L L L L L L L L L L L L L H H
0 0 1 0 L L L L L L L L L L L L L H H H
0 0 1 1 L L L L L L L L L L L L H H H H
0 1 0 0 L L L L L L L L L L L H H H H H
0 1 0 1 L L L L L L L L L L H H H H H H
0 1 1 0 L L L L L L L L L H H H H H H H
0 1 1 1 L L L L L L L L H H H H H H H H
1 0 0 0 L L L L L L L H H H H H H H H H
1 0 0 1 L L L L L L H H H H H H H H H H
1 0 1 0 L L L L L H H H H H H H H H H H
1 0 1 1 L L L L H H H H H H H H H H H H
1 1 0 0 L L L H H H H H H H H H H H H H
1 1 0 1 L L H H H H H H H H H H H H H H
1 1 1 0 L H H H H H H H H H H H H H H H
1 1 1 1 H H H H H H H H H H H H H H H H

Die normalen Decoder schalten ja immer nur einen Pin durch. Gibt es das in dieser abgewandelter Form bzw. wie kriege ich die Funktion am besten hin?

3 zu 8 wäre auch ok, sowie vertauschte Pegel smiley-cool

Danke bereits!
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Germany
Online Online
Faraday Member
**
Karma: 56
Posts: 2980
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kann man wohl mit Standard-Logik Bausteinen irgendwie hinkriegen, aber ...
... Wo sind wir denn hier ?

Wie wäre es mit einem atmega8 oder einem Arduino oder so? 
20 Digital Signale kommt doch genau hin.

Logged

Offline Offline
Faraday Member
**
Karma: 97
Posts: 3514
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sowas ist eigentlich das Gebiet von GALs, PALs und CPLDs. Aber da braucht man wieder ein Programmiergerät...
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich möchte möglichst wenige Pins am arduino "verschwenden" um möglichst viele Bit-Ausgänge zu haben.

Dachte jemand hätte so etwas in der Art vllt schon mal gelöst z.B. über einen seriellen I/O Baustein, wovon ich wiederum (noch) keine Ahnung habe.
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21185
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dann nimm Schieberegister wie den 74HC595 oder Port Expander wie den MCP23009 / MCP23017 oder PCF8574 / PCF8575. Da kannst Du jeden einzelnen Ausgang setzen oder löschen. Die Port Expander können nach belieben Pin für Pin als Eingang oder Ausgang benutzt werden.
Beispiele zur Ansteuerung findest Du im Playground: zB http://playground.arduino.cc/Code/I2CPortExpander8574 http://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/overview
Grüße Uwe
Logged

Offline Offline
Faraday Member
**
Karma: 97
Posts: 3514
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn du eine separate Lösung wolltest (und ein entsprechendes Programmiergerät hast) ist für sowas der Vorschlag mit dem Atmega8 gut.

Ich habe sowas auch schon mal gemacht. Ironischerweise gerade um einen GAL zu ersetzen smiley
Hatte mal ne Maschine zum reparieren bei der die Umsetzung der Schrittmotor-Ansteuersignale in die Schrittfolgen in einem GAL gemacht war. Programmiergerät war sogar da, aber der Baustein war soweit zerschossen dass ich ihn nicht mehr auslesen konnte. Da ich auch keine Erfahrung hatte sowas zu programmieren habe ich einen Atmel AT89C2051 genommen, etwa 30 Zeilen Assembler programmiert und schon liefs wieder smiley


Schieberegister sind auch hier sehr schön erklärt:
http://arduino.cc/en/Tutorial/ShiftOut

Da brauchst du dann zwei davon und schiebst dir dann je nach dem Zustand von ABCD andere Werte raus. Ist sicher das einfachste hier.
« Last Edit: July 06, 2013, 04:44:23 am by Serenifly » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Schieberegister hab ich ja völlig vernachlässigt smiley-fat

Arbeite mich jedoch erst mal bei dem Port-Expander ein. Die Lösung gefällt mir mehr als das Schieben.

Vielen Dank für die schnellen Antworten smiley-cool
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21185
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beim Port expander wird auch geschoben (zwar über I2C bzw SPI)
Der Vorteil der Port Expander liegt darin, daß die Pins einzeln als Eingänge oder Ausgänge programmiert werden können. Der Nachteil ist daß bei I2C nur 3 Adresspin vorhanden sind und darum nur 8 gleiche ICs am Bus hängen können. Bei SPI braucht jedes IC ein Enable-Pin vom Arduino. Darumist auch hier die Anzahl der Adressierbaren ICs begrenzt.

Vorteil der Schieberegister ist daß viele hintereinandergeschaltet werden können. Bei mehr als ca 5 braucht es Treiber um genügend Strom zu haben soviele CLK uns Enable  Pins paralell anzusteuern.

Grüße Uwe
Logged

Offline Offline
Faraday Member
**
Karma: 97
Posts: 3514
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Strom? Fan-Out? Wir sind hier doch nicht bei TTL smiley Die HC Serie hat einen Eingangsstrom von ca. 1µA
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21185
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Statischen Eingangstrom vieleicht; aber es braucht einen Strom um den Zustand eines Eingangs zu ändern ( Gate-Source Kapazität)

Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Schieberegister kommt nicht in Frage.
Die geforderte Funktion kann nicht erfüllt werden.

Das ganze soll am Ende eine "Balken"-Anzeige mit LEDs werden.
Um eine möglichst hohe Auflösung des darzustellenden Analogwertes hinzubekommen, brauche ich eben so viele Pins. Das Analogsignal ändert sich sehr schnell und die Anzeige soll mit min 2Hz aktualisiert werden.

Ansteigender Wert ist ja kein Problem mit dem Schieben. Das Absinken jedoch smiley-roll-blue
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Wien
Offline Offline
Edison Member
*
Karma: 26
Posts: 1836
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

Quote
Ansteigender Wert ist ja kein Problem mit dem Schieben. Das Absinken jedoch

??????

gruß stefan
Logged

Offline Offline
Faraday Member
**
Karma: 97
Posts: 3514
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist nicht wie das Schieberegister funktioniert. Geschoben wird um die seriell/parallel-Wandlung zu erreichen. Du schiebst da immer alle 16 Werte auf einmal rein. Wenn du eine neue Zeile willst werden 16 neue Werte eingeschoben.

Es gibt auch Schieberegister bei denen man die Schieberichtung einstellen kann. Aber das ist hier nicht nötig!

2Hz ist alle 500ms. Das ist eine Ewigkeit.
« Last Edit: July 06, 2013, 12:17:47 pm by Serenifly » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

??????

gruß stefan

Dann klär mich bitte auf, wie ich das darüber "einfach" lösen kann.

Sinkt das Signal ab, kommt natürlich ein LOW Aufs Register, die dann eben durchwandert. Jedoch soll in dem Fall das letzte (Höchstwertigste) HIGH-Signal zum LOW werden.

beispiel:
0000000011111111 steigt an
0000000111111111
0000001111111111 jetzt soll es sinken
0000000111111111
0000000011111111

mit dem Schieben kann nur die erste bzw. letzte Stelle beinflusst werden.
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist nicht wie das Schieberegister funktioniert. Geschoben wird um die seriell/parallel-Wandlung zu erreichen. Du schiebst da immer alle 16 Werte auf einmal rein. Wenn du eine neue Zeile willst werden 16 neue Werte eingeschoben.

Es gibt auch Schieberegister bei denen man die Schieberichtung einstellen kann. Aber das ist hier nicht nötig!

2Hz ist alle 500ms. Das ist eine Ewigkeit.

So sieht das ganze dann anders aus. Also kann ich die werte Seriell reinladen und die Ausgabe erst aktivieren, wenn alle da sind? Oder versteh ich das jetzt falsch?
Mit "2Hz ist alle 500ms. Das ist eine Ewigkeit." gehe ich davon aus, dass das auch schneller geht?
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Pages: [1] 2 3 4   Go Up
Jump to: