Nabend zusammen,
ich hoffe mir kann jemand helfen. Ich brauche für ne Schaltung ne
einfache Verknüpfung (A^C)v(B^D) und das mehrmals, quasi nen
2to1-Multiplexer.
Ich suche eigentlich den hier:
http://focus.ti.com/lit/ds/symlink/sn74lv157a.pdf
Das ist genau das was ich brauche, wenn die zwei ANDs und den Inverter
ganz unten nicht da wären.
Gibt es sowas als IC? Ich könnte das zwar auch auch mit zwei ICs
aufbauen (74x08 und 74x32), jedoch möchte ich das möglichst klein
aufbauen. Von daher wäre es von Vorteil, wenn das alles in einem IC
wäre.
MfG
Daniel
Peter Roth schrieb:
> 3 NAND-Gatter aus einem 74x00 richtig verschaltet.
Jau prima Idee, danke. Leider brauche ich das mindestens zwei mal, also
sechs Gatter, sodass ich mit einem IC nicht hinkomme. Aber auf jeden
Fall besser, da ich dann nur noch einen Typ IC brauche.
hp-freund schrieb:
> NC7SB3257
Das ist doch genau das Gegenteil von dem was ich will, oder? Und auch da
sind die drei Gatter drin, die ich nicht haben will.
A. K. schrieb:
> Gab es in der Anfangsphase der TTLs mal als AND/OR und AND/OR/INV Gates,> Nummernkreis SN7450-55, sind aber wohl ausgestorben.
Danke auch für den Tipp. Aber ich habe nichts Verfügbares in der
Richtung gefunden.
Daniel schrieb:
> A. K. schrieb:>> Gab es in der Anfangsphase der TTLs mal als AND/OR und AND/OR/INV Gates,>> Nummernkreis SN7450-55, sind aber wohl ausgestorben.>> Danke auch für den Tipp. Aber ich habe nichts Verfügbares in der> Richtung gefunden.
Der 74x51 geht ja schon in die richtige Richtung und ist auch noch
erhältlich, nur dass sein Ausgang invertiert ist. Kannst du nicht im
nachfolgenden Schaltungsteil etwas ändern, damit das nicht mehr stört?
Wenn du sonst überhaupt nichts findest und der Platzbedarf höchste
Priorität hat, bleibt noch ein GAL.
Oh, vollkommen übersehen, dass jemand geantwortet hat.
Ich hatte falsch gesucht und deswegen nichts gefunden... Der 7451 ist in
der Tat fast das was ich suche, jedoch leider nur fast ;)
Um mal ein wenig Licht in die Sache zu bringen: Ich möchte für nen
Freund ne kleine Adapterplatine für eine Art Selbstbaufernbedienung (FB)
bauen. Die Platine ist dafür da widerstandscodierte Schalter an die FB
anzubinden.
Es geht um diese hier: http://www.frank-geier.de/
PDF:
http://mitglied.multimania.de/looserschnecke/index/bau/BZ_Bauanleitung_2_01_OS.pdf
Schaltplan für den Sender ist auf Seite 10 im PDF.
Die Auswertung der Schalter usw. ist alles kein Problem. Das mache ich
mit nem attiny um später noch komplexere Schalterfunktionen
einprogrammieren zu können. Im ersten Schritt gibt es drei Signale
(jeweils eins pro Schalter) die an die FB anzuschließen sind. Die
Anschlüsse dafür sind im Schaltplan unten rechts.
Zunächst hatte ich überlegt PC2 und PC3 jeweils an einen Interrupt zu
hängen und dann die Ausgänge entsprechend zu schalten.
Da ich aber nicht weiß wie schnell die FB den Schalterport abfragt,
wollte ich auf Nummer sicher gehen und die Logik dazwischenpacken,
sodass die Verarbeitung im tiny nicht zeitkritisch ist und ich 100% auf
der sicheren Seite bin.
An einen GAL/(C)PLD hatte ich auch schon gedacht, jedoch müsste ich mir
dann noch die Programmer kaufen, was das ganze teuer machen würde. Oder
gibt es da günstige Möglichkeiten? Ich kenne mich da absolut nicht
aus...
Vorschläge und Hinweise sind immer gerne gesehen ;)
"Bahnhof". Müsste wahrscheinlich erstmal die ganze Doku vor und zurück
lesen, vestehen was das eigentlich en detail sein soll (meist fängt eine
Doku damit an, die aber nicht), dann versuchen rauszukriegen ob du da
mit einem eigenen Selbstbauprojekt ein Selbstbauprojekt von jemand
anderem modifizieren willst, oder was auch immer du vorhast. Jedenfalls
habe ich von deinem letzten Posting so ungefähr nichts verstanden.
Hoffentlich verstehen es die Anderen.
Deine Gatterkombo hilft dir da aber auch nicht weiter, da auch die nicht
verhindert, dass du ggf. genau in dem Moment umschaltest, wenn die FB
die Schalter ausliest. Das ist aber auch nicht das Problem.
Wenn ich das im PDF richtig sehe, dann werden da im Normalfall einfach
ganz normale Kippschalter angeschlossen. Logischerweise muss die
Firmware der Fernbedienung dann eine Entprellung für die Schalter drin
haben. Damit sollte es dann aber nichts ausmachen, wenn ein einzelnes
"Sample" beim Umschalten nicht sauber rüberkommt. Du musst nur dafür
sorgen, dass der jeweilige Wert mindestens solange stabil anliegt, wie
die Entprellung abwartet (ggf. ausprobieren).
Das eigentliche Problem ist, dass du das Multiplexing von PORTB auf der
Fernbedienung nicht durcheinanderbringen darfst. Die Schalter sind mit
den beiden äusseren Anschlüssen an Pinne des Controllers gelegt, damit
sie zwischen den Abfragen auf hochohmig geschaltet werden können, um den
zentralen Bus auf PORTB nicht zu beeinflussen. Zur Abfrage wird dann
entweder PC2 auf high und PC3 auf low oder umgekehrt gelegt, dazwischen
werden beide auf Eingang geschaltet.
Was du also eigentlich brauchst sind Tristate-Treiber (z.B. 74HC125) an
deinen Ausgängen, deren Enable über PC2 oder PC3 von der Fernbedienung
bedient werden (welcher der beiden passt musst du mit dem Oszi
rausfinden, oder ausprobieren). Ausserdem muss noch ein Pullup (oder
Pulldown bei positivem Enable an deinen Treibern) dran, damit die
Treiber abschalten, wenn PC2/PC3 auf hochohmig schalten.
Und wieder einmal bewahrheitet sich Punkt 3 aus der Netiquette...
Andreas
PS: vergiss das mit den Interrupts. Vermutlich wird die Fernbedienung
die Schalter höchstens eine handvoll Takte nach dem Schalten von PC2/PC3
abfragen. Selbst wenn dein eigener Controller mit höherem Takt läuft,
wirst du die Werte nicht zuverlässig rechtzeitig ausgeben können, zumal
du ja erst noch den Port auf Ausgang schalten musst, wegen Tristate.
Ausserdem müsstest du auch noch mitbekommen, wenn PC2/PC3 wieder auf
hochohmig schalten, um dann sofort auch deinen Port wieder auf Eingang
zu schalten. Letzteres ist erst recht unmöglich.
Allenfalls könntest du das Abschalten der Treiber als Interrupt
nehmen, um dann den nächsten Wert auszugeben, da du dann etwas länger
Zeit hast, während die Fernbedienung mit ihren anderen Schaltern, dem
LCD etc. beschäftigt ist.
Andreas
Ui, ich dachte ich bringe mit meinem Posting etwas mehr Klarheit in die
Sache. Scheinbar extrem falsch gedacht. Von daher Entschuldigung. Bin
wohl zu sehr im Thema drin...
Dann versuche ich mal ein wenig mehr Licht ins Dunkel zu bringen.
Im Normalfall ist an jedem "Dreierstecker" ein Umschalter dran, der vom
mittleren Pin zu einem der äußeren Pins herstellt.
In der Anleitung steht soweit ich gelesen habe nichts überraschendes
drin. Den Schaltplan interpretiere ich wie folgt. Zum Abfragen der
Schalter macht der Controller folgendes:
1. Enable vom Display auf low (Display nimmt keine Befehle an)
2. PC2 auf high
3. Port B abfragen
4. PC2 auf low
5. PC3 auf high
6. Port B abfragen
7. PC3 auf low
Ein Bild sagt ja mehr als tausend Worte. Ich hoffe auch bei mir...
So wie im angehangenen Bild sehen ungefähr meine Gedanken aus. Das war
der Grund für die eigentliche Frage, denn so müsste es ja vom Prinzip
einwandfrei funktionieren. Fehlen natürlich noch der ein oder andere
Schutzwiderstand.
Wenn man dann das obige durchgeht, schalten aus Sicht der Fernbedienung
die Gatter wie ein normaler Schalter es tun würde die mittleren Pins nur
auf high wenn PC2 oder PC3 auf high sind und der tiny die entsprechenden
Ausgänge auf high hat.
Das mit dem Umschalten usw. sollte damit kein Problem sein. "Mein" Teil
verhält sich gegenüber der Fernbedienung ja wie ein ganz normaler
Schalter und den kann man ja auch zu jeder beliebigen Zeit umschalten.
Ob beide Positionen gleichzeitig eingeschaltet sein dürfen muss man noch
prüfen, aber das kann man ja notfalls per Software abfangen.
Andreas Ferber schrieb:
> PS: vergiss das mit den Interrupts. Vermutlich wird die Fernbedienung> die Schalter höchstens eine handvoll Takte nach dem Schalten von PC2/PC3> abfragen. Selbst wenn dein eigener Controller mit höherem Takt läuft,> wirst du die Werte nicht zuverlässig rechtzeitig ausgeben können, zumal> du ja erst noch den Port auf Ausgang schalten musst, wegen Tristate.> Ausserdem müsstest du auch noch mitbekommen, wenn PC2/PC3 wieder auf> hochohmig schalten, um dann sofort auch deinen Port wieder auf Eingang> zu schalten. Letzteres ist erst recht unmöglich.
Das habe ich mir auch gedacht, dass das zeitlich wahrscheinlich nicht
hinhauen wird. Wegen der Dioden könnte ich jedoch die Pins am Controller
ständig auf Ausgang stehen lassen. Es müssen nur alle low sein, solange
PC2/PC3 low sind, damit nicht in den Bus reingefuscht wird. Bei Pin
Change auf PC2/PC3 nach high müsste ich die jeweiligen Werte auf den
Port laden und wenns wieder nach low geht wieder alles auf low setzen.
Mit Assembler sollte das mit 2 Takten gehen(einer um in den Interrupt zu
springen, einer um den Port zu setzen). Jedoch habe ich kein Bock auf
Assembler und außerdem ist mir das wie gesagt zu unsicher.
So, ich hoffe dass das jetzt ein wenig klarer ist. Funktioniert das so
wie ich das auf dem Bild gezeichnet habe oder ist da noch ein grober
Schnitzer drin? Ich sehe nämlich nichts was dagegen spricht. Falls noch
was unklar ist, bescheid sagen, dann versuche ich das zu erklären.
Besten Dank für die Geduld
Daniel
> Den Schaltplan interpretiere ich wie folgt....> 5. Port B abfragen
Das ist schlecht, denn der Port B kann als Eingang entweder nur Pullups
haben oder hochohmig sein. Beides wäre für eine zuverlässige Abfrage
schlecht, denn wegen der Dioden ist ja kein definierter Low-Pegel an den
Eingangspin zu bekommen.
Ich würde das anders machen:
1. Enable vom Display auf low (Display nimmt keine Befehle an)
2. Port C auf Eingang mit Pullup
3. Port B0 auf low
4. Pins C3..0 abfragen
5. Port B1 auf low
6. Pins C3..0 abfragen
5. Port B2 auf low
6. Pins C3..0 abfragen
:
:
Dann passt allerdings deine Schaltung nicht, weil die Signalrichtung
schon nicht stimmt :-o
Warum nimmst du nicht einfach Analogschalter CD4066 o.ä.?
Moin,
dass die Abfrage andersrum ist, habe ich auch schon gedacht. Jedoch
wären dann die Dioden falsch rum. Die geben ja die Richtung vor, also
kann das nicht sein.
Normalerweise müssten daher am kompletten PortB Pulldowns dran.
Scheinbar funktioniert das zufällig richtig, da die Pins ja in der Luft
hängen.
Das ist jedoch nicht der einzige Fehler. Der Reset ist lustigerweise
komplett unbeschaltet... Wobei, das könnte gehen, wenn man RSTDISBL
setzt...
Habe leider keine Platine hier. Von daher kann ich momentan nicht sagen
wie das in echt aussieht.
Vielleicht kriege ich aber heute noch eine, dann werde ich berichten.
Gruß
Daniel
> dass die Abfrage andersrum ist, habe ich auch schon gedacht. Jedoch> wären dann die Dioden falsch rum.
Nein, mach mal Schritt für Schritt durch, was ich geschreiben habe. Da
gibt es nirgends undefinierte Pegel:
Port C3..0 sind Eingänge mit Pullups.
Port B ist Ausgang.
Immer nur 1 Pin von Port B ist Low, die anderen sind High.
Eine gedrückte Taste zieht über die Diode den entsprechenden Pin C auf
Low.
Ja, ich lese schon das was ich will. So geht es natürlich und das ohne
undefinierte Pegel...
Ich glaube ich höre jetzt erstmal auf zu spekulieren und warte bis ich
die Platine habe...
>Das ist jedoch nicht der einzige Fehler. Der Reset ist lustigerweise>komplett unbeschaltet... Wobei, das könnte gehen, wenn man RSTDISBL>setzt...
Der Rest braucht auch nicht angeschlossen sein. Die AVR haben (fast)
alle einen internen Power-On-Reset. Es gibt auf dem Chip einen Pullup
Widerstand, der den RESET Pin mit VCC verbindet. Deshalb ist eine
Beschaltung des Reset unnötig. Einfach mal das Datenblatt lesen ...
Eigentlich wird der Reset Pin nur dann extern beschaltet, wenn man ISP
machen möchte, den Chip aus irgendwelchen Gründen mit einer externen
Schaltung Resetten möchte oder eine größere Sicherheit gegen EMV
Störungen erreichen möchte.
Wenn du RSTDISBL setzt, dann kanst du den Chip nicht mehr per ISP
Programmieren. Das ist in den meisten Fällen sehr schlecht.