Hallo Leute!
ich hab voll den Bock geschossen ... jetzt geht's drum am Besten mit
keinen oder wenig Hardware-Änderungen die Sache auszubügeln.
Vielleicht hat ja jemand von euch eine zündende Idee :)
Ihr seht vier HEX-Code-Schalter die ich am ATMega mit 8 Pins abfragen
möchte.
Nur leider brücken sich die Schalter gegenseitig durch.
(Der Gedanke war über SW_ARRAY_S1, S2, S3, S4 die Schalter nacheinander
mit Spannung zu beaufschlagen und den Status über SW_ARRAY_BIN0 - BIN3
abzufragen)
Die Möglichkeit die mir eingefallen wäre, jedem Pin vor dem
zusammenführen an BIN0 - BIN3 eine Diode zu spendieren, das gefällt aber
meinem Layout vom Platz garnicht.
Habt ihr eine Idee?
Dir bleibt wohl wirklich keine andere Möglichkeit als die Ausgänge der
Codierer mit Dioden gegeneinander zu entkoppeln.
Alternativ könntest Du die Ausgänge mit 2 Stück 8 Bit Schieberegistern
abfragen und die Schalterstellungen seriell einlesen. Das bedeutet
natürlich auch mehr Platzbedarf, spart aber auch Portleitungen.
TomTom schrieb:> eine Diode zu spendieren, das gefällt aber> meinem Layout vom Platz garnicht.
Alternative wären 2 8bit-Schieberegister. Dann braucht man sogar viel
weniger Pins.
Georg
S1, S2, S3 und S4 nacheinander jeweils einen als Ausgang schalten, die
anderen als Eingang ohne Pullup. Über Bin0 ... Bin3 den jeweils aktiven
Hexschalter abfragen. Reine Softwarelösung.
Reinhard R. schrieb:> S1, S2, S3 und S4 nacheinander jeweils einen als Ausgang schalten,> die> anderen als Eingang ohne Pullup. Über Bin0 ... Bin3 den jeweils aktiven> Hexschalter abfragen. Reine Softwarelösung.
Geht doch nicht weil irgendein auf 15 gesetzter Schalter alle vier
Leitungen zusammen verbindet. Das verhindert die unabhängige Auslesung
aller anderen Schalter am Bus.
TomTom schrieb:> Die Möglichkeit die mir eingefallen wäre, jedem Pin vor dem> zusammenführen an BIN0 - BIN3 eine Diode zu spendieren, das gefällt aber> meinem Layout vom Platz garnicht.
Ach komm, die 16 Stück TS4148C im 0603 Gehäuse sollten sich noch
unterbringen lassen.
Gerhard O. schrieb:> Geht doch nicht weil irgendein auf 15 gesetzter Schalter alle vier> Leitungen zusammen verbindet. Das verhindert die unabhängige Auslesung> aller anderen Schalter am Bus.
Hast recht, war ein Schnellschuss am frühen Morgen :-(
Ist mir dann kurz danach auch aufgefallen, konnte es aber nicht eher
korrigieren
wegen Handy/Internetverbot während der Arbeitszeit.
Jetzt ist Mittagspause, da darf ich :-)
georg schrieb:> TomTom schrieb:>> eine Diode zu spendieren, das gefällt aber>> meinem Layout vom Platz garnicht.>> Alternative wären 2 8bit-Schieberegister. Dann braucht man sogar viel> weniger Pins.>> Georg
Oder I2C Portexpander...
Dann denke ich werden es die Dioden, da bin ich etwas flexibler, was dem
Platz am Layout angeht.
Kann aber gerade froh sein wenn ich die 16 Stück in einem SOD523 Gehäuse
unterbringe.
Expander denke ich fällt raus. die 8 Pins hab ich ja, der Platz ist nur
so ne Sache ;)
Danke!
Mal angenommen ich wähle den "einfachen Weg":
Das könnte Probleme mit dem Low-Pegel beim AtMega88 bei 3,3V geben,
oder?
Selbst wenn ich Schottky-Dioden verwende und den gemeinsamen Pin der
Codeswitch der Reihe nach zum Auswerten auf 0V ziehe, liegen am
Controller trotzdem noch bis zu 0,4 - 0,6V an und das reicht nicht für
einen richtig definiertes Low?
@TomTom (Gast)
>Selbst wenn ich Schottky-Dioden verwende und den gemeinsamen Pin der>Codeswitch der Reihe nach zum Auswerten auf 0V ziehe, liegen am>Controller trotzdem noch bis zu 0,4 - 0,6V an und das reicht nicht für>einen richtig definiertes Low?
Aber sicher, denn die AVRs sind CMOS, da ist LOW <= 0,3*VCC ~ 1V
Bin gerade etwas verunsichert, die 1V würden mir schon gefallen, nur im
Datenblatt finde ich das hier (siehe Bild), da ist von 0,1 - 0,3V ohne
dem *VCC die rede ...
Oder ist es generell vernünftiger die Dioden umzudrehen, Pull-Ups auf
GND und die Codeswitch mit VCC anzufahren?
TomTom schrieb:> und das reicht nicht für> einen richtig definiertes Low?
Verstehe ich nicht. Du hast den Kenntnisstand, daß es einen erlaubten
Spannungsbereich gibt, schaust aber nicht einfach ins Datenblatt unter
"DC Characteristics".