Hallo,
bei einer bestehenden Schaltung möchte ich nach dem Einschalten den Zustand von 3 DIP-Switches einlesen und entsprechend Parameter setzen für den späteren Programmlauf.
Leider sind keine Pins mehr frei. MCU Wechsel scheidet aus.
An 3 Pins hängen aktuell 3 LED und die Programmierschnittstelle.
Könnte die Schaltung im Anhang so funktionieren :
bei einer bestehenden Schaltung möchte ich nach dem Einschalten den
Zustand von 3 DIP-Switches einlesen und entsprechend Parameter setzen
für den späteren Programmlauf.
DIP-Schalter mit Widerständen analog kodieren und per ADC einlesen.
An 3 Pins hängen aktuell 3 LED und die Programmierschnittstelle.
Könnte die Schaltung im Anhang so funktionieren :
Der Trick funktioniert nur, wenn die Flußspannung der LEDs bei 3V und höher liegt. Denn die Pull-Widerstände müssen halbwegs sauber LOW erreichen. D sollte man eher 3x10k nehmen.
Zum Programmieren alle DIP Schalter offen.
Brauchst du nicht, 1K kann ein normaler Programmieradapter treiben.
Ergänzung. Man kann es mit meiner Analogmethode auch mit einem Pin an den LEDs machen! Man muss nur die Widerstände so wählen, daß bei allen Codes die minimale Spannung hoch gehung ist, daß die LEDs nicht anfangen Strom zu ziehen.
Probiere es aus, ist doch schnell gemacht. Die Frage ist ob die 100kOhm als Pulldown nicht zu groß sind, um den Eingang auf LOW zu ziehen. Besser wäre es für Deinen Fall, wenn der ATiny intern PullDown könnte, das mußt Du halt selber raus finden - ich kenne den ATiny nicht und habe mit dem auch noch nichts gemacht.
Die zweite Frage ist, welchen Einfluß ein geschlossener Switch auf Programmiervorgang hätte. Notfalls muß man halt alle Switches während des Programmierens öffnen.
Wenn Du R14 - R16 auf 47 kOhm erhöhst, kannst Du Dir das sparen.
Vielmehr kommt es auf R11 - R13 nebst zugehöriger LEDs an, da diese die Programmierung und das Einlesen der Schalter stören könnten. Eine Alternative wäre, den Tiny85 bei 3,3 V zu betreiben und programmieren. Dann stören die Durchlassspannungen der LEDs je nach Farbe nicht. Typische Schwelle für '0' oder '1' Signale liegt bei etwa VCC/2, siehe Datenblatt.
Die zweite Frage ist, welchen Einfluß ein geschlossener Switch auf
Programmiervorgang hätte. Notfalls muß man halt alle Switches während
des Programmierens öffnen.
Die Treiberleistung sowohl des Programmieradapters als auch des ATtiny85 ist ausreichend, um ein paar kΩ zu treiben, ohne dass sich die Pegel störend verschieben (wie Falk schon vor dir schrieb).
Dazu:
Mit Bootloader oder HVSP kann man den Reset Pin ohne Probleme mit verwenden.
Selbst ohne den Reset Pin umzukonfigurieren, lässt sich der ADC bis zur Resetschwelle nutzen.
Wenn die LEDs eine zu geringe Flußspannung haben, kann man normale Kleinsignaldioden in Reihe schalten, bis ausreichend Uf vorhanden ist. Vorwiderstand anpassen.
Kein Problem. Du mußt sie nur über den ADC einlesen, also auf PB2, 3 und
4 wechseln.
OK, dann werde ich die Schaltung erst mal so aufbauen und digital testen.
Wenn es nicht geht, muss ich mich mal einlesen, wie man den ADC programmiert. Ich bin normal bei den PICs zu Hause-----
Dann lass das mit dem Analogzeug doch sein. Die drei LEDs mußt Du eh separat ansteuern.
Sieh zu, daß Du deine unbekannten LEDs samt Vorwiderständen angesteuert bekommst, ohne daß sie die Schalterabfrage stören. Ist denn das so schwer mal zu testen?
Dann lass das mit dem Analogzeug doch sein. Die drei LEDs mußt Du eh
separat ansteuern.
Sieh zu, daß Du deine unbekannten LEDs samt Vorwiderständen angesteuert
bekommst, ohne daß sie die Schalterabfrage stören. Ist denn das so
schwer mal zu testen?
mein Vorschlag nimm einen 8bit Latch. Der liest z.B. 8 bits ein (8 Dipschalter) und kann Sie auch wenn gewünscht zwischenspeichern. Wenn man diesen jetzt aktiviert gibt er die 8 Schalterstellungen (oder auch nur 3) an deinen Port oder einzelne Pins aus. Du ließt die Daten ein und schaltest den Latch wieder aus und kannst deinen I/Os wieder für andere Sachen verwenden. z.B. 74HC573
Im Datenblatt gibt es präzisere Kurven für die Schaltschwellen der Eingänge nebst zugehöriger Hysteres (Abschnitt 22.7). Damit ist das Ganze noch unkritischer, sodaß die DIP-Schalter auch hochohmiger ausgelegt werden können und somit beim Programmieren nicht extra ausgeschaltet werden müssen.
da ich noch keine 3bit Latch entdeckt habe, habe ich eben einen 8bit Latch vorgeschlagen man kann davon auch nur 3bits benutzen.
Vielleicht fehlt im ja wieder mal ein Pin und dann ist es nicht verkehrt sich mal damit beschäftigt zu haben einen Latch parallel zu schalten und einfach 8 weitere Ein oder Ausgänge parat zu haben.
Als ich mit den AVRs angefangen habe hatte ich da auch so einen kleinen ATTiny26 dort sollten viele ADC Kanäle genutzt werden und ein 8bit LCD angesteuert werden da war so ein Latch sehr nützlich.
Das müssen sie JETZT schon nicht! 1k an 5V macht 5mA, das können
gescheite Programmieradapter problemlos treiben!
Gescheite Hardwerker sehen aber zu, daß bei abgeschalteten LEDs nicht 15 mA
sinnlos verbraten werden, zumal die Vorwiderstände der LEDs eher auf Batteriebetrieb deuten!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Gescheite Hardwerker sehen aber zu, daß bei abgeschalteten LEDs nicht 15
mA
sinnlos verbraten werden, zumal die Vorwiderstände der LEDs eher auf
Batteriebetrieb deuten!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
JAAAAAAAAAA! HAST JA RECHT!!!!!!!
:-)
Darum auch meine Empfehlung mit EINEM Analogpin und relativ hochohmigen Widerständen.