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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.