Forum: Mikrocontroller und Digitale Elektronik Deaktivierung des internen Pull-up resistors


von Christoph B. (plcdeveloper)


Lesenswert?

Hallo liebes µC-Forum,

dies hier ist mein erster Post. Was die µC-Programmierung mit purem C 
anbelangt, bin ich noch ein blutiger Anfänger. Ich habe bis jetzt nur 
"simple" Sketches in der Arduino IDE programmiert, welche digitale 
Ausgänge schalten. Gegenwärtig bin ich dabei, die digitalen Eingänge 
einzubinden und die Funktion dahinter zu verstehen. Ich habe es 
geschafft, einen Button abzufragen und folglich ein LED ein- bzw. 
auszuschalten.

Jetzt zur eigentlichen Frage:
Ist es möglich, den internen Pull-up resistor, welchen ich zu Beginn für 
den digitalen Eingang einschalte, versehentlich zu deaktivieren, wenn 
ich das Register PORTx in meiner while-Schleife überschreibe? Also z.B.:
PORTD = (1 << 7);
Mit diesem Befehl habe ich ja alle Bits des Registers PORTD mit 0 
überschrieben - ausgenommen davon ist das letzte Bit. Hätte ich Pin 3 
als digitalen Eingang definiert (mit internen Pull-up), wäre jetzt der 
digitale Eingang jetzt nutzlos, da er ja keinen Pull-up mehr besizt. 
oder hab ich da etwas falsch verstanden? Ist es deshalb so wichtig, die 
bitweisen Operatoren zu nutzen, sodass alle anderen Bits nicht 
beeinflusst werden?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Christoph B. schrieb:
> Ist es möglich, den internen Pull-up resistor, welchen ich zu Beginn für
> den digitalen Eingang einschalte, versehentlich zu deaktivieren, wenn
> ich das Register PORTx in meiner while-Schleife überschreibe? Also z.B.:
> PORTD = (1 << 7);

Ja

Christoph B. schrieb:
> Ist es deshalb so wichtig, die bitweisen Operatoren zu nutzen,
> sodass alle anderen Bits nicht beeinflusst werden?

Wenn du nur einzelne Bits setzen/löschen willst, dann ist es wichtig.

von HildeK (Gast)


Lesenswert?

Schau dir mal das AVR-C-Tutorial an, da,sthet alles über die Bedienung 
der Ports drin.

Christoph B. schrieb:
> wäre jetzt der digitale Eingang jetzt nutzlos, da er ja keinen Pull-up
> mehr besizt.

Ein Eingang ist nicht nutzlos, weil er keinen PU hat; man braucht ihn 
nur in bestimmten Fällen.

von Thomas (kosmos)


Lesenswert?

schau mal hier https://microchipdeveloper.com/8avr:ioports man kann die 
Seite ja mit Google übersetzen.

Falls jemand das als Lesezeichen setzen will
https://microchipdeveloper.com/8avr:start

: Bearbeitet durch User
von Wolfgang W. (Gast)


Lesenswert?

Hallo,

bei den AVRs wie z. B. den ATMEGA328P werden die Pullups in Abhängigkeit 
von den korrespondierenden Bits der Register DDxn und PORTxn und PUD im 
MCUCR aktiviert: PUD im MCUCR muss 0 sein, DDXn = 0 (Direction Input) 
und Portxn = 1 : dann ist der betreffende Pullup enabled, sonst nicht. 
Deswegen dürften hier durch das Überschreiben alle anderen Pullups des 
PORTD disabled sein.

MfG Wuff_W

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.