Forum: Mikrocontroller und Digitale Elektronik Pullup Widerstände Adafruit Trinket


von Robert B. (robert_b246)


Angehängte Dateien:

Lesenswert?

Guten Tag mitsammen,

ich bastel für einen Verein eine "Mini Tastatur" mit nur drei Tasten. 
Hierfür wurde mir ein Adafruit Trinket (ATtiny85 @ 8MHz) überlassen.

Der Microcontroller hat intern 2 Pullup - Widerstände (meines Wissens) 
Pin #0 und #2. Die funktionieren auch prima.
Ich brauche für die dritte Taste jedoch einen weiteren. Daher habe ich 
10k Ohm extern gegen 5V angeschlossen und die Taste gegen Ground 
angeschlossen. Funktioniert nicht. Experimentieren mit versch. 
niedrigeren Widerständen und 5V USB statt des 5V Pins hat auch nicht 
funktioniert. Selbst ein Spannungsteiler der einen Pegel von 4V an den 
Pin anlegt brachte mich nicht weiter. Ebenfalls ein Pulldown - 
Widerstand brachte mich nicht weiter.

Frage 1: Gibt es einen dritten internen Pullup - Widerstand? Wenn ja, 
wo?

Frage 2: Kann ich es riskieren ohne Widerstand an den NC Kontakt der 
Taste 5V anzuschließen? (A) Hiermit ist mein Pegel leider nicht 
ununterbrochen definiert. (B) Füge ich dem Gerät damit dauerhaft Schaden 
zu?

Im Zweifelsfall muss ich durch das analoge Messen der Spannung am Pin 
damit eine boolsche Variable ansteuern. Diese Lösung würde ich nur 
ungerne verwenden.


Vielen Dank und mit freundlichen Grüßen

Robert

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Angehängte Dateien:

Lesenswert?

Ich denke jeder Digital Pin hat einen internen Pullup ;)

Du kannst pullup/pulldown auf die Digitalpins auch extern verdrahten, 
das macht nichts kaputt.

Das angehängte Bild zeigt mit GELB, Pins die Digital benutzt werden 
können.

Der interne Pullup hat ja 50K oder so.. das kann manchmal zviel sein.. 
10k wäre ein gängiger Wert.

EDIT: Wie kommste drauf das pin 0 und 2 einen Pullup haben, wegen i2c?
Pullup einschalten: pinMode(Pin, INPUT_PULLUP);

: Bearbeitet durch User
von Robert B. (robert_b246)


Lesenswert?

Philipp K. schrieb:
> Ich denke jeder Digital Pin hat einen internen Pullup ;)

Hallo,

danke für deine Antwort. Sie hilft mir leider nicht. Prinzipiell hast du 
gemäß Datenblatt recht, dass an Port B interne Pullup - Widerstände 
sind. Jedoch vermute ich, dass der Hersteller einen lediglich sehr 
vergleichbaren Microchip eingebaut hat (oder mein Exemplar ist an ESD 
verrekt). Ich habe alle Pins an Port B durchprobiert außer dem sechsten 
der vom Hersteller nicht angeschlossen wurde.

Philipp K. schrieb:
> EDIT: Wie kommste drauf das pin 0 und 2 einen Pullup haben, wegen i2c?
> Pullup einschalten: pinMode(Pin, INPUT_PULLUP);

Auf diese Schlussfolgerung komme ich, da nur an diesen Pins der interne 
Pullup - Widerstand funktioniert. Sonst hätte ich keinen Bedarf gehabt 
diesen Beitrag im Forum zu schreiben. Wie das ganze in der IDE 
implementiert wird ist mir klar. Trotzdem danke^^

Kann mir bitte jemand weiterhelfen, der selber mit diesem 
Microcontroller oder zumindest dem Microchip arbeitet? Ich wäre 
ausgesprochen dankbar, wenn eine zuverlässig funktioniertende preiswerte 
Lösung gefunden wird.

MFG

von Harlekin (Gast)


Lesenswert?

Auf dem Schema des Trinket ist an B1 eine LED mit Vorwiderstand 
angeschlossen. Den Vorwiderstand entfernen und B1 als Eingang mit Pullup 
programmieren.

von Manfred (Gast)


Lesenswert?

Robert B. schrieb:
> Frage

Ich würde zuerst einmal die Pegel am Pin messen.

von Peter D. (peda)


Lesenswert?

Robert B. schrieb:
> Der Microcontroller hat intern 2 Pullup - Widerstände (meines Wissens)
> Pin #0 und #2. Die funktionieren auch prima.

Der ATtiny85 kann für alle 6 IO-Pins den Pullup einschalten.
Du mußt für 3 Tasten bloß ein Programm schreiben, was auch 3 IO-Pins 
abfragt.

von Michael U. (amiga)


Lesenswert?

Hallo,

Harlekin schrieb:
> Auf dem Schema des Trinket ist an B1 eine LED mit Vorwiderstand
> angeschlossen. Den Vorwiderstand entfernen und B1 als Eingang mit Pullup
> programmieren.

richtiger Hinweis. Wenn man nichts ändern will geht nur externer 
PullDown und Taster gegen Vcc. Beim Drücken des Tasters sollte dann die 
LED eben leuchten.
Abfrage als Input (ohne PullUp) sollte dann gehen.

Gruß aus Berlin
Michael

von Robert B. (robert_b246)


Lesenswert?

Harlekin schrieb:
> Auf dem Schema des Trinket ist an B1 eine LED mit Vorwiderstand
> angeschlossen. Den Vorwiderstand entfernen und B1 als Eingang mit Pullup
> programmieren.

Wunderschönen guten Tag,

hat funktioniert. Ich danke vielmals für diesen Lösungsvorschlag.


EDIT: Zu der Dokumentation des Beitrags ist übrigens noch hinzuzufügen, 
dass ich nun 3 gleiche Adafruit Trinkets zur Verfügung habe und bei 
allen das Verhalten gleich ist. Daher kann ich weitesgehend 
ausschließen, dass ein Exemplar defekt ist oder aber alle drei weisen 
den selben Fehler auf.

Ich danke generell allen die sich an der Lösungsfindung beteiligt haben. 
In diesem Sinne wünsche ich ein traumhaftes Wochenende allerseits.

LG

von Harlekin (Gast)


Lesenswert?

Robert B. schrieb:
> hat funktioniert. Ich danke vielmals für diesen Lösungsvorschlag.

Freut mich. Danke für die Rückmeldung.

von Robert B. (robert_b246)


Angehängte Dateien:

Lesenswert?

EDIT: Wenn man auf den Schaltplan guckt erkennt man wo das Problem lag. 
Meine Vermutung lag somit falsch. Dass die technischen Details vom 
Hersteller veröffentlicht wurden, habe ich leider erst sehr spät nach 
verfassen dieses Beitrags entdeckt. 
https://learn.adafruit.com/introducing-trinket/downloads

von Philipp K. (philipp_k59)


Lesenswert?

Das Problem war Dein ganzer Einstiegsbeitrag..

Ich kannte das Problem zwar vorher schon, habe die Frage nur falsch 
interpretiert.. und das anscheinend nicht alleine.

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.