mikrocontroller.net

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


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.
Autor: Robert B. (robert_b246)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Philipp K. (philipp_k59)
Datum:
Angehängte Dateien:

Bewertung
-1 lesenswert
nicht 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
Autor: Robert B. (robert_b246)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harlekin (Gast)
Datum:

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

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robert B. schrieb:
> Frage

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

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robert B. (robert_b246)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harlekin (Gast)
Datum:

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

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

Autor: Robert B. (robert_b246)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp K. (philipp_k59)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.