Forum: Mikrocontroller und Digitale Elektronik ATtiny keine Pins mehr frei


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dirk F. (dirkf)


Angehängte Dateien:

Lesenswert?

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 :

1. Beim Einschalten alle 3 Pins als Input.
2. DIP Schalter einlesen.
3. Pins als Ausgang schalten.
4. Normales Programm abarbeiten

Zum Programmieren alle DIP Schalter offen.

Gruß

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Dirk F. schrieb:
> 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.

Beitrag "Re: Arduino Nano, Drehpotentiometer mit Rasten und Endanschlag"

Geht bei 3 Schaltern auch ohne OPV. Siehe Anhang. Die Spannungen sind 
nichtlinear, das kann man aber rausrechnen.

von Rainer W. (rawi)


Lesenswert?

Falk B. schrieb:
> Die Spannungen sind nichtlinear

Was sind nichtlineare Spannungen?

von Falk B. (falk)


Lesenswert?

Dirk F. schrieb:
> 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.

Umin > VCC-Uf_min

von Falk B. (falk)


Lesenswert?

Rainer W. schrieb:
>> Die Spannungen sind nichtlinear
>
> Was sind nichtlineare Spannungen?

Das Gegenteil von linearen Spannungen ;-)

Ich meinte, die 8 Stufen der Spannung, welche durch den DIP-Schlater 
erzeugt wird, sind nichtlinear.

von Hans (ths23)


Lesenswert?

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.

von Mi N. (msx)


Lesenswert?

Dirk F. schrieb:
> Zum Programmieren alle DIP Schalter offen.

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.

von Dirk F. (dirkf)


Angehängte Dateien:

Lesenswert?

Danke für die bisherigen Hinweise.

Von der analogen Schaltung möchte ich vorerst Abstand nehmen.
3,3 V Versorgung geht leider auch nicht.

Wäre die neue Schaltung so besser ?

von Mi N. (msx)


Lesenswert?

Jain.
Mit beispielsweise LED1 = rot und R11 = 220 Ohm wäre die Funktion 
fraglich.
Aber das kannst Du selber probieren.

von Rainer W. (rawi)


Lesenswert?

Hans schrieb:
> 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).

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Dirk F. schrieb:
> Von der analogen Schaltung möchte ich vorerst Abstand nehmen.

Die Ansage geht eigentlich schlecht mit

Dirk F. schrieb:
> Leider sind keine Pins mehr frei.

zusammen.

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.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Dirk F. schrieb:
> Danke für die bisherigen Hinweise.
>
> Von der analogen Schaltung möchte ich vorerst Abstand nehmen.

Warum?

> 3,3 V Versorgung geht leider auch nicht.

Braucht man auch nicht.

> Wäre die neue Schaltung so besser ?

Ja

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Hier als Exceltabelle zum Ausrechnen. Wenn man R4 auf 4,7k vermindert, 
sollte es passen.

von Falk B. (falk)


Lesenswert?

Wenn die LEDs eine zu geringe Flußspannung haben, kann man normale 
Kleinsignaldioden in Reihe schalten, bis ausreichend Uf vorhanden ist. 
Vorwiderstand anpassen.

von Peter D. (peda)


Lesenswert?

Dirk F. schrieb:
> Könnte die Schaltung im Anhang so funktionieren :

Kein Problem. Du mußt sie nur über den ADC einlesen, also auf PB2, 3 und 
4 wechseln.

von Dirk F. (dirkf)


Lesenswert?

Peter D. schrieb:
> 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-----

von Falk B. (falk)


Lesenswert?

Dirk F. schrieb:
> Wenn es nicht geht, muss ich mich mal einlesen, wie man den ADC
> programmiert.  Ich bin normal bei den PICs zu Hause-----

Aha, daher weht der Wind.

Beitrag "Re: 0-10V Signal in Drehimpulsgeber Signal Umwandeln"

von Dirk F. (dirkf)


Lesenswert?

Falk B. schrieb:
> Beitrag "Re: 0-10V Signal in Drehimpulsgeber Signal Umwandeln"

Danke, Falk.

von Falk B. (falk)


Lesenswert?

Für deine Anwendung musst du aber VCC als Referenzspannung einstellen.
1
// PB2, ADC1, VCC= Vref
2
ADMUX   = 1;

von Dirk F. (dirkf)


Lesenswert?

Ich merke gerade, dass ich die MCU Typ ATtiny25 habe.
An den 3 LED Pins ist leider nur 1 Analog-Pin vorhanden. PB2 Pin7.

von Falk B. (falk)


Lesenswert?

Dirk F. schrieb:
> Ich merke gerade, dass ich die MCU Typ ATtiny25 habe.
> An den 3 LED Pins ist leider nur 1 Analog-Pin vorhanden. PB2 Pin7.

Das reicht. Man "spart" sogar 2 Widerstände, wegen Weltrettung und so . 
. .

Beitrag "Re: ATtiny keine Pins mehr frei"

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

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?

von Ron-Hardy G. (ron-hardy)


Lesenswert?

Ich würde die LEDs über LL-MOSFETS entkoppeln

von Falk B. (falk)


Lesenswert?

Mi N. schrieb:
> 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?

Was für ein sinnloser Beitrag!

von Falk B. (falk)


Lesenswert?

Ron-Hardy G. schrieb:
> Ich würde die LEDs über LL-MOSFETS entkoppeln

Ist nicht nötig!

Beitrag "Re: ATtiny keine Pins mehr frei"

von Dirk F. (dirkf)


Lesenswert?

Mi N. schrieb:
> deine unbekannten LEDs samt Vorwiderständen

D1 Vf= 3V
D2 Vf=2V
D3 Vf=2V

R11 8K2
R12 3K9
R13 3K9

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Dirk F. schrieb:
>> deine unbekannten LEDs samt Vorwiderständen
>
> D1 Vf= 3V
> D2 Vf=2V
> D3 Vf=2V

Für den Analogeingang musst du an PB2 ran, dort muss die LED mit der 
größten Flußspannung (3V) ran. Das kann man tauschen.

> R11 8K2
> R12 3K9
> R13 3K9

So viel? Also nur schwache Signal-LEDs. Egal, das Gesagte gilt trotzdem.

: Bearbeitet durch User
von Mi N. (msx)


Lesenswert?

Dirk F. schrieb:
> D1 Vf= 3V
> D2 Vf=2V
> D3 Vf=2V
>
> R11 8K2
> R12 3K9
> R13 3K9

Dann brauchst Du das Analogzeug nicht.

von Thomas (kosmos)


Lesenswert?

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

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Dirk F. schrieb:
> Leider sind keine Pins mehr frei. MCU Wechsel scheidet aus.

Was ist eigentlich mit PB3, PB4 und PB5?

von Falk B. (falk)


Lesenswert?

Thomas schrieb:
> mein Vorschlag nimm einen 8bit Latch.

Warum nicht gleich 8 100A Schütze? Sicher ist sicher! OMG!
Das Problem ist längst SEHR elegant gelöst!

von Dirk F. (dirkf)


Angehängte Dateien:

Lesenswert?

Habe die Sache mal durchgerechnet. (für Digitallösung)
LED rot (2V) 3K9 Vorwiderstand.
1 K Pull-Down über Switch

Pins Spannung bei geschlossenen Switch:
U = (5V-2V) *1K / (3K9 + 1K) = 0,61V

Laut Datenblatt wir LOW sicher erkannt bei Max. = 0,3 x 5V  = 1,5V

Die grüne LED ist noch unkritischer.....

Sollte also sicher funktionieren.

von Falk B. (falk)


Lesenswert?

Dirk F. schrieb:
> Sollte also sicher funktionieren.

Tut es auch, dank deiner riesigen Vorwiderstände.

von Mi N. (msx)


Lesenswert?

Dirk F. schrieb:
> Laut Datenblatt

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.

von Falk B. (falk)


Lesenswert?

Mi N. schrieb:
> sodaß die DIP-Schalter auch hochohmiger
> ausgelegt werden können und somit beim Programmieren nicht extra
> ausgeschaltet werden müssen.

Das müssen sie JETZT schon nicht! 1k an 5V macht 5mA, das können 
gescheite Programmieradapter problemlos treiben!

von Thomas (kosmos)


Lesenswert?

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.

von Klaus H. (hildek)


Lesenswert?

Tim T. schrieb:
> Was ist eigentlich mit PB3, PB4 und PB5?

Das frage ich mich auch dauernd. Die sind einfach frei ...

von Mi N. (msx)


Lesenswert?

Falk B. schrieb:
> 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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Klaus H. schrieb:
> Das frage ich mich auch dauernd. Die sind einfach frei ...

Die mußten vielleicht aus Platzmangel abgekniffen werden und liegen 
jetzt in der Ersatzteilkiste oder auch ein Geheimprojekt ;-)

von Falk B. (falk)


Lesenswert?

Mi N. schrieb:
> 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.

Beitrag "Re: ATtiny keine Pins mehr frei"

Macht minimal 6k gegen Masse und 830uA.

von Dirk F. (dirkf)


Lesenswert?

Klaus H. schrieb:
> Das frage ich mich auch dauernd. Die sind einfach frei ...

Da kann ich nicht dran. Sind schon belegt.

von Falk B. (falk)


Lesenswert?

Dirk F. schrieb:
> Da kann ich nicht dran. Sind schon belegt.

Ja, aber nicht in deinem Schaltplan. Das irritiert.

von Roland F. (rhf)


Lesenswert?

Hallo,
Dirk F. schrieb:
> Sind schon belegt.

Womit?

rhf

von Mi N. (msx)


Lesenswert?

Falk B. schrieb:
> JAAAAAAAAAA! HAST JA RECHT!!!!!!!

Jetzt haste noch ein paar '!' übrig, um weiter herumzuschreien :-(

Roland F. schrieb:
>> Sind schon belegt.
>
> Womit?

Das ist doch wurscht. Meinetwegen muß der TO auch kein Foto von seiner 
Schaltung oder sein Programm zeigen.

von Ron-Hardy G. (ron-hardy)


Angehängte Dateien:

Lesenswert?

Mi N. schrieb:
> Gescheite Hardwerker sehen aber zu, daß bei abgeschalteten LEDs nicht 15
> mA sinnlos verbraten werden

Ebenst, deshalb würde ich es so machen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.